protected function setupSocialimageRoutes($segment, $routeName, $controller)
{
foreach (['services', 's'] as $segment) {
- Route::match(['get'], $segment . '/socialimage/{cid?}/{time?}', $controller . '@socialImage')->withoutMiddleware([CheckIfAdmin::class]);
+ Route::match(['get'], $segment . '/socialimage/{cid?}/{time?}', $controller . '@socialImage')->withoutMiddleware([CheckIfAdmin::class])->name('social_image');
Route::match(['get'], $segment . '/socialimage', $controller . '@ws2SocialImage')->withoutMiddleware([CheckIfAdmin::class]);
Route::match(['get'], $segment . '/facebook_thumbnail', $controller . '@ws2SocialImage')->withoutMiddleware([CheckIfAdmin::class]);
}
--- /dev/null
+<?php
+
+namespace App\Jobs;
+
+use App\Models\FluidbookTheme;
+use Cubist\Util\CommandLine;
+
+class GenerateSecondPagePreview extends Base
+{
+ public $width;
+
+ public function __construct($width = 1920)
+ {
+ $this->width = $width;
+ }
+
+ /**
+ * Execute the job.
+ */
+ public function handle(): void
+ {
+ $cl = new CommandLine('node');
+ $cl->setArg(null, resource_path('fluidbooktheme/theme_preview/secondpage_preview.js'));
+ $cl->setArg('width', $this->width);
+ $cl->setArg('height', 1080);
+ $cl->setArg('delay', 2);
+ $cl->setArg('scale', 1);
+ $cl->setArg('dest', self::getPreviewPath($this->theme->getIdValue()));
+ $cl->setArg('page', 2);
+ $url = $this->theme->getPreviewURL(['shortLoading' => 1, 'transition' => 1, 'puppeteer' => 1]);
+ $cl->setArg('url', $url);
+ $cl->execute();
+ }
+}
use App\Fields\FluidbookFont;
use App\Fields\FluidbookThemeImage;
use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
+use App\Jobs\GenerateSecondPagePreview;
use App\Jobs\GenerateThemePreview;
use App\Jobs\UpdateWS2ThemeTable;
use App\Models\Base\ToolboxSettingsModel;
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="33.373" height="29.362" viewBox="0 0 33.373 29.362">
+ <path id="Tracé_102" data-name="Tracé 102" d="M426.054,2.607h-3.84V1.4A1.108,1.108,0,0,0,421.085.273h-5.5A1.108,1.108,0,0,0,414.46,1.4V2.607a5.274,5.274,0,0,0-4.141,2.033,5.247,5.247,0,0,0-4.442-2.033H394.584a1.029,1.029,0,0,0-1.054,1.054V26.247a1.028,1.028,0,0,0,1.054,1.054H405.2a4,4,0,0,1,3.614,1.657,1.344,1.344,0,0,0,.9.677.756.756,0,0,1,.9,0,.914.914,0,0,0,.9-.677,4.132,4.132,0,0,1,3.539-1.657h10.691a1.029,1.029,0,0,0,1.054-1.054V3.661c.3-.6-.151-1.054-.753-1.054m-9.411-.151h3.388v8.658l-.9-.9a.973.973,0,0,0-.829-.377.928.928,0,0,0-.753.377l-.9.9ZM405.2,25.118h-9.561V4.79h10.239a3.091,3.091,0,0,1,3.388,3.388V26.247a7.809,7.809,0,0,0-4.066-1.129m19.8,0h-9.562a6.709,6.709,0,0,0-4.065,1.28V8.178A3.013,3.013,0,0,1,414.46,4.79v8.959a1.018,1.018,0,0,0,.6.9,1.26,1.26,0,0,0,1.28-.3l1.957-2.033,2.033,2.033a1.155,1.155,0,0,0,.753.3.81.81,0,0,0,.527-.151.935.935,0,0,0,.6-.9V4.79H425Z" transform="translate(-393.53 -0.273)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="28.655" height="29.363" viewBox="0 0 28.655 29.363">
+ <path id="Tracé_103" data-name="Tracé 103" d="M500.183,21.73a1.03,1.03,0,0,0-1.054,1.054v2.334a2.174,2.174,0,0,1-2.334,2.334H476.919a2.175,2.175,0,0,1-2.334-2.334V22.784a1.054,1.054,0,1,0-2.108,0v2.334a4.376,4.376,0,0,0,4.442,4.518h19.726a4.374,4.374,0,0,0,4.442-4.518V22.784c.226-.6-.452-1.054-.9-1.054m-14.154,1.732c.151.151.151.151.3.151s.3.15.452.15a.556.556,0,0,0,.452-.15c.15,0,.15-.151.3-.151l8.357-8.959a1.118,1.118,0,0,0-1.581-1.581l-6.475,6.926V1.4a1.057,1.057,0,1,0-2.108,0V19.848l-6.475-6.926a1.118,1.118,0,0,0-1.581,1.581Z" transform="translate(-472.477 -0.273)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="28.71" height="29.061" viewBox="0 0 28.71 29.061">
+ <path id="Tracé_106" data-name="Tracé 106" d="M578.265,1.251a1.179,1.179,0,0,0-.6-.6c-.151,0-.3-.226-.452-.226H566.595a1.158,1.158,0,0,0-1.129,1.129,1.094,1.094,0,0,0,1.129,1.055h7.981l-8.734,8.808a.915.915,0,0,0,0,1.506,1.092,1.092,0,0,0,1.506,0l8.809-8.733v7.98a1.054,1.054,0,0,0,2.108,0V1.552c.226,0,0-.15,0-.3M562.078,16.836a.915.915,0,0,0-1.506,0l-8.809,8.733v-7.98a1.056,1.056,0,1,0-2.108,0V28.2a.551.551,0,0,0,.151.451,1.18,1.18,0,0,0,.6.6c.151,0,.3.225.452.225h10.616a1.158,1.158,0,0,0,1.129-1.129,1.094,1.094,0,0,0-1.129-1.054h-8.282l8.733-8.809a1.2,1.2,0,0,0,.151-1.656" transform="translate(-549.655 -0.423)" fill="#467fcf" />
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="29.664" height="29.664" viewBox="0 0 29.664 29.664">
+ <path id="Tracé_105" data-name="Tracé 105" d="M719.332.122a14.832,14.832,0,1,0,14.832,14.832A14.813,14.813,0,0,0,719.332.122m0,27.631a12.8,12.8,0,1,1,12.8-12.8,12.788,12.788,0,0,1-12.8,12.8m1.205-6.324a1.2,1.2,0,1,1-1.205-1.2,1.189,1.189,0,0,1,1.205,1.2M719.332,6.3a4.628,4.628,0,0,0-4.593,4.668.868.868,0,0,0,.9.9.97.97,0,0,0,.9-.9,2.635,2.635,0,1,1,5.27,0,2.774,2.774,0,0,1-2.635,2.635.868.868,0,0,0-.9.9v3.087a.868.868,0,0,0,.9.9.972.972,0,0,0,.9-.9V15.406a4.591,4.591,0,0,0,3.538-4.442A4.214,4.214,0,0,0,719.332,6.3" transform="translate(-704.5 -0.122)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="38" height="28.61" viewBox="0 0 38 28.61">
+ <path id="Tracé_41" data-name="Tracé 41" d="M25.97.649H17.144A1.046,1.046,0,0,0,16.021,1.7V12.771A1.064,1.064,0,0,0,17.144,13.9H25.97a1.064,1.064,0,0,0,1.122-1.129V1.7A1.046,1.046,0,0,0,25.97.649M24.923,11.717H18.191V2.758h6.732Zm1.047,4.291H17.144a1.064,1.064,0,0,0-1.123,1.129V28.2a1.046,1.046,0,0,0,1.123,1.054H25.97A1.046,1.046,0,0,0,27.092,28.2V17.137a1.064,1.064,0,0,0-1.122-1.129M24.923,27.151H18.191V18.192h6.732ZM39.51.649h-8.9A1.09,1.09,0,0,0,29.486,1.7V12.771A1.105,1.105,0,0,0,30.608,13.9h8.9a1.047,1.047,0,0,0,1.047-1.129V1.7A1.026,1.026,0,0,0,39.51.649M38.388,11.717H31.656V2.758h6.732ZM12.506.649H3.6A1.026,1.026,0,0,0,2.557,1.7V12.771A1.046,1.046,0,0,0,3.6,13.9h8.9a1.105,1.105,0,0,0,1.122-1.129V1.7A1.09,1.09,0,0,0,12.506.649M11.458,11.717H4.726V2.758h6.732Zm1.047,4.291H3.6a1.046,1.046,0,0,0-1.047,1.129V28.2A1.026,1.026,0,0,0,3.6,29.259h8.9A1.09,1.09,0,0,0,13.627,28.2V17.137a1.105,1.105,0,0,0-1.122-1.129M11.458,27.151H4.726V18.192h6.732Z" transform="translate(-2.557 -0.649)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="30.868" height="21.533" viewBox="0 0 30.868 21.533">
+ <path id="Tracé_53" data-name="Tracé 53" d="M89.471,7.275h20.1a1.576,1.576,0,0,0,1.505-1.581,1.51,1.51,0,0,0-1.505-1.506h-20.1a1.51,1.51,0,0,0-1.506,1.506,1.576,1.576,0,0,0,1.506,1.581m20.1,6.174h-20.1a1.505,1.505,0,1,0,0,3.011h20.1a1.505,1.505,0,0,0,0-3.011m0,9.185h-20.1a1.576,1.576,0,0,0-1.506,1.581,1.51,1.51,0,0,0,1.506,1.506h20.1a1.51,1.51,0,0,0,1.505-1.506,1.576,1.576,0,0,0-1.505-1.581M81.791,7.275H83.3a1.591,1.591,0,0,0,1.581-1.581A1.529,1.529,0,0,0,83.3,4.188H81.791A1.577,1.577,0,0,0,80.21,5.694a1.643,1.643,0,0,0,1.581,1.581M83.3,13.449H81.791a1.507,1.507,0,1,0,0,3.011H83.3a1.507,1.507,0,1,0,0-3.011m0,9.185H81.791a1.643,1.643,0,0,0-1.581,1.581,1.577,1.577,0,0,0,1.581,1.506H83.3a1.529,1.529,0,0,0,1.581-1.506A1.591,1.591,0,0,0,83.3,22.634" transform="translate(-80.21 -4.188)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="29.699" height="30.302" viewBox="0 0 29.699 30.302">
+ <g id="Groupe_207" data-name="Groupe 207">
+ <path id="Tracé_51" data-name="Tracé 51" d="M23.889,31.305H1.13A1.1,1.1,0,0,1,0,30.176V6.449a1.1,1.1,0,0,1,1.13-1.13H14.2a1.13,1.13,0,1,1,0,2.259H2.26V29.046h20.5V16.779a1.13,1.13,0,0,1,2.259,0v13.4a1.371,1.371,0,0,1-1.13,1.13" transform="translate(0 -1.003)" fill="#467fcf"/>
+ <path id="Tracé_52" data-name="Tracé 52" d="M12.07,20.782a1.233,1.233,0,0,1-.807-.323,1.362,1.362,0,0,1-.323-1.13L12.393,14c0-.161.161-.323.323-.484L25.144,1.09a4,4,0,0,1,5.488,0,3.538,3.538,0,0,1,1.13,2.744,3.539,3.539,0,0,1-1.13,2.744L18.2,19.006c-.161.161-.323.161-.484.323l-5.326,1.453H12.07m2.583-5.813-.807,3.067,3.067-.807L29.179,4.962a1.466,1.466,0,0,0,.484-1.13,1.465,1.465,0,0,0-.484-1.13,1.56,1.56,0,0,0-2.26,0Z" transform="translate(-2.063 0)" fill="#467fcf"/>
+ <rect id="Rectangle_439" data-name="Rectangle 439" width="2.26" height="5.165" transform="translate(21.66 4.296) rotate(-45)" fill="#467fcf"/>
+ </g>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="31.47" height="29.814" viewBox="0 0 31.47 29.814">
+ <path id="Tracé_100" data-name="Tracé 100" d="M266.879,9.759h-2.936V1.176A1.05,1.05,0,0,0,262.889.047H245.573a1.05,1.05,0,0,0-1.054,1.129V9.759h-2.936a3.151,3.151,0,0,0-3.087,3.087v9.11a3.1,3.1,0,0,0,3.087,3.087h2.936v3.689a1.094,1.094,0,0,0,1.054,1.129h17.316a1.094,1.094,0,0,0,1.054-1.129V25.043h2.936a3.1,3.1,0,0,0,3.087-3.087v-9.11a3.151,3.151,0,0,0-3.087-3.087M246.7,2.231H261.76V9.76H246.7Zm15.058,25.6H246.7V21.2H261.76Zm6.023-5.722a.972.972,0,0,1-.9.9h-2.936V20.149a1.05,1.05,0,0,0-1.054-1.129H245.573a1.05,1.05,0,0,0-1.054,1.129V23.01h-2.936a.972.972,0,0,1-.9-.9V13a.972.972,0,0,1,.9-.9h25.3a.972.972,0,0,1,.9.9Zm-20.93-7.228h-2.485a1.03,1.03,0,0,0-1.054,1.054,1.094,1.094,0,0,0,1.054,1.129H247a1.093,1.093,0,0,0,1.054-1.129,1.164,1.164,0,0,0-1.2-1.054m2.409,10.465H259.2a1.054,1.054,0,0,0,0-2.108h-9.938a1.054,1.054,0,1,0,0,2.108" transform="translate(-238.496 -0.047)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="29.72" height="29.908" viewBox="0 0 29.72 29.908">
+ <path id="Tracé_99" data-name="Tracé 99" d="M191.348,28.026l-9.712-9.712a11.045,11.045,0,0,0,2.56-7.077,11.354,11.354,0,0,0-3.238-7.905,11.133,11.133,0,0,0-15.885,0,11.408,11.408,0,0,0,0,15.885,11.172,11.172,0,0,0,14.982.678l9.712,9.712a1.15,1.15,0,0,0,.753.3,1.366,1.366,0,0,0,.828-.3,1.483,1.483,0,0,0,0-1.581M166.5,17.561a9.042,9.042,0,0,1,0-12.8,8.762,8.762,0,0,1,6.324-2.635,8.888,8.888,0,0,1,6.324,2.635,9.076,9.076,0,0,1,2.636,6.324,8.94,8.94,0,0,1-2.636,6.324,9.213,9.213,0,0,1-6.324,2.636,8.562,8.562,0,0,1-6.324-2.485" transform="translate(-161.854 0)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="28.519" height="28.967" viewBox="0 0 28.519 28.967">
+ <path id="Tracé_101" data-name="Tracé 101" d="M341.229,19.882a4.985,4.985,0,0,0-3.733,1.792l-10.6-5.525a3.291,3.291,0,0,0,.149-1.194,2.919,2.919,0,0,0-.149-1.195l10.6-5.524a4.984,4.984,0,0,0,3.733,1.791,4.81,4.81,0,0,0,4.778-4.778A4.811,4.811,0,0,0,341.229.471a4.717,4.717,0,0,0-4.778,4.778,2.919,2.919,0,0,0,.149,1.195L326,11.968a4.984,4.984,0,0,0-3.733-1.791,4.811,4.811,0,0,0-4.778,4.778,4.718,4.718,0,0,0,4.778,4.778A4.985,4.985,0,0,0,326,17.941l10.6,5.525a3.288,3.288,0,0,0-.149,1.194,4.778,4.778,0,1,0,9.556,0,4.716,4.716,0,0,0-4.778-4.778m0-17.171A2.358,2.358,0,0,1,343.618,5.1a2.389,2.389,0,0,1-4.778,0,2.358,2.358,0,0,1,2.389-2.389M322.266,17.194a2.389,2.389,0,1,1,2.389-2.389,2.358,2.358,0,0,1-2.389,2.389m18.963,9.855a2.389,2.389,0,1,1,2.389-2.389,2.358,2.358,0,0,1-2.389,2.389" transform="translate(-317.488 -0.471)" fill="#467fcf"/>
+</svg>
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="31.772" height="27.052" viewBox="0 0 31.772 27.052">
+ <path id="Tracé_104" data-name="Tracé 104" d="M651.828,2.882a1.157,1.157,0,0,0-1.505.151,1.26,1.26,0,0,0,.15,1.581c3.087,2.635,5.2,6.625,5.2,10.314a13.829,13.829,0,0,1-5.2,10.315,1.241,1.241,0,0,0-.15,1.581.826.826,0,0,0,.753.451.781.781,0,0,0,.6-.3A16.2,16.2,0,0,0,657.7,14.928a16.827,16.827,0,0,0-5.873-12.046M647.989,7.55a1.126,1.126,0,0,0-1.581.3,1,1,0,0,0,.376,1.506,7.135,7.135,0,0,1,3.237,5.722c0,2.635-1.882,4.442-3.237,5.722a1.112,1.112,0,0,0-.376,1.5,1.213,1.213,0,0,0,.978.452.905.905,0,0,0,.6-.151,9.313,9.313,0,0,0,4.141-7.378,9.047,9.047,0,0,0-4.141-7.679m-7.228-6.023a1.048,1.048,0,0,0-1.129.15l-7.68,6.174h-4.969A1.03,1.03,0,0,0,625.929,8.9V20.951A1.03,1.03,0,0,0,626.983,22h4.969l7.68,6.174a1.121,1.121,0,0,0,.677.3.553.553,0,0,0,.452-.151,1.236,1.236,0,0,0,.6-.9v-25a1.236,1.236,0,0,0-.6-.9M639.18,25.092l-6.174-5.044a1.324,1.324,0,0,0-.6-.377h-4.291V9.959H632.4a.782.782,0,0,0,.6-.3l6.174-5.044Z" transform="translate(-625.929 -1.428)" fill="#467fcf"/>
+</svg>
.icon-m img {
margin-right: 8px;
}
+.d-grid {
+ display: grid;
+}
+.d-grid.feature-grid {
+ grid-template-columns: 80px repeat(auto-fill, 80px);
+}
+.gap-8 {
+ gap: 8px;
+}
+.fw-semibold {
+ font-weight: 600;
+}
.delivery-anchor {
margin-bottom: 55px;
}
margin-bottom: 30px;
text-align: center;
}
+.delivery-feature {
+ background-color: rgba(70, 127, 207, 0.1);
+ width: 80px;
+ height: 72px;
+ border-radius: 4px;
+}
+.delivery-feature.disabled-feature {
+ background-color: #F0F3F9;
+}
+.delivery-feature.disabled-feature svg {
+ fill: rgba(27, 42, 78, 0.2);
+}
+.delivery-feature.disabled-feature .title {
+ color: rgba(27, 42, 78, 0.2);
+}
+.delivery-feature svg {
+ width: 100%;
+ height: 51%;
+ fill: #467FCF;
+ position: relative;
+ top: 8px;
+}
+.delivery-feature .title {
+ margin: auto 0 6px;
+ font-size: 12px;
+ color: #467FCF;
+}
+.delivery-social-image {
+ height: 195px;
+ overflow: hidden;
+ position: relative;
+}
+.delivery-social-image img {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ object-fit: contain;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+}
+.delivery-preview-mini iframe {
+ width: 100%;
+ border: 0;
+}
.featherlight-close {
top: 30px;
right: 30px;
-{"version":3,"sources":["delivery.less"],"names":[],"mappings":"AAAA;AAAK;EACD,uBAAA;;AAGJ;EACI,qBAAA;;AAGJ,OAAQ;EACJ,iBAAA;;AAIA,SAAC;EACG,mBAAA;;AADJ,SAAC,OAEG,GAAE,IAAI;EACF,cAAc,kBAAd;;AAHR,SAAC,OAKG,GAAE;EACE,YAAA;EACA,oBAAA;;AAPR,SAAC,OASG;EACI,OAAO,WAAP;;AAGR,SAAC;EACG,mBAAA;;AADJ,SAAC,SAEG;EACI,yCAAA;EACA,aAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,sBAAA;;AARR,SAAC,SAUG;EACI,eAAA;;AAXR,SAAC,SAaG;EACI,kBAAA;;AAGR,SAAC;EACG,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,gBAAA;EACA,SAAA;EACA,wBAAA;EACA,aAAA;;AACA,SARH,aAQI;EACG,cAAA;;AATR,SAAC,aAWG;EACI,aAAA;EACA,kBAAkB,WAAlB;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;;AAKZ;EACI,SAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,kBAAA;;AAGJ;EACI,aAAa,eAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,YAAY,eAAe,6BAA3B;EACA,WAAW,YAAe,uBAA1B;EACA,WAAW,cAAe,2BAA1B;EACA,WAAW,YAAe,uBAA1B;EACA,YAAY,YAAe,uBAA3B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,eAAe,6BAA5B;;EAGA,iBAAiB,eAAe,8BAAhC;EACA,gBAAgB,cAAe,gCAA/B;EACA,cAAc,eAAe,4BAA7B;EACA,aAAa,YAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,cAAc,YAAe,yBAA7B;EACA,gBAAgB,YAAe,yBAA/B;EACA,iBAAiB,YAAe,yBAAhC;;EAGA,eAAe,YAAe,gCAA9B","file":"delivery.css"}
\ No newline at end of file
+{"version":3,"sources":["delivery.less"],"names":[],"mappings":"AAAA;AAAK;EACD,uBAAA;;AAGJ;EACI,qBAAA;;AAGJ,OAAQ;EACJ,iBAAA;;AAGJ;EACI,aAAA;;AACA,OAAC;EACG,4BAA4B,uBAA5B;;AAIR;EACI,QAAA;;AAGJ;EACI,gBAAA;;AAIA,SAAC;EACG,mBAAA;;AADJ,SAAC,OAEG,GAAE,IAAI;EACF,cAAc,kBAAd;;AAHR,SAAC,OAKG,GAAE;EACE,YAAA;EACA,oBAAA;;AAPR,SAAC,OASG;EACI,OAAO,WAAP;;AAGR,SAAC;EACG,mBAAA;;AADJ,SAAC,SAEG;EACI,yCAAA;EACA,aAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,sBAAA;;AARR,SAAC,SAUG;EACI,eAAA;;AAXR,SAAC,SAaG;EACI,kBAAA;;AAGR,SAAC;EACG,gBAAA;EACA,WAAA;EACA,iBAAA;EACA,gBAAA;EACA,SAAA;EACA,wBAAA;EACA,aAAA;;AACA,SARH,aAQI;EACG,cAAA;;AATR,SAAC,aAWG;EACI,aAAA;EACA,kBAAkB,WAAlB;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;;AAGR,SAAC;EACG,yCAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;;AACA,SALH,QAKI;EACG,yBAAA;;AADJ,SALH,QAKI,iBAEG;EACI,2BAAA;;AAHR,SALH,QAKI,iBAKG;EACI,4BAAA;;AAXZ,SAAC,QAcG;EACI,WAAA;EACA,WAAA;EACA,aAAA;EACA,kBAAA;EACA,QAAA;;AAnBR,SAAC,QAqBG;EACI,kBAAA;EACA,eAAA;EACA,cAAA;;AAIR,SAAC;EACG,aAAA;EACA,gBAAA;EACA,kBAAA;;AAHJ,SAAC,aAIG;EACI,WAAA;EACA,YAAA;EACA,kBAAA;EACA,mBAAA;EACA,SAAA;EACA,QAAA;EACA,WAAW,qBAAX;;AAIR,SAAC,aACG;EACI,WAAA;EACA,SAAA;;AAKZ;EACI,SAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,qBAAA;EACA,kBAAA;;AAGJ;EACI,aAAa,eAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,YAAY,eAAe,6BAA3B;EACA,WAAW,YAAe,uBAA1B;EACA,WAAW,cAAe,2BAA1B;EACA,WAAW,YAAe,uBAA1B;EACA,YAAY,YAAe,uBAA3B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,YAAe,uBAA5B;EACA,aAAa,eAAe,6BAA5B;;EAGA,iBAAiB,eAAe,8BAAhC;EACA,gBAAgB,cAAe,gCAA/B;EACA,cAAc,eAAe,4BAA7B;EACA,aAAa,YAAe,6BAA5B;EACA,aAAa,cAAe,2BAA5B;EACA,cAAc,YAAe,yBAA7B;EACA,gBAAgB,YAAe,yBAA/B;EACA,iBAAiB,YAAe,yBAAhC;;EAGA,eAAe,YAAe,gCAA9B","file":"delivery.css"}
\ No newline at end of file
margin-right: 8px;
}
+.d-grid {
+ display: grid;
+ &.feature-grid {
+ grid-template-columns: 80px repeat(auto-fill, 80px);
+ }
+}
+
+.gap-8 {
+ gap: 8px;
+}
+
+.fw-semibold {
+ font-weight: 600;
+}
+
.delivery {
&-anchor {
margin-bottom: 55px;
text-align: center;
}
}
+ &-feature {
+ background-color: rgba(70,127,207,.1);
+ width: 80px;
+ height: 72px;
+ border-radius: 4px;
+ &.disabled-feature {
+ background-color: #F0F3F9;
+ svg {
+ fill: rgba(27, 42, 78, .2);
+ }
+ .title {
+ color: rgba(27, 42, 78, .2);
+ }
+ }
+ svg {
+ width: 100%;
+ height: 51%;
+ fill: #467FCF;
+ position: relative;
+ top: 8px;
+ }
+ .title {
+ margin: auto 0 6px;
+ font-size: 12px;
+ color: #467FCF;
+ }
+ }
+
+ &-social-image {
+ height: 195px;
+ overflow: hidden;
+ position: relative;
+ img {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ object-fit: contain;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%,-50%);
+ }
+ }
+
+ &-preview-mini {
+ iframe {
+ width: 100%;
+ border: 0;
+ }
+ }
}
.featherlight-close {
--- /dev/null
+const puppeteer = require('puppeteer');
+const commandLineArgs = require('command-line-args');
+const optionDefinitions = [
+ {name: 'url', type: String},
+ {name: 'dest', type: String},
+ {name: 'delay', type: Number, defaultOption: 10},
+ {name: 'scale', type: Number, defaultOption: 1},
+ {name: 'width', type: Number, defaultOption: 1920},
+ {name: 'height', type: Number, defaultOption: 1080},
+ {name: 'page', type: Number, defaultOption: 2}
+];
+
+(async () => {
+ const options = commandLineArgs(optionDefinitions);
+ const browser = await puppeteer.launch({
+ headless: true,
+ args: [
+ "--disable-setuid-sandbox",
+ "--no-sandbox",
+ ],
+ executablePath: 'google-chrome-stable',
+ });
+
+ const page = await browser.newPage();
+ page.on('console', async (msg) => {
+ const msgArgs = msg.args();
+ for (let i = 0; i < msgArgs.length; ++i) {
+ console.log(await msgArgs[i].jsonValue());
+ }
+ });
+ await page.setViewport({
+ width: options.width / options.scale, height: options.height / options.scale, deviceScaleFactor: options.scale,
+ });
+
+ await page.goto(options.url, {waitUntil: 'networkidle2'});
+ await page.screenshot({path: options.dest, type: 'jpeg', quality: 95});
+ await new Promise(r => setTimeout(r, 1000 * (options.delay + 3)));
+ await page.evaluate(() => console.log(document.body.innerHTML));
+ // Move to page 2
+ await page.evaluate(() => window.fluidbook.setCurrentPage(2));
+ // Wait 1s and take a screenshot
+ await new Promise(r => setTimeout(r, 2000));
+
+ await browser.close();
+})();
$qrCodeMobile = QrCode::size(311)->color(27, 42, 78)->generate($fluidbook->getPreviewURL());
$fluidbookMobileFirstId = $fluidbook->mobilefirstFluidbookId;
- $previewMobileFirstUrl = App\Models\FluidbookPublication::find($fluidbookMobileFirstId)->getPreviewURL();
- $qrCodeMobileFirst = QrCode::size(311)->color(27, 42, 78)->generate($previewMobileFirstUrl);
+ if($fluidbookMobileFirstId){
+ $previewMobileFirstUrl = App\Models\FluidbookPublication::find($fluidbookMobileFirstId)->getPreviewURL();
+ $qrCodeMobileFirst = QrCode::size(311)->color(27, 42, 78)->generate($previewMobileFirstUrl);
+ }
$totalPages = $fluidbook->getPagesNumber();
$settings = [
];
$features = [
- 'index' => $fluidbook->index,
- 'print' => $fluidbook->print,
- 'chapters' => $fluidbook->chapters,
- 'share' => $fluidbook->share,
- 'bookmarks' => $fluidbook->bookmarks,
- 'download' => $fluidbook->pdf,
- 'sound' => $fluidbook->soundTheme,
- 'search' => $fluidbook->search,
- 'help' => $fluidbook->help,
- 'notes' => $fluidbook->notes,
- 'fullscreen' => $fluidbook->fullscreen,
+ 'index' => ["value" => $fluidbook->index,"text" => __('Index'),"svg" => "nav-index"],
+ 'print' => ["value" => $fluidbook->print,"text" => __('Imprimer'),"svg" => "nav-print"],
+ 'chapters' => ["value" => $fluidbook->chapters,"text" => __('Sommaire'),"svg" => "nav-chapters"],
+ 'share' => ["value" => $fluidbook->share,"text" => __('Partager'),"svg" => "nav-share"],
+ 'bookmark' => ["value" => $fluidbook->bookmarks,"text" => __('Marques-pages'),"svg" => "nav-bookmarks"],
+ 'pdf' => ["value" => $fluidbook->pdf,"text" => __('Télécharger'),"svg" => "nav-download"],
+ 'sound' => ["value" => $fluidbook->soundTheme,"text" => __('Son'),"svg" => "nav-sound-on"],
+ 'search' => ["value" => $fluidbook->search,"text" => __('Son'),"svg" => "nav-search"],
+ 'help' => ["value" => $fluidbook->help,"text" => __('Aide'),"svg" => "nav-help"],
+ 'notes' => ["value" => $fluidbook->notes,"text" => __('Notes'),"svg" => "nav-notes"],
+ 'fullscreen' => ["value" => $fluidbook->fullscreen,"text" => __('Plein écran'),"svg" => "nav-fullscreen"],
];
+
+ $orders = explode(',',$fluidbook->navOrder);
+ $orders = array_map(function($n) { return trim($n); }, $orders);
+ $orders = array_flip($orders);
+ $orders = array_intersect_key($orders,$features);
+
+ $featuresSorted = array_merge($orders, $features);
+
+ $enabledFeatures = array_filter($featuresSorted, function($n){ return $n['value'] !== "0" && !empty($n['value']); });
+ $disabledFeatures = array_filter($featuresSorted, function($n){ return $n['value'] !== "1" && empty($n['value']); });
+
+ $icons = App\Models\FluidbookIconset::get('icons')->toArray();
+
+ $statUrl = str_replace('preview','stats',$fluidbook->getPreviewUrl());
+ $cid = $fluidbook->cid;
+
+ $socialImage = route('social_image',['cid' => $cid]);
+ if($fluidbook->facebook_image)
+ $socialImage = $fluidbook->facebook_image;
@endphp
@section('after_styles')
@endsection
@section('content')
+ <div id="svg-container">
+ {!! $icons[0]["icons"] !!}
+ </div>
<div class="row">
<div class="col-md-9 bold-labels">
<div class="w-100">
<ul class="d-flex flex-md-row flex-sm-column list-none p-0 icon-m">
<li><a href="#s_glimpses" class="text-decoration-none"><img src="{{ url('images/icons/icon-eye.svg') }}" />Aperçu de votre Fluidbook</a></li>
<li><a href="#s_settings" class="text-decoration-none"><img src="{{ url('images/icons/icon-settings.svg') }}" />Paramètres du Fluidbook</a></li>
- <li class="{{ !$fluidbook->statusText ? 'disabled' : '' }}"><a href="#s_social" class="text-decoration-none"><img src="{{ url('images/icons/icon-like.svg') }}" />Faites connaitre votre Fluidbook</a></li>
- <li class="{{ !$fluidbook->statusText ? 'disabled' : '' }}"><a href="#s_stats" class="text-decoration-none"><img src="{{ url('images/icons/icon-stats.svg') }}" />Mesurez votre audience</a></li>
+ <li class="{{ !$fluidbook->status ? 'disabled' : '' }}"><a href="#s_social" class="text-decoration-none"><img src="{{ url('images/icons/icon-like.svg') }}" />Faites connaitre votre Fluidbook</a></li>
+ <li class="{{ !$fluidbook->status ? 'disabled' : '' }}"><a href="#s_stats" class="text-decoration-none"><img src="{{ url('images/icons/icon-stats.svg') }}" />Mesurez votre audience</a></li>
</ul>
</div>
</section>
<div class="preview col-md-6">
<p>Version Desktop</p>
<div class="block">
- <a href="{{ $fluidbook->getPreviewURL() }}" target="_blank" class="btn bg-primary">Voir</a>
+ <a href="{{ $fluidbook->getPreviewURL() }}" target="_blank" class="btn btn-primary">Voir</a>
</div>
</div>
<div class="preview col-md-3">
<p>Version Mobile</p>
<div class="block">
- <a href="#" data-featherlight="#scanBoxMobile" class="btn bg-primary">Voir</a>
+ <a href="#" data-featherlight="#scanBoxMobile" class="btn btn-primary">Voir</a>
</div>
@include('fluidbook_publication.qrcode_popup', ['id' => 'scanBoxMobile', 'text' => 'Mobile', 'qrcode' => $qrCodeMobile])
</div>
- <div class="preview col-md-3">
- <p>Version Mobile-first</p>
- <div class="block">
- <a href="#" data-featherlight="#scanBoxMobileFirst" class="btn bg-primary">Voir</a>
+ @if($fluidbookMobileFirstId)
+ <div class="preview col-md-3">
+ <p>Version Mobile-first</p>
+ <div class="block">
+ <a href="#" data-featherlight="#scanBoxMobileFirst" class="btn btn-primary">Voir</a>
+ </div>
+ @include('fluidbook_publication.qrcode_popup', ['id' => 'scanBoxMobileFirst', 'text' => 'Mobile-first', 'qrcode' => $qrCodeMobileFirst])
</div>
- @include('fluidbook_publication.qrcode_popup', ['id' => 'scanBoxMobileFirst', 'text' => 'Mobile-first', 'qrcode' => $qrCodeMobileFirst])
- </div>
+ @endif
</div>
<div class="indication align-items-center flex-row d-flex icon-m">
<img src="{{ url('images/icons/icon-indication.svg') }}" />
</div>
@endif
</div>
+ @if($enabledFeatures || $disabledFeatures)
<div class="row mb-3">
- <div class="col-md-6">
- <p>Principales fonctionnalités activées</p>
- </div>
- <div class="col-md-6">
- <p>Principales fonctionnalités désactivées</p>
- </div>
+ @if($enabledFeatures)
+ <div class="col-md-6">
+ <p>Principales fonctionnalités activées</p>
+ <div class="d-grid gap-8 feature-grid">
+ @foreach($enabledFeatures as $enabledFeature)
+ <div class="delivery-feature d-flex align-center text-center flex-column">
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <use href="#{{ $enabledFeature['svg'] }}" />
+ </svg>
+ <p class="title">{{ $enabledFeature['text'] }}</p>
+ </div>
+ @endforeach
+ </div>
+ </div>
+ @endif
+ @if($disabledFeatures)
+ <div class="col-md-6">
+ <p>Principales fonctionnalités désactivées</p>
+ <div class="d-grid gap-8 feature-grid">
+ @foreach($disabledFeatures as $disabledFeature)
+ <div class="delivery-feature disabled-feature d-flex align-center text-center flex-column">
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <use href="#{{ $disabledFeature['svg'] }}" />
+ </svg>
+ <p class="title">{{ $disabledFeature['text'] }}</p>
+ </div>
+ @endforeach
+ </div>
+ </div>
+ @endif
</div>
+ @endif
<div class="">
<p class="m-0">Vous souhaitez modifier un paramètre ou une fonctionnalité ?
<a href="mailto:">Contactez votre chef de projet</a>
</div>
</div>
</div>
- @if($fluidbook->statusText)
+ @if($fluidbook->status)
<div id="s_social" class="card">
<div class="card-body">
<div class="">
</div>
<div class="row">
<div class="col-sm-12">
- <p>Images pour réseaux sociaux</p>
- </div>
- <div class="col-md-4">
- <p>Facebook</p>
+ <p class="fw-semibold">Image pour réseaux sociaux</p>
</div>
- <div class="col-md-4">
- <p>Twitter</p>
+ <div class="col-md-4 delivery-social-image">
+ <img src="{{ $socialImage }}" />
</div>
- <div class="col-md-4">
- <p>Linkedin</p>
+ <div class="col-sm-12">
+ <p class="fw-semibold">Tester le rendu en cliquant sur ce <a href="https://www.opengraph.xyz/url/{{ $fluidbook->getPreviewURL() }}" target="_blank" rel="noopener">lien</a></p>
+ <ul class="list-none p-0">
+ <li class="pb-2 fw-semibold">Si vous votre image n'apparait pas, essayer de vider le cache en utilisant les outils suivants :</li>
+ <li>Linkedin : <a href="https://www.linkedin.com/post-inspector">https://www.linkedin.com/post-inspector</a></li>
+ <li>Facebook : <a href="https://developers.facebook.com/tools/debug/sharing/batch">https://developers.facebook.com/tools/debug/sharing/batch</a></li>
+ <li>Twitter : <a href="https://cards-dev.twitter.com/validator">https://cards-dev.twitter.com/validator</a></li>
+ </ul>
</div>
</div>
- <div class="row">
+ <!--<div class="row">
<div class="col-sm-12">
<p>Images de promotion (sites web, emails, newsletters etc.)</p>
</div>
</div>
<div class="col-md-4">
</div>
- </div>
- <div class="row">
+ </div>-->
+ <div class="row delivery-preview-mini">
<div class="col-sm-12">
- <p>Mini Fluidbook animé</p>
- </div>
- <div class="col-md-4">
- </div>
- <div class="col-md-4">
+ <p class="fw-semibold">Mini Fluidbook animé</p>
</div>
<div class="col-md-4">
+ <iframe src="{{ $fluidbook->getPreviewURL() }}"></iframe>
</div>
</div>
</div>
<p>Avec notre module de statistiques intégré, vous savez combien de personnes ont vu
votre Fluidbook, quelles pages les ont le plus intéressé, quels mots-clés ils ont
cherché, etc...</p>
- <a href="" class="btn bg-primary">Voir les statistiques</a>
+ <a href="{{ $statUrl }}" class="btn btn-primary">Voir les statistiques</a>
</div>
</div>
</div>
<div class="card-body">
<h2>Une question sur votre Fluidbook ?</h2>
<p>Vous avez remarqué une erreur ou vous souhaitez changer un paramètre ?</p>
- <a href="" class="btn bg-primary">Contacter votre chef de projet</a>
+ <a href="" class="btn btn-primary">Contacter votre chef de projet</a>
</div>
</div>
</div>
</div>
- @if($fluidbook->statusText)
+ @if($fluidbook->status)
<div class="col-md-3">
<div class="card position-sticky" style="top: 50px">
<div class="card-body">
<h2>Publiez votre Fluidbook</h2>
<p>L’adresse d’hébergement a déjà été configurée, vous pouvez mettre votre Fluidbook directement en ligne en
cliquant ci-dessous :</p>
- <a href="" class="btn bg-primary">Installer sur le serveur d’hébergement</a>
+ <a href="" class="btn btn-primary">Installer sur le serveur d’hébergement</a>
</div>
</div>
</div>