first commit

This commit is contained in:
Roman Pyrih
2026-04-21 15:48:41 +02:00
commit 7483681901
10216 changed files with 3236626 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,435 @@
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** css ./node_modules/.pnpm/css-loader@7.1.2_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/.pnpm/postcss-loader@8.2.0_postcss@8.5.6_webpack@5.100.2/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./node_modules/.pnpm/sass-loader@16.0.5_sass@1.89.2_webpack@5.100.2/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./assets/sass/global_main.scss ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*!
DUPLICATOR GLOBAL STYLE - Snap Creek LLC 2015-2024
*/
/**
* Foundation for Sites
* Version 6.9.0
* https://get.foundation
* Licensed under MIT Open Source
*/
#dup-notifications {
position: relative;
background: #ffffff 0 0 no-repeat padding-box;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
border-radius: 6px;
opacity: 1;
min-height: 48px;
margin: 10px 0 20px 0;
}
#dup-notifications * {
box-sizing: border-box;
}
#dup-notifications .dup-notifications-header {
display: flex;
align-items: center;
padding: 10px 16px;
border-bottom: 1px solid rgba(204, 208, 212, 0.5);
}
#dup-notifications .dup-notifications-header .dup-notifications-bell {
position: relative;
width: 16px;
height: 20px;
top: 3px;
margin-right: 10px;
}
#dup-notifications .dup-notifications-header .dup-notifications-circle {
position: absolute;
width: 11px;
height: 11px;
border-radius: 50%;
top: -4px;
right: -1px;
border: 2px solid #ffffff;
}
#dup-notifications .dup-notifications-header .dup-notifications-title {
font-style: normal;
font-weight: 500;
font-size: 14px;
line-height: 17px;
color: #23282d;
}
#dup-notifications .dup-notifications-body {
position: relative;
}
#dup-notifications .dup-notifications-messages {
padding: 16px 100px 16px 16px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message {
display: none;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message.current {
display: block;
}
#dup-notifications .dup-notifications-messages .dup-notifications-title {
color: #444444;
font-size: 17px;
font-weight: 600;
line-height: 17px;
margin: 0 0 -2px 0;
min-height: 19px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-content {
font-weight: normal;
font-size: 14px;
line-height: 18px;
margin: 8px 0 20px 0;
color: #777777;
}
#dup-notifications .dup-notifications-messages .dup-notifications-content p {
font-size: inherit;
line-height: inherit;
margin: 0 0 5px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-buttons {
margin: -30px 80px 0 0;
}
#dup-notifications .dup-notifications-messages .dup-notifications-buttons a {
margin: 0 10px 0 0;
min-height: unset;
}
#dup-notifications .dup-notifications-badge {
background-color: #f6f7f7;
border-radius: 3px;
color: #2c3338;
cursor: pointer;
font-size: 11px;
margin-left: 10px;
padding: 6px 8px;
position: relative;
text-decoration: none;
text-transform: uppercase;
top: -1px;
white-space: nowrap;
}
#dup-notifications .dup-notifications-badge:focus, #dup-notifications .dup-notifications-badge:hover {
background-color: #f0f0f1;
box-shadow: none;
color: initial;
}
#dup-notifications .dup-notifications-badge .fa {
color: black;
padding-right: 6px;
position: relative;
}
#dup-notifications .dismiss {
position: absolute;
top: 15px;
right: 16px;
width: 16px;
height: 16px;
color: #a7aaad;
font-size: 16px;
cursor: pointer;
text-align: center;
vertical-align: middle;
line-height: 16px;
}
#dup-notifications .dismiss:hover {
color: #dc3232;
}
#dup-notifications .navigation {
position: absolute;
bottom: 20px;
right: 16px;
width: 63px;
height: 30px;
}
#dup-notifications .navigation a {
display: block;
width: 30px;
height: 30px;
border: 1px solid #7e8993;
border-radius: 3px;
font-size: 16px;
line-height: 1.625;
text-align: center;
cursor: pointer;
background-color: #ffffff;
color: #41454a;
}
#dup-notifications .navigation a:hover {
background-color: #f1f1f1;
}
#dup-notifications .navigation .prev {
float: left;
}
#dup-notifications .navigation .next {
float: right;
}
#dup-notifications .navigation .disabled {
border-color: #dddddd;
color: #a0a5aa;
cursor: default;
}
#dup-notifications .navigation .disabled:hover {
background-color: #ffffff;
}
.dup-notifications-message .button {
margin: 0 10px 0 0;
}
.lity-iframe .lity-content {
margin: 0 auto;
}
@media screen and (max-width: 768px) {
#dup-notifications .dup-notifications-messages {
padding: 15px 50px 20px 16px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message .dup-notifications-title {
line-height: 22px;
margin: 0 30px -2px 0;
min-height: 24px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message .dup-notifications-content {
font-size: 16px;
line-height: 22px;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message .dup-notifications-buttons {
margin: -30px 80px 0 0;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message .dup-notifications-buttons a {
margin: 0;
display: table;
}
#dup-notifications .dup-notifications-messages .dup-notifications-message .dup-notifications-buttons .button-secondary {
margin-top: 6px;
}
}
.dupli-admin-notice {
padding: 10px;
}
.dupli-admin-notice .notice-dismiss {
position: absolute;
top: 10px;
right: 10px;
text-decoration: none;
}
.duplicator-gen-admin-notice {
position: relative;
}
.dupli-admin-notice {
background: #fefefe;
border-left-width: 4px;
border-left-style: solid;
border-top: 4px;
width: calc(100% - 22px);
padding: 16px 10px;
overflow: hidden;
box-sizing: border-box;
}
.wrap .dupli-admin-notice {
width: 100%;
}
.dup-border-left-red-notice {
background: #fefefe;
border-left: 4px solid #ED494D;
padding: 10px;
}
.dupli-admin-notice p {
overflow: hidden;
}
.dupli-admin-notice p:last-of-type {
margin-bottom: 0;
}
.dupli-admin-notice.dupli-yellow-border {
border-left-color: #dba617;
}
.dup-updated {
margin-left: 0;
background: #fefefe;
border-left: 4px solid #fefefe;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
margin: 5px 15px 2px;
padding: 1px 12px;
}
.dup-updated p {
margin: 0.5em 0;
padding: 2px;
}
.dup-updated a {
padding-bottom: 2px;
}
.dup-updated {
border-left-color: #00a32a;
}
.wrap .dup-updated {
margin: 5px 0 15px;
margin: 20px 0 10px 0;
padding: 5px 10px;
font-size: 14px;
line-height: 175%;
}
.dupli-invalid-license {
text-align: center;
font-size: 16px;
line-height: 22px;
}
.dupli-invalid-license h2 {
font-size: 30px;
text-shadow: 0px 5px 5px #e8e8e8;
color: #fe4716;
margin: 30px 0 20Px 0;
}
.dupli-invalid-license p {
font-size: 1.25em;
}
.dupli-invalid-license small {
font-size: 0.8rem;
}
/** LICENSE NOTICES **/
.dupli-admin-notice.dup-license-message {
padding: 10px;
display: flex;
}
.dup-license-message h3 {
margin: 0 0 10px 0;
}
.dup-license-message .dashicons {
display: inline-block;
font-size: 60px;
width: 60px;
height: 60px;
margin-right: 10px;
}
.dup-license-message .dupli-simple-style-disc {
margin: 10px 20px;
}
.dupli-simple-style-disc {
list-style: disc;
margin-left: 20px;
}
.dup-dashboard-widget-content .maroon {
color: maroon;
}
.dup-dashboard-widget-content .green {
color: #00a32a;
}
.dup-dashboard-widget-content .gary {
color: #646970;
}
.dup-dashboard-widget-content a.disabled {
pointer-events: none;
cursor: default;
}
.dup-dashboard-widget-content .separator {
margin: 1em 0;
}
.dup-dashboard-widget-content .dup-packages-counts {
text-align: right;
}
.dup-dashboard-widget-content .dup-section-last-packages ul,
.dup-dashboard-widget-content .dup-section-sections ul {
list-style: none;
padding: 0;
margin: 0;
}
.dup-dashboard-widget-content .dup-section-last-packages ul li,
.dup-dashboard-widget-content .dup-section-sections ul li {
margin: 0 0 10px 0;
}
.dup-dashboard-widget-content .dup-section-last-packages ul li:last-child,
.dup-dashboard-widget-content .dup-section-sections ul li:last-child {
margin: 0;
}
.dup-dashboard-widget-content .dup-section-label-fixed-width {
display: inline-block;
min-width: 120px;
}
.dup-dashboard-widget-content .dup-section-sections .dashicons {
margin-right: 5px;
}
.dup-dashboard-widget-content .dup-section-sections .dashicons-image-rotate {
font-size: 16px;
}
.dup-dashboard-widget-content .spinner {
float: none;
visibility: visible;
margin: 0;
}
.dup-dashboard-widget-content .dup-section-recommended {
line-height: 20px;
}
.dup-dashboard-widget-content .dup-section-recommended .action-links a:after {
content: "|";
cursor: not-allowed;
margin: 0 5px;
color: #646970;
}
.dup-dashboard-widget-content .dup-section-recommended .action-links a:last-child:after {
content: "";
margin: 0;
}
.dup-dashboard-widget-content .dup-recommended-label {
color: #787c82;
}
.dup-dashboard-widget-content #dup-dash-widget-section-recommended {
margin: 0;
padding: 0;
border: 0 none;
background: transparent;
color: #787c82;
cursor: pointer;
}
.dup-dashboard-widget-content .dup-flex-content {
display: flex;
justify-content: space-between;
align-items: center;
}
.dup-dashboard-widget-content .dup-flex-content > * {
padding-right: 5px;
}
.dup-dashboard-widget-content .dup-flex-content > *:last-child {
padding-right: 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
<?php
//silent

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,3 @@
<?php
//silent

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,3 @@
<?php
//silent

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 304 218" style="enable-background:new 0 0 304 182;" xml:space="preserve">
<style type="text/css">
.st0{fill:#252F3E;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
</style>
<g>
<!-- Plug icon centered where AWS text was -->
<g transform="translate(88, 0) scale(0.35)">
<path d="M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z" fill="#252F3E"/>
</g>
<!-- AWS smile only (yellow paths) -->
<g transform="translate(0, 35)">
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4
c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5
c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 304 182" style="enable-background:new 0 0 304 182;" xml:space="preserve">
<style type="text/css">
.st0{fill:#252F3E;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
</style>
<g>
<path class="st0" d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2
c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8
c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8
c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4
c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1
c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6
c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7
c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6
C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4
c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1
h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5
c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1
c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8
c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3
c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5
c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1
c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1
c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2
c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1
c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6
c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z"/>
<g>
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4
c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5
c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="96"
height="96"
viewBox="0 0 96 96"
fill="none"
version="1.1"
id="svg840"
sodipodi:docname="backblaze1.svg"
inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs844" />
<sodipodi:namedview
id="namedview842"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="7.7604167"
inkscape:cx="47.226846"
inkscape:cy="44.649664"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="svg840" />
<path
d="m 44.899278,9.3002091 c -3.022454,-3.807357 -6.073832,-5.812685 -6.073832,-5.812685 2.26687,4.795223 5.550807,14.6767489 -5.057042,25.8076229 -6.568328,6.829811 -11.131269,13.921164 -8.341038,21.739177 1.278609,4.039916 4.301122,9.096622 10.37529,10.113748 2.26687,0.261814 4.795559,0 6.33571,-0.493765 8.86434,-3.02279 7.585395,-12.380954 5.551143,-18.222563 -0.261552,-0.755584 -0.755643,-2.528353 -0.755643,-3.283996 -0.876974,-3.986536 0.76106,-7.02965 2.280215,-9.851593 0.695897,-1.292626 1.367002,-2.53891 1.759424,-3.80797 0,-0.13088 0.06544,-0.319667 0.13088,-0.508731 0.06544,-0.188651 0.130759,-0.377851 0.130759,-0.508395 0.261813,-0.755643 0.261813,-1.511563 0.261813,-2.267206 C 51.282432,16.81888 48.860172,13.97343 46.472908,11.168905 45.948604,10.5528 45.425909,9.9385351 44.928624,9.3002091 Z"
fill="#e20626"
id="path826"
style="stroke-width:3.17769" />
<path
d="m 65.359787,81.375695 c -4.039916,1.2789 -12.642439,2.03457 -17.205437,-3.54554 -3.10632,-3.822217 -3.209284,-7.171035 -3.272826,-9.246943 -0.05002,-1.63323 -0.07651,-2.478492 -1.522397,-2.145761 -12.903979,3.022458 -18.978147,-5.31858 -19.966013,-7.58545 0,0 -0.49416,-1.511227 -0.755643,-0.261552 -0.494101,2.034311 -0.494101,6.568328 0.493765,10.607908 1.279004,5.318584 5.057101,14.153678 15.926492,18.454808 9.096622,3.80742 20.489374,2.03455 28.336311,-5.81233 1.628485,-1.62845 1.344444,-1.54046 -1.280843,-0.72702 -0.23255,0.072 -0.483603,0.14989 -0.753409,0.23299 z"
fill="#e20626"
id="path828"
style="stroke-width:3.17769" />
<path
d="m 64.633068,43.942971 c 6.829811,8.108479 9.3585,12.409878 9.852324,17.960744 v -0.02851 c 0.75592,7.091308 -2.789895,13.65929 -10.375349,15.43235 -4.03958,1.01712 -8.341038,-0.52335 -10.869391,-3.545818 -2.557613,-3.28399 -3.051714,-8.602562 -1.278945,-12.642158 0.645028,-1.401613 1.157555,-2.295133 1.571922,-3.016757 0.556416,-0.969782 0.935158,-1.629762 1.21825,-2.795918 0.829347,-4.019924 -0.241151,-7.514565 -1.250634,-10.810626 -0.830019,-2.70886 -1.618659,-5.283617 -1.277719,-7.906047 0,-0.246932 0.06534,-0.50109 0.130759,-0.75561 0.06544,-0.254178 0.13088,-0.508418 0.13088,-0.755623 1.250978,-2.880124 2.48324,-4.245188 3.711363,-5.60646 0.284061,-0.314563 0.567818,-0.628833 0.851249,-0.961518 1.773074,-2.005342 4.301451,-3.284299 4.301451,-3.284299 0,0 -1.772763,2.266853 -2.266866,6.568286 -0.26155,3.545816 2.005333,8.108438 5.550847,12.148374 z"
fill="#e20626"
id="path830"
style="stroke-width:3.17769" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 209.51 94.74"><defs><style>.cls-1{fill:#f4801f;}.cls-2{fill:#f9ab41;}</style></defs><path class="cls-1" d="M143.05,93.42l1.07-3.71c1.27-4.41.8-8.48-1.34-11.48-2-2.76-5.26-4.38-9.25-4.57L58,72.7a1.47,1.47,0,0,1-1.35-2,2,2,0,0,1,1.75-1.34l76.26-1c9-.41,18.84-7.75,22.27-16.71l4.34-11.36a2.68,2.68,0,0,0,.18-1,3.31,3.31,0,0,0-.06-.54,49.67,49.67,0,0,0-95.49-5.14,22.35,22.35,0,0,0-35,23.42A31.73,31.73,0,0,0,.34,93.45a1.47,1.47,0,0,0,1.45,1.27l139.49,0h0A1.83,1.83,0,0,0,143.05,93.42Z"/><path class="cls-2" d="M168.22,41.15q-1,0-2.1.06a.88.88,0,0,0-.32.07,1.17,1.17,0,0,0-.76.8l-3,10.26c-1.28,4.41-.81,8.48,1.34,11.48a11.65,11.65,0,0,0,9.24,4.57l16.11,1a1.44,1.44,0,0,1,1.14.62,1.5,1.5,0,0,1,.17,1.37,2,2,0,0,1-1.75,1.34l-16.73,1c-9.09.42-18.88,7.75-22.31,16.7l-1.21,3.16a.9.9,0,0,0,.79,1.22h57.63A1.55,1.55,0,0,0,208,93.63a41.34,41.34,0,0,0-39.76-52.48Z"/></svg>

After

Width:  |  Height:  |  Size: 946 B

View File

@@ -0,0 +1 @@
<svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="#3387ff"><path d="m12.0164 19.3527v4.6473c7.8492 0 13.9573-7.5839 11.3885-15.82353-1.1417-3.59237-3.996-6.47196-7.5924-7.583886-8.22019-2.565974-15.8125 3.563856-15.8125 11.404316h4.65243c0-4.90384 4.88077-8.7243 10.07547-6.84258 1.9124.68426 3.4537 2.22385 4.1387 4.13408 1.8838 5.189-1.9124 10.0643-6.8502 10.0643z"/><path d="m7.3916 19.3811h4.6239v-4.6188h-4.6239z"/><path d="m7.39187 22.945h-3.56782v-3.5637l3.56755-.0002z"/><path d="m.828019 19.3813h2.968421v-2.9652h-2.968421z"/></g></svg>

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="250"
height="250"
viewBox="0 0 250 250"
fill="none"
version="1.1"
id="svg828"
sodipodi:docname="logo_mark_light.svg"
inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs832" />
<sodipodi:namedview
id="namedview830"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="2.98"
inkscape:cx="24.66443"
inkscape:cy="129.02685"
inkscape:window-width="1312"
inkscape:window-height="969"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg828" />
<path
d="M 239.91317,170.74462 C 220.33946,180.54317 197.96648,185.98681 173.99746,185.625 102.88666,184.17281 46.957576,132.27566 48.156027,69.127764 48.55557,47.715501 55.746454,27.755095 67.731325,11.060709 29.779362,30.295516 3.8120955,66.224381 3.0130101,107.96018 1.4150162,170.74462 57.743989,223.00523 128.45526,224.45742 c 47.14002,0.72526 88.28867,-20.6875 111.45791,-53.7128 z"
fill="#000000"
id="path824"
style="stroke-width:1.70599" />
<path
d="m 136.04444,5.9798657 c -19.17555,0 -37.153215,4.3550783 -53.133141,12.3393073 C 72.92449,33.198736 67.331595,50.255922 66.532696,67.676079 65.334068,122.47711 114.47128,167.84188 175.59528,168.93061 c 18.37579,0 39.15094,-3.9931 55.13088,-11.97601 9.5869,-14.88038 15.18014,-32.30003 15.18014,-50.80841 C 246.70434,50.981687 197.16846,5.9798657 136.04444,5.9798657 Z"
fill="#0073ec"
id="path826"
style="stroke-width:1.70599" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="43px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 43 40" version="1.1" height="40px">
<path d="m12.5 0l-12.5 8.1 8.7 7 12.5-7.8-8.7-7.3zm-12.5 21.9l12.5 8.2 8.7-7.3-12.5-7.7-8.7 6.8zm21.2 0.9l8.8 7.3 12.4-8.1-8.6-6.9-12.6 7.7zm21.2-14.7l-12.4-8.1-8.8 7.3 12.6 7.8 8.6-7zm-21.1 16.3l-8.8 7.3-3.7-2.5v2.8l12.5 7.5 12.5-7.5v-2.8l-3.8 2.5-8.7-7.3z" fill="#007EE5"/>
</svg>

After

Width:  |  Height:  |  Size: 441 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 35 28"
version="1.1"
id="svg848"
sodipodi:docname="Google_Cloud_logo.svg"
width="35"
height="28"
inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview850"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="6.4143646"
inkscape:cx="-0.70155039"
inkscape:cy="15.823859"
inkscape:window-width="1312"
inkscape:window-height="969"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg848" />
<defs
id="defs826">
<style
id="style824">.cls-1{fill:#ea4335;}.cls-2{fill:#4285f4;}.cls-3{fill:#34a853;}.cls-4{fill:#fbbc05;}.cls-5{fill:#5f6368;}</style>
</defs>
<path
class="cls-1"
d="m 22.089802,7.89352 h 1.01902 L 26.013029,4.9761643 26.155692,3.7375676 A 13.053645,13.112746 0 0 0 4.9193175,10.135277 1.5794808,1.586632 0 0 1 5.9383374,10.073859 L 11.746751,9.1116442 c 0,0 0.295516,-0.491344 0.448369,-0.460635 A 7.2452313,7.2780347 0 0 1 22.110183,7.89352 Z"
id="path828"
style="stroke-width:1.02132" />
<path
class="cls-2"
d="M 30.15025,10.135277 A 13.084215,13.143455 0 0 0 26.206643,3.747804 l -4.07608,4.0945343 a 7.2452313,7.2780347 0 0 1 2.659642,5.7732927 v 0.72678 a 3.6277107,3.6441355 0 1 1 0,7.288271 h -7.255421 l -0.723504,0.737017 v 4.370915 l 0.723504,0.72678 h 7.255421 A 9.436124,9.4788469 0 0 0 30.15025,10.135277 Z"
id="path830"
style="stroke-width:1.02132" />
<path
class="cls-3"
d="m 10.269172,27.424448 h 7.255421 V 21.589737 H 10.269172 A 3.6073304,3.6236629 0 0 1 8.7712126,21.262174 L 7.7521928,21.579501 4.8276057,24.496856 4.5728508,25.52049 a 9.385173,9.4276652 0 0 0 5.6963212,1.903958 z"
id="path832"
style="stroke-width:1.02132" />
<path
class="cls-4"
d="M 10.269172,8.4974642 A 9.436124,9.4788469 0 0 0 4.5728508,25.489781 l 4.208552,-4.227607 A 3.6277107,3.6441355 0 1 1 13.580987,16.44086 l 4.208552,-4.227607 A 9.4259338,9.4686106 0 0 0 10.269172,8.4974642 Z"
id="path834"
style="stroke-width:1.02132" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1,8 @@
<svg viewBox="0 0 87.3 78" xmlns="http://www.w3.org/2000/svg">
<path d="m6.6 66.85 3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3l13.75-23.8h-27.5c0 1.55.4 3.1 1.2 4.5z" fill="#0066da"/>
<path d="m43.65 25-13.75-23.8c-1.35.8-2.5 1.9-3.3 3.3l-25.4 44a9.06 9.06 0 0 0 -1.2 4.5h27.5z" fill="#00ac47"/>
<path d="m73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75 7.65-13.25c.8-1.4 1.2-2.95 1.2-4.5h-27.502l5.852 11.5z" fill="#ea4335"/>
<path d="m43.65 25 13.75-23.8c-1.35-.8-2.9-1.2-4.5-1.2h-18.5c-1.6 0-3.15.45-4.5 1.2z" fill="#00832d"/>
<path d="m59.8 53h-32.3l-13.75 23.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z" fill="#2684fc"/>
<path d="m73.4 26.5-12.7-22c-.8-1.4-1.95-2.5-3.3-3.3l-13.75 23.8 16.15 28h27.45c0-1.55-.4-3.1-1.2-4.5z" fill="#ffba00"/>
</svg>

After

Width:  |  Height:  |  Size: 755 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M64 80c-8.8 0-16 7.2-16 16l0 162c5.1-1.3 10.5-2 16-2l384 0c5.5 0 10.9 .7 16 2l0-162c0-8.8-7.2-16-16-16L64 80zM48 320l0 96c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L64 304c-8.8 0-16 7.2-16 16zM0 320L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 224 0 96c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-96zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"/></svg>

After

Width:  |  Height:  |  Size: 720 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 184.4c-17-15.2-39.4-24.4-64-24.4L64 256c-24.6 0-47 9.2-64 24.4L0 96zM64 288l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/></svg>

After

Width:  |  Height:  |  Size: 618 B

View File

@@ -0,0 +1,3 @@
<?php
//silent

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. -->
<!-- Network wired icon -->
<path d="M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z" fill="currentColor"/>
<!-- Lock icon overlay (scaled and positioned in top-left, colored with primary) -->
<g transform="translate(10, 10) scale(0.32)">
<path d="M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z" fill="#fe4716"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z"/></svg>

After

Width:  |  Height:  |  Size: 857 B

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="17" fill="none">
<path fill="#777" d="M7.68 16.56c1.14 0 2.04-.95 2.04-2.17h-4.1c0 1.22.9 2.17 2.06 2.17Zm6.96-5.06c-.62-.71-1.81-1.76-1.81-5.26A5.32 5.32 0 0 0 8.69.97H6.65A5.32 5.32 0 0 0 2.5 6.24c0 3.5-1.2 4.55-1.81 5.26a.9.9 0 0 0-.26.72c0 .57.39 1.08 1.04 1.08h12.38c.65 0 1.04-.5 1.07-1.08 0-.24-.1-.51-.3-.72Z"/>
</svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 5.5 32 20.5"><title>OfficeCore10_32x_24x_20x_16x_01-22-2019</title><g id="STYLE_COLOR"><path d="M12.20245,11.19292l.00031-.0011,6.71765,4.02379,4.00293-1.68451.00018.00068A6.4768,6.4768,0,0,1,25.5,13c.14764,0,.29358.0067.43878.01639a10.00075,10.00075,0,0,0-18.041-3.01381C7.932,10.00215,7.9657,10,8,10A7.96073,7.96073,0,0,1,12.20245,11.19292Z" fill="#0364b8"/><path d="M12.20276,11.19182l-.00031.0011A7.96073,7.96073,0,0,0,8,10c-.0343,0-.06805.00215-.10223.00258A7.99676,7.99676,0,0,0,1.43732,22.57277l5.924-2.49292,2.63342-1.10819,5.86353-2.46746,3.06213-1.28859Z" fill="#0078d4"/><path d="M25.93878,13.01639C25.79358,13.0067,25.64764,13,25.5,13a6.4768,6.4768,0,0,0-2.57648.53178l-.00018-.00068-4.00293,1.68451,1.16077.69528L23.88611,18.19l1.66009.99438,5.67633,3.40007a6.5002,6.5002,0,0,0-5.28375-9.56805Z" fill="#1490df"/><path d="M25.5462,19.18437,23.88611,18.19l-3.80493-2.2791-1.16077-.69528L15.85828,16.5042,9.99475,18.97166,7.36133,20.07985l-5.924,2.49292A7.98889,7.98889,0,0,0,8,26H25.5a6.49837,6.49837,0,0,0,5.72253-3.41556Z" fill="#28a8ea"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg id="sygnet__on-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42 36.09"><defs><style>.cls-1{fill:#c9f4ff;}.cls-2{fill:#51b9ff;}.cls-3{fill:#007bfc;}</style></defs><title>sygnet__on-white</title><path class="cls-1" d="M14.63,4a2.09,2.09,0,0,0-1.77-1H2.1A2.1,2.1,0,0,0,0,5.1,2.12,2.12,0,0,0,.32,6.22l2.77,4.07,13.85-3Z" transform="translate(0 -3)"/><path class="cls-2" d="M17,7.37a2.11,2.11,0,0,0-1.78-1H4.5A2.09,2.09,0,0,0,2.66,9.61l3.09,4.9,14.31-2.24Z" transform="translate(0 -3)"/><path class="cls-3" d="M5.62,14.31a2.14,2.14,0,0,1-.19-1.88,2.11,2.11,0,0,1,2-1.34H18.15a2.1,2.1,0,0,1,1.78,1l9.63,15.27a2.12,2.12,0,0,1,.32,1.12,2.15,2.15,0,0,1-.32,1.12l-5.38,8.53a2.11,2.11,0,0,1-3.56,0Z" transform="translate(0 -3)"/><path class="cls-3" d="M32.74,19.19a2.11,2.11,0,0,0,3.56,0l1.85-2.93,3.53-5.6A2.12,2.12,0,0,0,42,9.54a2.15,2.15,0,0,0-.32-1.12L38.88,4A2.11,2.11,0,0,0,37.1,3H26.34a2.1,2.1,0,0,0-2.1,2.1,2,2,0,0,0,.33,1.12Z" transform="translate(0 -3)"/></svg>

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.0"
id="katman_1"
x="0px"
y="0px"
viewBox="0 0 205 205"
xml:space="preserve"
sodipodi:docname="wasabi-cloud-storage-seeklogo.com 2.svg"
width="205"
height="205"
inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs847" /><sodipodi:namedview
id="namedview845"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="1.2416667"
inkscape:cx="159.0604"
inkscape:cy="309.66443"
inkscape:window-width="1920"
inkscape:window-height="1027"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="g842" />
<style
type="text/css"
id="style824">
.st0{clip-path:url(#SVGID_00000061464863754787056510000000905814910531898293_);fill:#00CE3E;}
.st1{fill:#061F33;}
</style>
<g
id="g842">
<g
id="g834"
transform="translate(-84.974952,-193.999)">
<defs
id="defs827">
<rect
id="SVGID_1_"
x="87"
y="195.7"
width="626"
height="208.7" />
</defs>
<clipPath
id="SVGID_00000083073068415055786330000014044562452968495528_">
<use
xlink:href="#SVGID_1_"
style="overflow:visible"
id="use829"
x="0"
y="0"
width="100%"
height="100%" />
</clipPath>
<path
style="fill:#00ce3e"
d="m 259.6,225.1 c -39.5,-39.4 -103.5,-39.3 -142.9,0.2 -39.5,39.5 -39.5,103.4 -0.2,142.9 19,19 44.7,29.6 71.5,29.6 26.8,0 52.6,-10.6 71.6,-29.6 19,-19 29.6,-44.7 29.6,-71.5 0,-26.8 -10.7,-52.6 -29.6,-71.6 z m 10.9,62.4 -43.5,-39.5 -44.6,42.1 -23.4,22 v -32.8 l 35.5,-33.7 26.5,-25.1 c 27.3,11.9 46.2,37.4 49.5,67 z m -0.8,23.9 c -1.5,8.7 -4.5,17.1 -8.7,24.8 l -24.8,-22.6 v -32.8 z m -69,-96.7 -18.7,17.7 -23.1,21.9 V 219 c 13.4,-5 27.8,-6.5 41.8,-4.3 z m -60,98 -34.4,-30.9 c 1.6,-8.9 4.7,-17.4 9,-25.2 l 25.4,22.7 z m 0,-84.2 v 26.3 L 126,241.6 c 4.4,-5 9.3,-9.4 14.7,-13.1 z m -35.2,76.9 44.6,40 68,-63.9 v 32.3 L 155.3,373 c -27.6,-11.9 -46.6,-37.7 -49.8,-67.6 z m 70.1,73.4 42.4,-40.1 v 35.4 c -9.6,3.7 -19.7,5.6 -30,5.6 -4.1,0 -8.3,-0.3 -12.4,-0.9 z m 60.6,-14.5 v -26.2 l 14.5,13.1 c -4.3,4.9 -9.2,9.4 -14.5,13.1 z m 0,0"
clip-path="url(#SVGID_00000083073068415055786330000014044562452968495528_)"
id="path832" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,3 @@
<?php
//silent

View File

@@ -0,0 +1,159 @@
/**
* Duplicator Pro Admin Notifications.
*/
'use strict';
var DupAdminNotifications = window.DupAdminNotifications || (function (document, window, $) {
/**
* Elements holder.
*
* @type {object}
*/
var el = {
$notifications: $('#dup-notifications'),
$nextButton: $('#dup-notifications .navigation .next'),
$prevButton: $('#dup-notifications .navigation .prev'),
$adminBarCounter: $('#wp-admin-bar-dup-menu .dup-menu-notification-counter'),
$adminBarMenuItem: $('#wp-admin-bar-dup-notifications'),
};
/**
* Public functions and properties.
*
* @type {object}
*/
var app = {
/**
* Start the engine.
*/
init: function () {
app.updateNavigation();
app.events();
},
/**
* Register JS events.
*/
events: function () {
el.$notifications
.on('click', '.dismiss', app.dismiss)
.on('click', '.next', app.navNext)
.on('click', '.prev', app.navPrev);
},
/**
* Click on the Dismiss notification button.
*
* @param {object} event Event object.
*/
dismiss: function (event) {
if (el.$currentMessage.length === 0) {
return;
}
// Update counter.
var count = parseInt(el.$adminBarCounter.text(), 10);
if (count > 1) {
--count;
el.$adminBarCounter.html(count);
} else {
el.$adminBarCounter.remove();
el.$adminBarMenuItem.remove();
}
// Remove notification.
var $nextMessage = el.$nextMessage.length < 1 ? el.$prevMessage : el.$nextMessage,
messageId = el.$currentMessage.data('message-id');
if ($nextMessage.length === 0) {
el.$notifications.fadeOut(300);
} else {
el.$currentMessage.remove();
$nextMessage.addClass('current');
app.updateNavigation();
}
// AJAX call - update option.
var data = {
action: 'duplicator_notification_dismiss',
nonce: dup_admin_notifications.nonce,
id: messageId,
};
$.post(dup_admin_notifications.ajax_url, data, function (res) {
if (!res.success) {
console.log(res);
}
}).fail(function (xhr, textStatus, e) {
console.log(xhr.responseText);
});
},
/**
* Click on the Next notification button.
*
* @param {object} event Event object.
*/
navNext: function (event) {
if (el.$nextButton.hasClass('disabled')) {
return;
}
el.$currentMessage.removeClass('current');
el.$nextMessage.addClass('current');
app.updateNavigation();
},
/**
* Click on the Previous notification button.
*
* @param {object} event Event object.
*/
navPrev: function (event) {
if (el.$prevButton.hasClass('disabled')) {
return;
}
el.$currentMessage.removeClass('current');
el.$prevMessage.addClass('current');
app.updateNavigation();
},
/**
* Update navigation buttons.
*/
updateNavigation: function () {
if (el.$notifications.find('.dup-notifications-message.current').length === 0) {
el.$notifications.find('.dup-notifications-message:first-child').addClass('current');
}
el.$currentMessage = el.$notifications.find('.dup-notifications-message.current');
el.$nextMessage = el.$currentMessage.next('.dup-notifications-message');
el.$prevMessage = el.$currentMessage.prev('.dup-notifications-message');
if (el.$nextMessage.length === 0) {
el.$nextButton.addClass('disabled');
} else {
el.$nextButton.removeClass('disabled');
}
if (el.$prevMessage.length === 0) {
el.$prevButton.addClass('disabled');
} else {
el.$prevButton.removeClass('disabled');
}
},
};
return app;
}(document, window, jQuery));
// Initialize.
DupAdminNotifications.init();

View File

@@ -0,0 +1,54 @@
/*!
* DP Kickoff Script
*/
jQuery(document).ready(function () {
// Start calling the thing every 15 seconds to ensure it runs in a decent amount of time
var data = {
action: 'duplicator_process_worker',
nonce: dp_gateway.duplicator_process_worker_nonce,
}
dp_kickme = function () {
console.log("dp_kick");
jQuery.ajax({
async: true,
type: "POST",
url: dp_gateway.ajaxurl,
timeout: 10000000,
data: data,
complete: function () {
},
success: function (respData) {
if ('ok' != respData) {
try {
var data = DupliJs.parseJSON(respData);
} catch (err) {
console.error(err);
console.error('JSON parse failed for response data: ' + respData);
return false;
}
if (data['status'] == 0) {
// DupliJs.Schedule.SetUpdateInterval(1);
// alert("Process worker sent");
} else {
// alert("Process worker failed");
console.log(data);
}
}
},
error: function (data) {
// alert(data);
console.log(data);
// console.log(data);
}
});
}
dp_kickme();
window.setInterval(dp_kickme, dp_gateway.client_call_frequency);
});

View File

@@ -0,0 +1,49 @@
/**
* Global Namespace Definitions
*
* This file defines the global JavaScript namespaces for the Duplicator plugin.
*/
// Main namespace
window.DupliJs = window.DupliJs || {};
// Package operations
DupliJs.Pack = DupliJs.Pack || {};
// Schedule operations
DupliJs.Schedule = DupliJs.Schedule || {};
// Settings operations
DupliJs.Settings = DupliJs.Settings || {};
DupliJs.Settings.Brand = DupliJs.Settings.Brand || {};
// Storage operations
DupliJs.Storage = DupliJs.Storage || {};
DupliJs.Storage.Dropbox = DupliJs.Storage.Dropbox || {};
DupliJs.Storage.OneDrive = DupliJs.Storage.OneDrive || {};
DupliJs.Storage.S3 = DupliJs.Storage.S3 || {};
DupliJs.Storage.Local = DupliJs.Storage.Local || {};
// Support operations
DupliJs.Support = DupliJs.Support || {};
// Template operations
DupliJs.Template = DupliJs.Template || {};
// Tools operations
DupliJs.Tools = DupliJs.Tools || {};
// UI utilities
DupliJs.UI = DupliJs.UI || {};
// Utility functions
DupliJs.Util = DupliJs.Util || {};
// Debug utilities
DupliJs.Debug = DupliJs.Debug || {};
// Help system
DupliJs.Help = DupliJs.Help || {};
// Staging operations
DupliJs.Staging = DupliJs.Staging || {};

View File

@@ -0,0 +1,168 @@
<?php
use Duplicator\Libs\WpUtils\WpDbUtils;
?>
<script>
/*! ============================================================================
* UI NAMESPACE: All methods at the top of the Duplicator Namespace
* =========================================================================== */
(function($) {
/**
* Indicates if we have any form changes.
* Primarily used to prevent the user from navigating away from a page with unsaved changes.
* @type {boolean}
*/
DupliJs.UI.hasUnsavedChanges = false;
/* Stores the state of a view into the database */
DupliJs.UI.SaveViewStateByPost = function(key, value) {
if (key != undefined && value != undefined) {
jQuery.ajax({
type: "POST",
url: ajaxurl,
dataType: "json",
data: {
action: 'duplicator_view_state_update',
key: key,
value: value,
nonce: '<?php echo esc_js(wp_create_nonce('duplicator_view_state_update')); ?>'
},
success: function(data) {},
error: function(data) {}
});
}
}
DupliJs.UI.SaveMulViewStatesByPost = function(states) {
jQuery.ajax({
type: "POST",
url: ajaxurl,
dataType: "json",
data: {
action: 'duplicator_view_state_update',
states: states,
nonce: '<?php echo esc_js(wp_create_nonce('duplicator_view_state_update')); ?>'
},
success: function(data) {},
error: function(data) {}
});
}
DupliJs.UI.SetScanMode = function() {
var scanMode = jQuery('#scan-mode').val();
if (scanMode == <?php echo (int) WpDbUtils::PHPDUMP_MODE_MULTI; ?>) {
jQuery('#scan-multithread-size').show();
jQuery('#scan-chunk-size-label').show();
} else {
jQuery('#scan-multithread-size').hide();
jQuery('#scan-chunk-size-label').hide();
}
}
DupliJs.UI.IsSaveViewState = true;
/* Toggle MetaBoxes */
DupliJs.UI.ToggleMetaBox = function() {
var $title = jQuery(this);
var $panel = $title.parent().find('.dup-box-panel');
var $arrowParent = $title.parent().find('.dup-box-arrow');
var $arrow = $title.parent().find('.dup-box-arrow i');
var key = $panel.attr('id');
var value = $panel.is(":visible") ? 0 : 1;
if (DupliJs.UI.IsSaveViewState) {
DupliJs.UI.SaveViewStateByPost(key, value);
}
if (value) {
$panel.removeClass('no-display');
$panel.show();
$arrowParent.attr("aria-expanded", true);
$arrow.removeClass().addClass('fa fa-caret-up');
} else {
$panel.hide();
$arrowParent.attr("aria-expanded", false);
$arrow.removeClass().addClass('fa fa-caret-down');
}
return false;
}
DupliJs.UI.ClearTraceLog = function(reload) {
var reload = reload || 0;
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
action: 'duplicator_delete_trace_log',
nonce: '<?php echo esc_js(wp_create_nonce('duplicator_delete_trace_log')); ?>'
},
success: function(respData) {
if (reload && respData.success) {
window.location.reload();
}
},
error: function(data) {}
});
return false;
}
/* Clock generator, used to show an active clock.
* Intended use is to be called once per page load
* such as:
* <div id="dupli-clock-container"></div>
* DupliJs.UI.Clock(DupliJs._WordPressInitTime); */
DupliJs.UI.Clock = function() {
var timeDiff;
var timeout;
function addZ(n) {
return (n < 10 ? '0' : '') + n;
}
function formatTime(d) {
return addZ(d.getHours()) + ':' + addZ(d.getMinutes()) + ':' + addZ(d.getSeconds());
}
return function(s) {
var now = new Date();
var then;
// Set lag to just after next full second
var lag = 1015 - now.getMilliseconds();
// Get the time difference when first run
if (s) {
s = s.split(':');
then = new Date(now);
then.setHours(+s[0], +s[1], +s[2], 0);
timeDiff = now - then;
}
now = new Date(now - timeDiff);
jQuery('#dupli-clock-container').html(formatTime(now));
timeout = setTimeout(DupliJs.UI.Clock, lag);
};
}();
/* Runs callback function when form values change */
DupliJs.UI.formOnChangeValues = function(form, callback) {
let previousValues = form.serialize();
$('form :input').on('change input', function() {
if (previousValues !== form.serialize()) {
previousValues = form.serialize();
callback();
}
});
$('.dup-pseudo-checkbox, #dbnone, #dball').on('click', function() {
// Since the pseudo checkbox is not a form input,
// assume the state is changed on click
callback();
});
};
})(jQuery);
</script>

View File

@@ -0,0 +1,159 @@
<?php
/*! ============================================================================
* UTIL NAMESPACE: All methods at the top of the Duplicator Namespace
* =========================================================================== */
defined("ABSPATH") or die("");
?>
<script>
DupliJs.Util.ajaxProgress = null;
DupliJs.Util.ajaxProgressShow = function() {
if (DupliJs.Util.ajaxProgress === null) {
DupliJs.Util.ajaxProgress = jQuery('#dup-ajax-loader')
}
DupliJs.Util.ajaxProgress
.stop(true, true)
.css('display', 'block')
.delay(1000)
.animate({
opacity: 1
}, 500);
}
DupliJs.Util.ajaxProgressHide = function() {
if (DupliJs.Util.ajaxProgress === null) {
return;
}
DupliJs.Util.ajaxProgress
.stop(true, true)
.delay(500)
.animate({
opacity: 0
}, 300, function() {
jQuery(this).css({
'display': 'none'
});
});
}
DupliJs.Util.ajaxWrapper = function(ajaxData, callbackSuccess, callbackFail, options = {}) {
let opts = jQuery.extend({
showProgress: true, // Is true show the ajax loader, can be disabled for custom progress handling
timeout: 30000
}, options);
jQuery.ajax({
type: "POST",
url: ajaxurl,
timeout: opts.timeout,
dataType: "json",
data: ajaxData,
beforeSend: function(xhr) {
if (opts.showProgress) {
DupliJs.Util.ajaxProgressShow();
}
},
success: function(result, textStatus, jqXHR) {
var message = '';
if (result.success) {
if (typeof callbackSuccess === "function") {
try {
message = callbackSuccess(result, result.data, result.data.funcData, textStatus, jqXHR);
} catch (error) {
console.error(error);
DupliJs.addAdminMessage(error.message, 'error');
message = '';
}
} else {
message = '<?php echo esc_js(__('RESPONSE SUCCESS', 'duplicator-pro')); ?>';
}
if (message != null && String(message).length) {
DupliJs.addAdminMessage(message, 'notice');
}
} else {
if (typeof callbackFail === "function") {
try {
message = callbackFail(result, result.data, result.data.funcData, textStatus, jqXHR);
} catch (error) {
console.error(error);
message = error.message;
}
} else {
message = '<?php echo esc_js(__('RESPONSE ERROR!', 'duplicator-pro')); ?>' + '<br><br>' + result.data.message;
}
if (message != null && String(message).length) {
DupliJs.addAdminMessage(message, 'error');
}
}
},
error: function(result) {
// Make sure the progress is hidden even if the request fails
DupliJs.Util.ajaxProgressHide();
DupliJs.addAdminMessage(
<?php echo wp_json_encode(__('AJAX ERROR! <br> Ajax request error', 'duplicator-pro')); ?>,
'error'
);
},
complete: function() {
if (opts.showProgress) {
DupliJs.Util.ajaxProgressHide();
}
}
});
};
/**
* Get human size from bytes number.
* Is size is -1 return unknown
*
* @param {size} int bytes size
*/
DupliJs.Util.humanFileSize = function(size) {
if (size < 0) {
return "unknown";
} else if (size == 0) {
return "0";
} else {
var i = Math.floor(Math.log(size) / Math.log(1024));
return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
}
};
DupliJs.Util.isEmpty = function(val) {
return (val === undefined || val == null || val.length <= 0) ? true : false;
};
DupliJs.Util.toggleShow = function(selector, show = 'auto') {
var element = jQuery(selector);
if (show === 'auto') {
show = !element.is(":visible");
}
if (show) {
element.hide().removeClass('no-display');
element.fadeIn();
} else {
element.fadeOut();
}
};
DupliJs.Util.dynamicFormSubmit = function(url, method, params) {
var form = jQuery('<form>', {
method: method,
action: url
});
jQuery.each(params, function(key, value) {
form.append(jQuery('<input>', {
'type': 'hidden',
'name': key,
'value': value
}));
});
jQuery("body").append(form);
form.submit();
};
</script>

View File

@@ -0,0 +1,67 @@
/*! dup admin script */
jQuery(document).ready(function ($) {
$(document).on('click', '.dupli-admin-notice[data-to-dismiss] .notice-dismiss', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
var notice = $(this).closest('.dupli-admin-notice[data-to-dismiss]');
$.post(ajaxurl, {
action: 'duplicator_admin_notice_to_dismiss',
notice: notice.data('to-dismiss'),
nonce: dupli_global_data.nonce_admin_notice_to_dismiss
});
});
function dupDashboardUpdate() {
jQuery.ajax({
type: "POST",
url: dupli_global_data.ajaxurl,
dataType: "json",
data: {
action: 'duplicator_dashboad_widget_info',
nonce: dupli_global_data.nonce_dashboard_widged_info
},
success: function (result, textStatus, jqXHR) {
if (result.success) {
$('#duplicator_dashboard_widget .dup-last-backup-info').html(result.data.funcData.lastBackupInfo);
if (result.data.funcData.isRunning) {
$('#duplicator_dashboard_widget #dupli-create-new').addClass('disabled');
} else {
$('#duplicator_dashboard_widget #dupli-create-new').removeClass('disabled');
}
}
},
complete: function() {
setTimeout(
function(){
dupDashboardUpdate();
},
5000
);
}
});
}
if ($('#duplicator_dashboard_widget').length) {
dupDashboardUpdate();
$('#duplicator_dashboard_widget #dup-dash-widget-section-recommended').on('click', function (event) {
event.stopPropagation();
$(this).closest('.dup-section-recommended').fadeOut();
jQuery.ajax({
type: "POST",
url: dupli_global_data.ajaxurl,
dataType: "json",
data: {
action: 'duplicator_dismiss_recommended_plugin',
nonce: dupli_global_data.nonce_dashboard_widged_dismiss_recommended
},
success: function (result, textStatus, jqXHR) {
// do nothing
}
});
});
}
});

View File

@@ -0,0 +1,28 @@
/*! dup import installer */
(function ($) {
DupliImportInstaller = {
installerIframe: $('#dupli-import-installer-iframe'),
init: function () {
DupliImportInstaller.installerIframe.on("load", function () {
DupliImportInstaller.installerIframe.contents()
.find('#page-step1')
.on('click', '> .ui-dialog #db-install-dialog-confirm-button', function () {
$('#dupli-import-installer-modal').removeClass('no-display');
});
});
},
resizeIframe: function () {
let height = DupliImportInstaller.installerIframe.contents()
.find('html').css('overflow', 'hidden')
.outerHeight(true);
console.log('height', height);
DupliImportInstaller.installerIframe.css({
'height': height + 'px'
})
}
}
DupliImportInstaller.init();
DuplicatorTooltip.load();
})(jQuery);

View File

@@ -0,0 +1,3 @@
<?php
//silent

View File

@@ -0,0 +1,461 @@
<?php
defined("ABSPATH") or die("");
?>
<script>
/*! ============================================================================
* DESCRIPTION: Methods and Objects in this file are global and common in nature
* use this file to place all shared methods and varibles
* NAMESPACE: DupliJs (defined in dupli-namespace.js, loaded via main.js bundle)
* ============================================================================ */
DupliJs.Pack.DownloadFile = function (url, fileName='') {
var link = document.createElement('a');
link.className = "dupli-dnload-menu-item";
link.href = url;
if (fileName !== '') {
link.download = fileName;
}
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
return false;
};
(function ($) {
/* ============================================================================
* BASE NAMESPACE: All methods at the top of the Duplicator Namespace
* ============================================================================ */
DupliJs._WordPressInitDateTime = '<?php echo esc_js(current_time("D M d Y H:i:s O")) ?>';
DupliJs._WordPressInitTime = '<?php echo esc_js(current_time("H:i:s")) ?>';
DupliJs._ServerInitDateTime = '<?php echo esc_js(date("D M d Y H:i:s O")) ?>';
DupliJs._ClientInitDateTime = new Date();
DupliJs.parseJSON = function (mixData) {
try {
var parsed = JSON.parse(mixData);
return parsed;
} catch (e) {
console.log("JSON parse failed - 1");
console.log(mixData);
}
if (mixData.indexOf('[') > -1 && mixData.indexOf('{') > -1) {
if (mixData.indexOf('{') < mixData.indexOf('[')) {
var startBracket = '{';
var endBracket = '}';
} else {
var startBracket = '[';
var endBracket = ']';
}
} else if (mixData.indexOf('[') > -1 && mixData.indexOf('{') === -1) {
var startBracket = '[';
var endBracket = ']';
} else {
var startBracket = '{';
var endBracket = '}';
}
var jsonStartPos = mixData.indexOf(startBracket);
var jsonLastPos = mixData.lastIndexOf(endBracket);
if (jsonStartPos > -1 && jsonLastPos > -1) {
var expectedJsonStr = mixData.slice(jsonStartPos, jsonLastPos + 1);
try {
var parsed = JSON.parse(expectedJsonStr);
return parsed;
} catch (e) {
console.log("JSON parse failed - 2");
console.log(mixData);
throw e;
// errorCallback(xHr, textstatus, 'extract');
return false;
}
}
// errorCallback(xHr, textstatus, 'extract');
throw "could not parse the JSON";
return false;
}
DupliJs.escapeHtml = function(str) {
return str
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
};
DupliJs.isInViewport = function ( $element ) {
const rect = $element[ 0 ].getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= ( window.innerHeight || document.documentElement.clientHeight ) &&
rect.right <= ( window.innerWidth || document.documentElement.clientWidth )
);
};
/**
*
* @param string message // html message conent
* @param string errLevel // notice warning error
* @param function updateCallback // called after message content is updated
*
* @returns void
*/
DupliJs.addAdminMessage = function (message, errLevel, options) {
let settings = $.extend({}, {
'isDismissible': true,
'hideDelay': 0, // 0 no hide or millisec
'updateCallback': false
}, options);
var classErrLevel = 'notice';
switch (errLevel) {
case 'error':
classErrLevel = 'notice-error';
break;
case 'warning':
classErrLevel = 'update-nag';
break;
case 'notice':
default:
classErrLevel = 'updated notice-success';
break;
}
var noticeCLasses = 'dupli-admin-notice notice ' + classErrLevel + ' no-display';
if (settings.isDismissible) {
noticeCLasses += ' is-dismissible';
}
var msgNode = $('<div class="' + noticeCLasses + '">' +
'<div class="msg-content">' + message + '</div>' +
'</div>');
var dismissButton = $('<button type="button" class="notice-dismiss">' +
'<span class="screen-reader-text">Dismiss this notice.</span>' +
'</button>');
let anchor = $(".wp-header-end").first();
msgNode.insertAfter(anchor);
if (settings.isDismissible) {
dismissButton.appendTo(msgNode).click(function () {
dismissButton.closest('.is-dismissible').fadeOut("slow", function () {
$(this).remove();
});
});
}
if (typeof settings.updateCallback === "function") {
settings.updateCallback(msgNode);
}
$("body, html").animate({scrollTop: 0}, 500);
$(msgNode).css('display', 'none').removeClass("no-display").fadeIn("slow", function () {
if (settings.hideDelay > 0) {
setTimeout(function () {
dismissButton.closest('.is-dismissible').fadeOut("slow", function () {
$(this).remove();
});
}, settings.hideDelay);
}
});
};
/**
*
* @param string filename
* @param string content
* @param string mimeType // text/html, text/plain
* @returns {undefined}
*/
DupliJs.downloadContentAsfile = function (filename, content, mimeType) {
mimeType = (typeof mimeType !== 'undefined') ? mimeType : 'text/plain';
var element = document.createElement('a');
element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(content));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
DupliJs.openWindow = function () {
$("[data-dup-open-window]").each(function () {
let url = $(this).data('dup-open-window');
let name = $(this).data('dup-window-name');
$(this).click(function () {
window.open(url, name);
});
});
}
DupliJs.passwordToggle = function () {
$('.dup-password-toggle').each(function () {
let inputElem = $(this).find('input');
let buttonElem = $(this).find('button');
let iconElem = $(this).find('button i');
buttonElem.click(function () {
if (inputElem.attr('type') == 'password') {
inputElem.attr('type','text');
iconElem.removeClass('fa-eye').addClass('fa-eye-slash');
} else {
inputElem.attr('type','password');
iconElem.removeClass('fa-eye-slash').addClass('fa-eye');
}
});
});
}
})(jQuery);
</script>
<?php
require_once(DUPLICATOR____PATH . '/assets/js/duplicator/dup.ui.php');
require_once(DUPLICATOR____PATH . '/assets/js/duplicator/dup.util.php');
?>
<script>
<?php
require_once(DUPLICATOR____PATH . '/assets/js/modal-box.js');
?>
</script>
<script>
//Init
jQuery(document).ready(function ($)
{
DupliJs.openWindow();
//INIT: DupliJs Tabs
$("div[data-dupli-tabs='true']").each(function ()
{
//Load Tab Setup
var $root = $(this);
var $lblRoot = $root.find('> ul:first-child')
var $lblKids = $lblRoot.children('li');
var $lblButton = $lblKids.find('button');
var $pnls = $root.children('div');
//Apply Styles
$root.addClass('categorydiv');
$lblRoot.addClass('category-tabs');
$pnls.addClass('tabs-panel').css('display', 'none');
//Init accessibility improvement
$lblKids.each(function () {
var $content = $(this).text();
$(this).html("<button role='tabs' aria-selected='false'>" +
"<span class='screen-reader-text'><?php esc_html_e('Toggle Tab: ', 'duplicator-pro') ?></span> "+$content+
"</button>")
})
//Activate first tab
$lblKids.eq(0).addClass('tabs').css('font-weight', 'bold');
$lblKids.eq(0).find('button').attr("aria-selected", true)
$pnls.eq(0).show();
//Initialize tab click event
var _clickEvt = function (evt)
{
var $target = $(evt.target);
if (evt.target.nodeName === 'BUTTON') {
$target = $(evt.target).parent();
}
var $lbls = $target.parent().children('li');
var $pnls = $target.parent().parent().children('div');
var index = $target.index();
$lbls.removeClass('tabs').css('font-weight', 'normal');
$lbls.find("button").attr("aria-selected", false);
$lbls.eq(index).addClass('tabs').css('font-weight', 'bold');
$lbls.eq(index).find("button").attr("aria-selected", true);
$pnls.hide();
$pnls.eq(index).show();
return false;
}
//Attach Events
$lblKids.click(_clickEvt);
$lblButton.on("click", _clickEvt);
});
//INIT: Toggle MetaBoxes
$('div.dup-box div.dup-box-title').each(function () {
var $title = $(this);
var $panel = $title.parent().find('.dup-box-panel');
var $arrow = $title.find('.dup-box-arrow');
$title.click(DupliJs.UI.ToggleMetaBox);
//$arrow.on("keypress", DupliJs.UI.ToggleMetaBox)
$arrow.attr("aria-haspopup", true);
if ($panel.is(":visible")) {
$arrow.attr("aria-expanded", true);
$arrow.append('<i class="fa fa-caret-up"></i>');
} else {
$arrow.attr("aria-expanded", false);
$arrow.append('<i class="fa fa-caret-down"></i>')
}
});
DuplicatorTooltip.load();
DupliJs.passwordToggle();
//HANDLEBARS HELPERS
if (typeof (Handlebars) != "undefined") {
function _handleBarscheckCondition(v1, operator, v2) {
switch (operator) {
case '==':
return (v1 == v2);
case '===':
return (v1 === v2);
case '!==':
return (v1 !== v2);
case '<':
return (v1 < v2);
case '<=':
return (v1 <= v2);
case '>':
return (v1 > v2);
case '>=':
return (v1 >= v2);
case '&&':
return (v1 && v2);
case '||':
return (v1 || v2);
case 'obj||':
v1 = typeof (v1) == 'object' ? v1.length : v1;
v2 = typeof (v2) == 'object' ? v2.length : v2;
return (v1 != 0 || v2 != 0);
default:
return false;
}
}
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
return _handleBarscheckCondition(v1, operator, v2)
? options.fn(this)
: options.inverse(this);
});
Handlebars.registerHelper('if_eq', function (a, b, opts) {
return (a == b) ? opts.fn(this) : opts.inverse(this);
});
Handlebars.registerHelper('if_neq', function (a, b, opts) {
return (a != b) ? opts.fn(this) : opts.inverse(this);
});
}
$('.dup-pseudo-checkbox').each(function () {
let checkbox = $(this);
checkbox.attr("tabindex", 0);
checkbox.attr("role", "checkbox")
checkbox.on('click', function(e) {
e.stopPropagation();
if (checkbox.hasClass('disabled')) {
return;
}
checkbox.toggleClass('checked');
});
checkbox.on('keypress', function(e) {
e.stopPropagation();
e.preventDefault();
if (checkbox.hasClass('disabled')) {
return;
}
checkbox.toggleClass('checked');
});
checkbox.closest('label').on('click', function () {
checkbox.trigger('click');
});
});
/**
* Register a change event handler for all forms with the class 'dup-monitored-form'.
* This will set a flag to indicate that the form has unsaved changes.
*/
$('form.dup-monitored-form').each(function (index, form) {
DupliJs.UI.formOnChangeValues($(form), function() {
DupliJs.UI.hasUnsavedChanges = true;
});
});
/**
* Accordion
*/
$('.dup-accordion-wrapper .accordion-header').on('click', function () {
let accordion = $(this).parent();
let content = accordion.find('.accordion-content');
if (accordion.hasClass('close')) {
accordion.removeClass('close').addClass('open');
content.css('opacity', 0).animate({
opacity: 1
}, 300);
} else {
content.animate({
opacity: 0
}, 300, function() {
accordion.removeClass('open').addClass('close');
});
}
});
/**
* Meta Screen
*/
if ($('#screen-meta-links').length && $('body').hasClass('duplicator-page')) {
$('#wpcontent').css('position', 'relative');
}
$('#screen-meta-links, #screen-meta').prependTo('#dup-meta-screen');
$('#screen-meta-links').show();
/**
* Header tabs scroll
*/
if($('.dup-nav-item:last-child').length > 0) {
let $header = $('.dup-body-header').first();
let $lastTab = $header.find('.dup-nav-item:last-child');
if (!DupliJs.isInViewport($lastTab)) {
$header.addClass('dup-scrollable-header');
}
$header.on('scroll', function() {
$header.toggleClass('dup-scrollable-header', !DupliJs.isInViewport($lastTab));
});
}
/**
* When a form is submitting, we want to clear the unsaved changes flag.
* Otherwise, the user will be prompted to save changes when they are not actually leaving the page.
*/
window.addEventListener('submit', function (e) {
DupliJs.UI.hasUnsavedChanges = false;
});
/**
* Check if we have unsaved changes, and if so, prevent the user from navigating away from the page.
*/
window.addEventListener('beforeunload', function (e) {
if (DupliJs.UI.hasUnsavedChanges) {
e.preventDefault();
// Most browsers ignore the value, but historically some browsers are known to honor this value. So it's here as a backup
e.returnValue = '<?php echo esc_js(__('Changes you made may not be saved.', 'duplicator-pro')) ?>';
}
});
});
</script>

View File

@@ -0,0 +1,39 @@
/**
* Main script for Duplicator Plugin
*/
// Import and initialize global namespace (must be first)
import './dupli-namespace.js';
// Import jQuery and make it globally available
import jquery from 'jquery';
window.$ = window.jQuery = jquery;
// Import Tippy and make it globally available
import tippy from 'tippy.js';
window.tippy = tippy;
// Import Handlebars dist (browser-compatible) and make it globally available
import Handlebars from 'handlebars/dist/handlebars';
window.Handlebars = Handlebars;
/**
* Scripts
*/
import "parsleyjs";
import "@popperjs/core";
import "select2";
import "js-cookie";
import "jstree";
import "formstone";
import "formstone/dist/js/upload.js";
import "./duplicator-tooltip.js";
import "./dynamic-help.js";
/**
* Styles
*/
import "select2/dist/css/select2.css";
import "jstree/dist/themes/default/style.css"
console.log('Duplicator Plugin vendor bundle loaded successfully');

View File

@@ -0,0 +1,276 @@
/*! Duplicator iframe modal box */
class DuplicatorModalBox {
#url;
#modal;
#iframe;
#htmlContent;
#canClose;
#closeButton;
#openCallack;
#closeInContent;
#fullscreen;
#defaultOptions;
#closeColor = '#fff';
constructor(options = {}) {
this.#defaultOptions = {
url: null,
htmlContent: '',
openCallback: null,
closeColor: '#fff',
closeInContent: false,
fullscreen: false
};
this.setOptions(options);
this.#modal = null;
this.#iframe = null;
this.#canClose = true;
this.#closeButton = null;
}
setOptions(options = {}) {
if (options.url) {
this.#url = options.url;
this.#htmlContent = '';
} else if (!options.url && !options.htmlContent) {
this.#url = null;
this.#htmlContent = '';
} else {
this.#url = null;
this.#htmlContent = options.htmlContent;
}
if (options.openCallback && typeof options.openCallback === 'function') {
this.#openCallack = options.openCallback;
} else {
this.#openCallack = this.#defaultOptions.openCallback;
}
if (options.closeColor) {
this.#closeColor = options.closeColor;
}
if (options.closeInContent) {
this.#closeInContent = options.closeInContent;
} else {
this.#closeInContent = this.#defaultOptions.closeInContent;
}
if (options.fullscreen) {
this.#fullscreen = options.fullscreen;
} else {
this.#fullscreen = this.#defaultOptions.fullscreen;
}
if (this.#modal !== null) {
this.#updateContent();
}
}
open() {
// If modal is already open, do nothing
if (this.#modal !== null) {
return;
}
// Create modal element
this.#modal = document.createElement('div');
this.#modal.classList.add('dup-modal-wrapper');
this.#modal.classList.add('dup-styles');
// Add modal styles
this.#addModalStyles();
// Create close button
this.#closeButton = document.createElement('div');
this.#closeButton.classList.add('dup-modal-close-button');
this.#closeButton.innerHTML = '<i class="fa-regular fa-circle-xmark"></i>';
this.#closeButton.style.color = this.#closeColor;
// Add event listener to close button
this.#closeButton.addEventListener('click', () => {
this.close();
});
// Update content
this.#updateContent();
// Add close button to modal
if (this.#closeInContent) {
this.#modal.querySelector('.dup-modal-content').appendChild(this.#closeButton);
} else {
this.#modal.appendChild(this.#closeButton);
}
// Set overflow property of body to hidden
document.body.style.overflow = 'hidden';
// Add opacity animation
this.#modal.animate([
{ opacity: '0' },
{ opacity: '1' }
], {
duration: 500,
iterations: 1,
});
// Add modal to document
document.body.appendChild(this.#modal);
}
close() {
if (!this.#canClose || !this.#modal) {
return;
}
// Remove modal from document
document.body.removeChild(this.#modal);
// Set overflow property of body to hidden
document.body.style.overflow = 'auto';
// Reset modal and iframe variables
this.#modal = null;
this.#iframe = null;
}
enableClose() {
this.#canClose = true;
this.#closeButton.removeAttribute('disabled');
}
disableClose() {
this.#canClose = false;
this.#closeButton.setAttribute('disabled', 'disabled');
}
#insertContentAsHtml() {
let content = document.createElement('div');
content.classList.add('dup-modal-content');
if (this.#fullscreen) {
content.classList.add('fullscreen');
}
content.innerHTML = this.#htmlContent;
// Add content to modal
this.#modal.appendChild(content);
if (typeof this.#openCallack == 'function') {
this.#openCallack(content, this);
}
}
#insertContentAsIframe() {
// Create iframe element
this.#iframe = document.createElement('iframe');
this.#iframe.classList.add('dup-modal-iframe');
// Add open callback function
if (typeof this.#openCallack == 'function') {
let openCallack = this.#openCallack;
let iframe = this.#iframe;
let modalObj = this;
this.#iframe.onload = function () {
openCallack(iframe, modalObj);
};
}
this.#iframe.src = this.#url;
this.#iframe.setAttribute('frameborder', '0');
this.#iframe.setAttribute('allowfullscreen', '');
// Add iframe to modal
this.#modal.appendChild(this.#iframe);
}
#updateContent() {
if (!this.#modal) {
return;
}
// Remove existing content
if (this.#iframe) {
this.#modal.removeChild(this.#iframe);
this.#iframe = null;
} else {
const existingContent = this.#modal.querySelector('.dup-modal-content');
if (existingContent) {
this.#modal.removeChild(existingContent);
}
}
// Update content
if (this.#url) {
this.#insertContentAsIframe();
} else {
this.#insertContentAsHtml();
}
}
#addModalStyles() {
const style = document.createElement('style');
style.innerHTML = `
.dup-modal-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.7);
z-index: 1000005;
display: flex;
justify-content: center;
align-items: center;
}
.dup-styles.dup-modal-wrapper .dup-modal-iframe {
width: 100%;
height: 100%;
}
.dup-styles.dup-modal-wrapper .dup-modal-close-button {
position: absolute;
top: 0;
right: 0;
font-size: 23px;
color: #fff;
cursor: pointer;
line-height: 0;
text-align: center;
z-index: 2;
padding: 20px;
}
.dup-styles.dup-modal-wrapper .dup-modal-close-button i {
font-size: 23px;
line-height: normal;
}
.dup-styles.dup-modal-wrapper .dup-modal-close-button[disabled] {
opacity: 0.5;
cursor: not-allowed;
}
.dup-styles.dup-modal-wrapper .dup-modal-content {
position: relative;
max-height: calc(100vh - 40px);
max-width: calc(100vw - 40px);
overflow: auto;
}
.dup-styles.dup-modal-wrapper .dup-modal-content.fullscreen {
width: 100vw!important;
height: 100vh!important;
max-width: none;
max-height: none;
}
.dup-styles.dup-modal-wrapper .dup-modal-content .dup-modal-close-button {
padding: 9px;
}
`;
document.head.appendChild(style);
}
}