Author SHA1 Message Date
Serrindipity 983f078228 working poc for supervisord.conf 2025-12-08 21:46:17 -08:00
Serrindipity 583fc55d0b add analyze_plugins from metrics 2025-12-08 20:12:48 -08:00
Serrindipity 26661ff970 add subpaths in supervisord 2025-12-08 20:05:29 -08:00
Serrindipity c3d861cb51 ai generated analyze_plugins (i swear i checked it tho) 2025-12-02 13:32:49 -08:00
Serrindipity 7cc41c352d clean up and remove duplicates 2025-12-02 13:17:50 -08:00
ashdxt ac341827ff supervisord config 2025-12-02 00:50:24 -08:00
Serrindipity dd70946a53 update reqs 2025-12-01 22:40:57 -08:00
Serrindipity 40a36fa9c6 move metrics scripts into scripts dir 2025-12-01 22:36:07 -08:00
Serrindipity 51194f9778 Merge branch 'deliverable' of https://git.1337.berkeley.edu/Committee/Secure-OCF-Web-Hosting into deliverable 2025-12-01 22:34:50 -08:00
serrindipity dc4d7d5f18 Merge pull request 'metrics' (#20) from metrics into deliverable
Reviewed-on: #20
2025-12-02 06:34:41 +00:00
Serrindipity 8d9d6e4146 move utils into scripts 2025-12-01 22:30:24 -08:00
PopsicleSnow 431f69dc24 comment out alloy 2025-12-01 22:27:18 -08:00
PopsicleSnow 53e908177c comment out alloy 2025-12-01 22:26:48 -08:00
Serrindipity 3018d484d5 move userdata and delete old docker dev 2025-12-01 22:17:39 -08:00
Serrindipity 5a532ec968 Merge branch 'deliverable' of https://git.1337.berkeley.edu/Committee/Secure-OCF-Web-Hosting into deliverable 2025-12-01 22:12:16 -08:00
Serrindipity 9dc39831a0 add output_recursive_plugins util that writes all plugins to json file 2025-12-01 22:12:07 -08:00
PopsicleSnow e3e352dbc6 remove daemon.json and add service specific logging config 2025-12-01 22:08:39 -08:00
PopsicleSnow 7f056088a1 Merge branch 'deliverable' of https://git.1337.berkeley.edu/Committee/Secure-OCF-Web-Hosting into deliverable 2025-12-01 21:58:53 -08:00
PopsicleSnow 3c408903fb add loki docker connection with plugin and daemon 2025-12-01 21:58:50 -08:00
Serrindipity 5efa770fe7 add option to get all plugins 2025-12-01 21:45:18 -08:00
Serrindipity f8546ed60f CVE_scanner now takes in command line arguments ai powered development lmao 2025-12-01 21:42:29 -08:00
Serrindipity 59fe04d6bd what did i even do 2025-12-01 21:25:59 -08:00
Serrindipity 62e5ce8e43 move CVE scanner script into its own directory 2025-12-01 21:05:01 -08:00
Serrindipity 7cc24f6271 Merge branch 'deliverable' of https://git.1336.berkeley.edu/Committee/Secure-OCF-Web-Hosting into deliverable 2025-12-01 21:02:58 -08:00
Serrindipity b2d415a1a7 add working docker compose 2025-12-01 21:02:43 -08:00
nini.b-612 833985a65f Updated Deliverable Branch Docker
Updated the docker to emulate certain parts of the logging branch docker file
2025-12-02 04:42:21 +00:00
serrindipity 5875b7f7cf Merge pull request 'scanning' (#18) from scanning into deliverable
Reviewed-on: #18
2025-12-02 04:31:23 +00:00
arvindrai 76d71bb285 Add scripts/IMPORTANT.txt 2025-12-02 04:20:35 +00:00
arvindrai c25761f7fb Upload files to "scripts"
a better CVE
2025-12-02 03:28:18 +00:00
arvindrai ea2e544a76 Add scripts/CVE_scanner_new.py
updated with a new and better script
2025-12-02 03:21:11 +00:00
arvindrai ac3b422377 Add requirements.txt
added requirements.txt for the extra modules
2025-12-02 02:36:11 +00:00
arvindrai 0d8e4d8ccb Upload files to "scripts"
added a new python file that updates the CVE list using API calls
2025-12-02 02:31:15 +00:00
Serrindipity 04f22c031d add mostly tested utils to get list of plugins 2025-11-25 13:29:54 -08:00
Serrindipity 3b0da4c5a2 add deliverable folder 2025-11-24 23:22:02 -08:00
serrindipity 048f22ba2c Merge pull request 'Update WordPress-Docker/docker-compose.yml' (#16) from logging into main
Reviewed-on: #16
2025-11-05 05:08:14 +00:00
nini.b-612 0e6ecf1f16 Update WordPress-Docker/docker-compose.yml
Added potential Grafana Loki installation code (commented it out for now just to be safe). Some changes can be made to the current commented out code, as recommended by ChatGPT.
2025-11-04 19:01:58 +00:00
arvindrai e27b0c57db Upload files to "/"
sorted list of the original .json of vulnerabilities
2025-10-29 04:58:44 +00:00
arvindrai 564222d082 Upload files to "Figures" 2025-10-29 04:22:27 +00:00
arvindrai d0db901e65 Upload files to "Figures"
CVSS Scores
2025-10-29 03:32:15 +00:00
arvindrai 6d785b4252 Upload files to "scripts"
Python script which plots a histogram of the distribution of CVSS severities
2025-10-29 03:31:31 +00:00
arvindrai 8f78abb808 Add scripts/CVE_scanner.py
Python script that scans an array of selected plugins against the names found in our CVE.
2025-10-29 03:19:27 +00:00
arvindrai c6550981a4 Delete scripts
was a file, not a directory
2025-10-29 03:12:52 +00:00
arvindrai cccd9eedd0 Add scripts 2025-10-29 03:10:09 +00:00
arvindrai 4056d29124 added cve database 2025-10-22 00:45:52 -04:00
dtan6 205bafb94b added security_rating.py description 2025-10-14 21:26:45 -07:00
dtan6 6b3c1e2bd6 got rid of downloads since it doesnt seem to be a metric anymore 2025-10-14 21:24:16 -07:00
dtan6 d18b433d01 created the security_rating.py script 2025-10-14 21:12:25 -07:00
dtan6 01e86c78d0 Created the security_rating.py script, which will output a security rating if you type in the name of a WP plugin ( not sure if it works 100 % ) 2025-10-14 21:09:07 -07:00
douglastsui 0b40e4e799 Add WordPress-Metrics/README.md 2025-10-15 00:14:02 +00:00
unknown 7b1217a2ef Initial Commit for scraping, querying, analyzing plugins 2025-10-14 17:04:11 -07:00
6213 changed files with 1687298 additions and 730313 deletions
+4
View File
@@ -0,0 +1,4 @@
scripts/supervisord.pid
scripts/supervisord.log
scripts/metrics/__pycache__
scripts/CVE_scanner/__pycache__
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

-140
View File
@@ -1,140 +0,0 @@
# WordPress Docker Setup
This repository provides a Dockerized environment for running WordPress locally using Docker Compose. It's designed for quick development and testing without complex installations.
## Architecture
- **Apache Server**: Single Apache container with `mod_userdir` enabled
- **User Data**: Shared volume containing student org home directories
- **WordPress**: Separate WordPress + MariaDB containers for testing
- **Structure**: Each org has `/home/<orgname>/public_html/` served at `http://localhost:8080/~<orgname>`
## 🚀 Quick Start
1. **Clone the repository:**
```bash
git clone https://git.1337.berkeley.edu/Committee/Secure-OCF-Web-Hosting.git
cd Secure-OCF-Web-Hosting/WordPress-Docker
```
2. **Install Docker Desktop:**
- [macOS](https://docs.docker.com/desktop/setup/install/mac-install/)
- [Windows](https://docs.docker.com/desktop/setup/install/windows-install/)
3. **Build and start the containers:**
```bash
docker-compose up -d
```
OR
```bash
docker compose up -d
```
4. **Access WordPress:**
Open your browser and navigate to:
```
http://localhost:8081
```
Follow the on-screen instructions to complete the WordPress setup.
### Access sites:
- **Student org sites**:
- http://localhost:8080/~studentorg1 (Default, no plugins)
- http://localhost:8080/~studentorg2 (Legit plugins)
- http://localhost:8080/~studentorg3 (BAD BAD plugins)
- **WordPress**: http://localhost:8081
### Add new student org:
```bash
docker exec -it ocf_apache_server bash
mkdir -p /home/neworg/public_html
echo "<h1>New Org</h1>" > /home/neworg/public_html/index.html
chown -R www-data:www-data /home/neworg
```
### View Apache logs:
```bash
docker logs ocf_apache_server
```
## Virtual machine (isolated testing)
If you plan to experiment with or reverse-engineer malicious plugins, do this work only in an isolated virtual machine (VM). We provide a link to a VMware download here:
https://drive.google.com/drive/folders/1lGABtrC7S9C2OpGTAlL6uG4DqqE-1zuR
Guidance:
- Use VMware and create a VM running a disposable OS such as Ubuntu or Kali Linux.
- Perform any development, testing, or analysis of intentionally malicious plugins only inside that VM. Do not deploy or test them on your host machine or any production network.
- Keep the VM network isolated from your production network when possible and snapshot the VM before risky experiments so you can revert changes.
Only analyze or test malware and malicious plugins in controlled, authorized environments. Do not use these techniques to attack or harm others.
## Volume management
> [!WARNING] Contact JQ or another officer if you are editing the default setup and don't understand the following documentation.
There are 3 important mount points. `userdata`, `wp-content`, and `backup.sql` are all files / directories on the host machine that are then mounted on the respective containers.
Currently, backup.sql is mounted to the database container, `userdata` doesn't do anything, and `wp-content` is mounted to the `wordpress` container. They are set up for minimum reproducibility: i.e. there is an admin user with the default page. Credentials are in the `docker-compose.yml` file. If you'd like to make changes to the default, it is imperative that you make a backup of the sql file. You should then copy that `backupX.sql` file to the one in the repo so that the database will update.
```bash
docker compose exec -it db /bin/bash
mariadb-dump -u wp_user -p wp_db > backupX.sql # Change X to the number of the userdata volume you're editing.
# Then enter the password for wp_user, which should be in the docker compose.
exit
docker compose cp db:/backupX.sql ./backupX.sql
```
As a one-liner:
```bash
docker compose exec -it db "mariadb-dump -u wp_user -p wp_db > backupX.sql" # Make sure you change X!
```
The rest should auto-update. If you don't want to make a change to the `wp-content` directory or database, you can them to your `.gitignore`.
## ⚙️ Managing Containers
* **Start containers:**
```bash
docker-compose start
```
* **Stop containers:**
```bash
docker-compose stop
```
* **Stop and remove containers:**
```bash
docker-compose down
```
Add the `-v` flag to also remove volumes:
```bash
docker-compose down -v
```
## 🔐 Accessing phpMyAdmin
If phpMyAdmin is included in your setup:
* Open your browser and navigate to:
```
http://localhost:8081
```
-28
View File
@@ -1,28 +0,0 @@
# Dockerfile (apache-static)
FROM httpd:2.4
LABEL maintainer="random@gmail.com"
# Enable required Apache modules for user directories and PHP
RUN sed -i \
-e 's/#LoadModule userdir_module/LoadModule userdir_module/' \
-e 's/#LoadModule vhost_alias_module/LoadModule vhost_alias_module/' \
-e 's/#LoadModule rewrite_module/LoadModule rewrite_module/' \
-e 's/#Include conf\/extra\/httpd-userdir.conf/Include conf\/extra\/httpd-userdir.conf/' \
/usr/local/apache2/conf/httpd.conf
# Add custom configuration for user directories
COPY httpd-userdir.conf /usr/local/apache2/conf/extra/httpd-userdir.conf
# Create example student org directories with basic content
RUN mkdir -p /home/studentorg1/public_html && \
echo "<h1>Welcome to Student Org 1's OCF Page</h1><p>This is a test page.</p>" > /home/studentorg1/public_html/index.html && \
mkdir -p /home/studentorg2/public_html && \
echo "<h1>Welcome to Student Org 2's OCF Page</h1><p>This is a test page.</p>" > /home/studentorg2/public_html/index.html && \
mkdir -p /home/studentorg3/public_html && \
echo "<h1>Welcome to Student Org 3's OCF Page</h1><p>This is a test page.</p>" > /home/studentorg3/public_html/index.html
# Set proper ownership
RUN chown -R www-data:www-data /home
EXPOSE 80
@@ -1,24 +0,0 @@
# Settings for user home directories
<VirtualHost *:80>
UseCanonicalName Off
# Map subdomains like user.ocf.local to /home/user/public_html
VirtualDocumentRoot /home/%1/public_html
ServerAlias *.ocf.local
# Mimics OCF structure where user directories are in /home
<Directory /home/*/public_html>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require all granted
# Allow .htaccess usage for student customization
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
</Directory>
</VirtualHost>
@@ -1,20 +0,0 @@
# Settings for user home directories
#
# Required module: mod_userdir
UserDir /home/*/public_html
#
# Control access to UserDir directories.
# Mimics OCF structure where user directories are in /home
#
<Directory "/home/*/public_html">
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require all granted
# Allow .htaccess usage for student customization
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
</Directory>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-63
View File
@@ -1,63 +0,0 @@
services:
apache:
build:
context: ./apache
ports:
- "8080:80"
volumes:
- userdata1:/home/user1/public_html
- userdata2:/home/user2/public_html
- userdata3:/home/user3/public_html
container_name: apache-static
restart: unless-stopped
db:
image: mariadb:11
container_name: wp_db
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wp_db
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_pass
volumes:
- ./backup2.sql:/docker-entrypoint-initdb.d/backup.sql # CHANGEME to edit different WordPress sites
restart: unless-stopped
wordpress:
image: wordpress:latest
container_name: wordpress_dev_container
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_pass
WORDPRESS_DB_NAME: wp_db
ports:
- "8081:80" # WordPress site -> http://localhost:8081
volumes:
- userdata2:/var/www/html/wp-content # CHANGEME to edit different WordPress sites
restart: unless-stopped
volumes:
# Default user:
# username: admin
# password: GH^*m)qprg7VOZJ(JJ
userdata1:
driver: local
driver_opts:
type: none
device: ${PWD}/userdata1
o: bind
userdata2:
driver: local
driver_opts:
type: none
device: ${PWD}/userdata2
o: bind
userdata3:
driver: local
driver_opts:
type: none
device: ${PWD}/userdata3
o: bind
-19
View File
@@ -1,19 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Local Apache Static Landing</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background:#0f172a; color:#e6eef8; text-align:center; padding-top:8vh; }
h1 { color:#10b981; }
p { color:#cbd5e1; }
a { color:#93c5fd; text-decoration:none; }
</style>
</head>
<body>
<h1>Apache Static Host</h1>
<p>This is the static landing page container.</p>
<p><a href="http://localhost:8081/wp-admin" target="_blank">Open WordPress setup (wp-admin)</a></p>
</body>
</html>
@@ -1,11 +0,0 @@
<?php
define( 'DISABLE_JETPACK_WAF', false );
if ( defined( 'DISABLE_JETPACK_WAF' ) && DISABLE_JETPACK_WAF ) return;
define( 'JETPACK_WAF_MODE', 'silent' );
define( 'JETPACK_WAF_SHARE_DATA', false );
define( 'JETPACK_WAF_SHARE_DEBUG_DATA', false );
define( 'JETPACK_WAF_DIR', '/var/www/html/wp-content/jetpack-waf' );
define( 'JETPACK_WAF_WPCONFIG', '/var/www/html/wp-content/../wp-config.php' );
define( 'JETPACK_WAF_ENTRYPOINT', 'rules/rules.php' );
require_once '/var/www/html/wp-content/plugins/jetpack/vendor/autoload.php';
Automattic\Jetpack\Waf\Waf_Runner::initialize();
@@ -1,4 +0,0 @@
<?php
$waf_allow_list = array (
);
return $waf->is_ip_in_array( $waf_allow_list );
@@ -1 +0,0 @@
<?php
@@ -1,4 +0,0 @@
<?php
$waf_block_list = array (
);
return $waf->is_ip_in_array( $waf_block_list );
@@ -1 +0,0 @@
<?php
@@ -1,83 +0,0 @@
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
/**
* Plugin Name: WooCommerce Analytics - Proxy Speed Module
* Description: Speeds up WooCommerce Analytics' proxy for avoiding ad blockers.
* Plugin URI: https://woocommerce.com
* Author: WooCommerce
* Version: 1.0.0
* Author URI: https://woocommerce.com
*
* Text Domain: woocommerce-analytics
*
* Inspired by: https://github.com/plausible/wordpress/blob/092b97b247f45bf347ae32f9614f20a81d9e10c0/mu-plugin/plausible-proxy-speed-module.php
*/
class WooCommerceAnalyticsProxySpeed {
/**
* Path of the proxy request.
*
* @var string
*/
const PROXY_REQUEST_PATH = 'woocommerce-analytics/v1/track';
/**
* Allowed plugin files for proxy request.
*
* @var array
*/
private $allowed_plugin_files = array( 'woocommerce.php', 'woocommerce-analytics.php', 'jetpack.php' );
/**
* Add filters and actions.
*
* @return void
*/
public function init() {
add_filter( 'option_active_plugins', array( $this, 'filter_active_plugins' ) );
}
/**
* Filter the list of active plugins for custom endpoint requests.
*
* @param array $active_plugins The list of active plugins.
*
* @return array The filtered list of active plugins.
*/
public function filter_active_plugins( $active_plugins ) {
if ( ! $this->is_proxy_request() || ! is_array( $active_plugins ) ) {
return $active_plugins;
}
$filtered_plugins = array();
foreach ( $active_plugins as $plugin ) {
foreach ( $this->allowed_plugin_files as $allowed_plugin_file ) {
if ( strpos( $plugin, $allowed_plugin_file ) !== false ) {
$filtered_plugins[] = $plugin;
break;
}
}
}
return $filtered_plugins;
}
/**
* Helper method to retrieve Request URI. Checks several globals.
*
* @return mixed
*/
private function get_request_uri() {
return isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
/**
* Check if current request is a proxy request.
*
* @return bool
*/
private function is_proxy_request() {
return strpos( $this->get_request_uri(), self::PROXY_REQUEST_PATH ) !== false;
}
}
( new WooCommerceAnalyticsProxySpeed() )->init();
@@ -1,23 +0,0 @@
.dt-duplicate-post-status-info .components-button.is-tertiary.is-link {
color: #ffffff;
background-color: #007cba;
border: 1px solid #007cba;
text-decoration: none;
border-radius: 3px;
padding: 5px 10px 8px;
font-weight: bold;
transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;
-ms-transition: all 0.3s ease;
}
.dt-duplicate-post-status-info .components-button.is-tertiary.is-link:hover{
border-color: #0071a1;
background-color: #0071a1;
transition: all 0.3s ease;
-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;
-ms-transition: all 0.3s ease;
}
@@ -1,90 +0,0 @@
.dpmrs {
width: 100%;
background: #f5f5f5;
border: 1px solid #cdcdcd;
border-left: 4px solid #0073aa;
display: none;
overflow: auto;
}
.dpmrs .l_dpmrs {
width: 200px;
float: left;
}
.dpmrs .l_dpmrs img {
float: left;
padding: 10px;
}
.dpmrs .r_dpmrs {
float: left;
padding: 15px 10px;
}
.close_dp_help {
text-decoration: none;
border-radius: 4px;
padding: 5px 15px;
color: #fff;
font-size: 16px;
margin: 10px;
}
.close_dp_help:hover {
color: #fff !important;
}
.close_dp_help.fm_close_btn {
float: right;
cursor: pointer;
text-decoration: none;
background: #e00e0e;
border-radius: 100%;
padding: 0px 6px;
display: block;
color: #fff;
font-size: 10px;
margin: 0px;
}
.close_dp_help.fm_close_btn_1 {
background: #fbc21c;
border-bottom: 3px solid #b18400;
margin-right: 0px;
margin-left: 0px;
}
.close_dp_help.fm_close_btn_2 {
background: #239200;
border-bottom: 3px solid #155600;
margin-right: 0px;
}
.close_dp_help.fm_close_btn_3 {
background: #ff1105;
border-bottom: 3px solid #b30900;
}
.clear {
clear: both;
}
.duplicate_page_settings .saving-txt {
background: #fff;
padding: 10px 15px;
box-shadow: 0 1px 1px rgb(0 0 0 / 4%);
margin-top: 20px;
border-radius: 3px;
border:1px solid #c3c4c7;
border-left: solid 4px #2271b1;
}
.duplicate_page_settings .settings-error{
margin-bottom: 0;
}
.duplicate_page_settings #poststuff{
padding-top: 0px;
}
.duplicate_page_settings .settings-error.notice{
margin-top: 20px;
margin-bottom: 0px;
}
@@ -1,397 +0,0 @@
<?php
/*
Plugin Name: Duplicate Page
Plugin URI: https://duplicatepro.com/
Description: Duplicate Posts, Pages and Custom Posts using single click.
Author: mndpsingh287
Version: 4.5.6
Author URI: https://profiles.wordpress.org/mndpsingh287/
License: GPLv2
Text Domain: duplicate-page
*/
if (!defined('DUPLICATE_PAGE_PLUGIN_DIRNAME')) {
define('DUPLICATE_PAGE_PLUGIN_DIRNAME', plugin_basename(dirname(__FILE__)));
}
if (!defined('DUPLICATE_PAGE_PLUGIN_VERSION')) {
define('DUPLICATE_PAGE_PLUGIN_VERSION', '4.5.6');
}
if (!class_exists('duplicate_page')):
class duplicate_page
{
/*
* AutoLoad Hooks
*/
public function __construct()
{
$opt = get_option('duplicate_page_options');
register_activation_hook(__FILE__, array(&$this, 'duplicate_page_install'));
add_action('admin_menu', array(&$this, 'duplicate_page_options_page'));
add_filter('plugin_action_links', array(&$this, 'duplicate_page_plugin_action_links'), 10, 2);
add_action('admin_action_dt_duplicate_post_as_draft', array(&$this, 'dt_duplicate_post_as_draft'));
add_filter('post_row_actions', array(&$this, 'dt_duplicate_post_link'), 10, 2);
add_filter('page_row_actions', array(&$this, 'dt_duplicate_post_link'), 10, 2);
if (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'gutenberg') {
add_action('admin_head', array(&$this, 'duplicate_page_custom_button_guten'));
} elseif(isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'all'){
add_action('admin_head', array(&$this, 'duplicate_page_custom_button_guten'));
add_action('post_submitbox_misc_actions', array(&$this, 'duplicate_page_custom_button_classic'));
} else {
add_action('post_submitbox_misc_actions', array(&$this, 'duplicate_page_custom_button_classic'));
}
add_action('wp_before_admin_bar_render', array(&$this, 'duplicate_page_admin_bar_link'));
add_action('init', array(&$this, 'duplicate_page_load_text_domain'));
add_action('wp_ajax_mk_dp_close_dp_help', array($this, 'mk_dp_close_dp_help'));
}
/*
* Localization - 19-dec-2016
*/
public function duplicate_page_load_text_domain()
{
load_plugin_textdomain('duplicate-page', false, DUPLICATE_PAGE_PLUGIN_DIRNAME.'/languages');
}
/*
* Activation Hook
*/
public function duplicate_page_install()
{
$defaultsettings = array(
'duplicate_post_status' => 'draft',
'duplicate_post_redirect' => 'to_list',
'duplicate_post_suffix' => '',
'duplicate_post_editor' => 'classic',
);
$opt = get_option('duplicate_page_options');
if (!isset($opt['duplicate_post_status'])) {
update_option('duplicate_page_options', $defaultsettings);
}
}
/*
Action Links
*/
public function duplicate_page_plugin_action_links($links, $file)
{
if ($file == plugin_basename(__FILE__)) {
$duplicate_page_links = '<a href="'.esc_url(get_admin_url()).'options-general.php?page=duplicate_page_settings">'.__('Settings', 'duplicate-page').'</a>';
$duplicate_page_donate = '<a href="https://www.webdesi9.com/donate/?plugin=duplicate-page" title="'.__('Donate Now','duplicate-page').'" target="_blank" style="font-weight:bold">'.__('Donate', 'duplicate-page').'</a>';
array_unshift($links, $duplicate_page_donate);
array_unshift($links, $duplicate_page_links);
}
return $links;
}
/*
* Admin Menu
*/
public function duplicate_page_options_page()
{
add_options_page(__('Duplicate Page', 'duplicate-page'), __('Duplicate Page', 'duplicate-page'), 'manage_options', 'duplicate_page_settings', array(&$this, 'duplicate_page_settings'));
}
/*
* Duplicate Page Admin Settings
*/
public function duplicate_page_settings()
{
if (current_user_can('manage_options')) {
include 'inc/admin-settings.php';
}
}
/*
* Main function
*/
public function dt_duplicate_post_as_draft()
{
/*
* get Nonce value
*/
$nonce = sanitize_text_field($_REQUEST['nonce']);
/*
* get the original post id
*/
$post_id = (isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post']));
$post = get_post($post_id);
$current_user_id = get_current_user_id();
if(wp_verify_nonce( $nonce, 'dt-duplicate-page-'.$post_id)) {
if (current_user_can('manage_options') || current_user_can('edit_others_posts')) {
$this->duplicate_edit_post($post_id);
}
else if (current_user_can('contributor') && $current_user_id == $post->post_author){
$this->duplicate_edit_post($post_id, 'pending');
}
else if (current_user_can('edit_posts') && $current_user_id == $post->post_author ){
$this->duplicate_edit_post($post_id);
}
else {
wp_die(__('Unauthorized Access.','duplicate-page'));
}
}
else {
wp_die(__('Security check issue, Please try again.','duplicate-page'));
}
}
/**
* Duplicate edit post
*/
public function duplicate_edit_post($post_id,$post_status_update='')
{
global $wpdb;
$opt = get_option('duplicate_page_options');
$suffix = isset($opt['duplicate_post_suffix']) && !empty($opt['duplicate_post_suffix']) ? ' -- '.esc_attr($opt['duplicate_post_suffix']) : '';
if($post_status_update == ''){
$post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft';
}else{
$post_status = $post_status_update;
}
$redirectit = !empty($opt['duplicate_post_redirect']) ? esc_attr($opt['duplicate_post_redirect']) : 'to_list';
if (!(isset($_GET['post']) || isset($_POST['post']) || (isset($_REQUEST['action']) && 'dt_duplicate_post_as_draft' == sanitize_text_field($_REQUEST['action'])))) {
wp_die(__('No post to duplicate has been supplied!','duplicate-page'));
}
$returnpage = '';
/*
* and all the original post data then
*/
$post = get_post($post_id);
/*
* if you don't want current user to be the new post author,
* then change next couple of lines to this: $new_post_author = $post->post_author;
*/
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
/*
* if post data exists, create the post duplicate
*/
if (isset($post) && $post != null) {
/*
* new post data array
*/
$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $new_post_author,
'post_content' => (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'gutenberg') ? wp_slash($post->post_content) : $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => $post_status,
'post_title' => $post->post_title.$suffix,
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order,
);
/*
* insert the post by wp_insert_post() function
*/
$new_post_id = wp_insert_post($args);
if(is_wp_error($new_post_id)){
wp_die(__($new_post_id->get_error_message(),'duplicate-page'));
}
/*
* get all current post terms ad set them to the new post draft
*/
$taxonomies = array_map('sanitize_text_field',get_object_taxonomies($post->post_type));
if (!empty($taxonomies) && is_array($taxonomies)):
foreach ($taxonomies as $taxonomy) {
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
}
endif;
/*
* duplicate all post meta
*/
$post_meta_keys = get_post_custom_keys( $post_id );
if(!empty($post_meta_keys)){
foreach ( $post_meta_keys as $meta_key ) {
$meta_values = get_post_custom_values( $meta_key, $post_id );
foreach ( $meta_values as $meta_value ) {
$meta_value = maybe_unserialize( $meta_value );
update_post_meta( $new_post_id, $meta_key, wp_slash( $meta_value ) );
}
}
}
/**
* Elementor compatibility fixes
*/
if(is_plugin_active( 'elementor/elementor.php' )){
$css = Elementor\Core\Files\CSS\Post::create( $new_post_id );
$css->update();
}
/*
* finally, redirecting to your choice
*/
if ($post->post_type != 'post'){
$returnpage = '?post_type='.$post->post_type;
}
if (!empty($redirectit) && $redirectit == 'to_list'){
wp_redirect(esc_url_raw(admin_url('edit.php'.$returnpage)));
} elseif (!empty($redirectit) && $redirectit == 'to_page'){
wp_redirect(esc_url_raw(admin_url('post.php?action=edit&post='.$new_post_id)));
} else {
wp_redirect(esc_url_raw(admin_url('edit.php'.$returnpage)));
}
exit;
}
else {
wp_die(__('Error! Post creation failed, could not find original post: ','duplicate-page').$post_id);
}
}
/*
* Add the duplicate link to action list for post_row_actions
*/
public function dt_duplicate_post_link($actions, $post)
{
// Skip acf-field-group post type
if($post->post_type == 'acf-field-group'){
return $actions;
}
$opt = get_option('duplicate_page_options');
$post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft';
if (current_user_can('edit_posts')) {
$actions['duplicate'] = isset($post) ? '<a href="admin.php?action=dt_duplicate_post_as_draft&amp;post='.intval($post->ID).'&amp;nonce='.wp_create_nonce( 'dt-duplicate-page-'.intval($post->ID) ).'" title="'.__('Duplicate this as ', 'duplicate-page').$post_status.'" rel="permalink">'.__('Duplicate This', 'duplicate-page').'</a>' : '';
}
return $actions;
}
/*
* Add the duplicate link to edit screen - classic editor
*/
public function duplicate_page_custom_button_classic()
{
global $post;
$opt = get_option('duplicate_page_options');
$post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft';
$html = '<div id="major-publishing-actions">';
$html .= '<div id="export-action">';
$html .= isset($post) ? '<a href="admin.php?action=dt_duplicate_post_as_draft&amp;post='.intval($post->ID).'&amp;nonce='.wp_create_nonce( 'dt-duplicate-page-'.$post->ID ).'" title="'.__('Duplicate this as ','duplicate-page').$post_status.'" rel="permalink">'.__('Duplicate This', 'duplicate-page').'</a>' :'';
$html .= '</div>';
$html .= '</div>';
$content = apply_filters('wpautop', $html);
$content = str_replace(']]>', ']]>', $content);
echo $content;
}
/*
* Add the duplicate link to edit screen - gutenberg
*/
public function duplicate_page_custom_button_guten()
{
global $post;
if ($post) {
$opt = get_option('duplicate_page_options');
$post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft';
if (isset($opt['duplicate_post_editor']) && ($opt['duplicate_post_editor'] == 'gutenberg' || $opt['duplicate_post_editor'] == 'all')) {
wp_enqueue_style('dp-main-style', plugin_dir_url(__FILE__) . 'css/dp_gutenberg.css');
wp_register_script( "dt_duplicate_post_script", plugins_url( '/js/editor-script.js', __FILE__ ), array( 'wp-edit-post', 'wp-plugins', 'wp-i18n', 'wp-element' ), DUPLICATE_PAGE_PLUGIN_VERSION);
wp_localize_script( 'dt_duplicate_post_script', 'dt_params', array(
'dp_post_id' => intval($post->ID),
'dtnonce' => wp_create_nonce( 'dt-duplicate-page-'.intval($post->ID)),
'dp_post_text' => __("Duplicate This",'duplicate-page'),
'dp_post_title'=> __('Duplicate this as ','duplicate-page').$post_status,
'dp_duplicate_link' => "admin.php?action=dt_duplicate_post_as_draft"
)
);
wp_enqueue_script( 'dt_duplicate_post_script' );
}
}
}
/*
* Admin Bar Duplicate This Link
*/
public function duplicate_page_admin_bar_link()
{
global $wp_admin_bar, $post;
$opt = get_option('duplicate_page_options');
$post_status = !empty($opt['duplicate_post_status']) ? esc_attr($opt['duplicate_post_status']) : 'draft';
$current_object = get_queried_object();
if (empty($current_object)) {
return;
}
if (!empty($current_object->post_type)
&& ($post_type_object = get_post_type_object($current_object->post_type))
&& ($post_type_object->show_ui || $current_object->post_type == 'attachment')) {
$wp_admin_bar->add_menu(array(
'parent' => 'edit',
'id' => 'duplicate_this',
'title' => __('Duplicate This as ', 'duplicate-page').$post_status,
'href' => isset($post) ? esc_url_raw(admin_url().'admin.php?action=dt_duplicate_post_as_draft&amp;post='.intval($post->ID).'&amp;nonce='.wp_create_nonce( 'dt-duplicate-page-'.intval($post->ID))) :'',
));
}
}
/*
* Redirect function
*/
public static function dp_redirect($url)
{
$web_url = esc_url_raw($url);
wp_register_script( 'dp-setting-redirect', '');
wp_enqueue_script( 'dp-setting-redirect' );
wp_add_inline_script(
'dp-setting-redirect',
' window.location.href="'.$web_url.'" ;'
);
}
/*
Load Help Desk
*/
public function load_help_desk() {
$mkcontent = '';
$mkcontent .= '<div class="dpmrs" style="display:none;">';
$mkcontent .= '<div class="l_dpmrs">';
$mkcontent .= '';
$mkcontent .= '</div>';
$mkcontent .= '<div class="r_dpmrs">';
$mkcontent .= '<a class="close_dp_help fm_close_btn" href="javascript:void(0)" data-ct="rate_later" title="'.__('close','duplicate-page').'">X</a><strong>'.__('Duplicate Page','duplicate-page').'</strong><p>'.__('We love and care about you. Our team is putting maximum efforts to provide you the best functionalities. It would be highly appreciable if you could spend a couple of seconds to give a Nice Review to the plugin to appreciate our efforts. So we can work hard to provide new features regularly :)','duplicate-page').'</p><a class="close_dp_help fm_close_btn_1" href="javascript:void(0)" data-ct="rate_later" title="'.__('Remind me later','duplicate-page').'">'.__('Later','duplicate-page').'</a> <a class="close_dp_help fm_close_btn_2" href="https://wordpress.org/support/plugin/duplicate-page/reviews/?filter=5" data-ct="rate_now" title="'.__('Rate us now','duplicate-page').'" target="_blank">'.__('Rate Us','duplicate-page').'</a> <a class="close_dp_help fm_close_btn_3" href="javascript:void(0)" data-ct="rate_never" title="'.__('Not interested','duplicate-page').'">'.__('Never','duplicate-page').'</a>';
$mkcontent .= '</div></div>';
if (false === ($mk_dp_close_dp_help_c = get_option('mk_fm_close_fm_help_c'))) {
echo apply_filters('the_content', $mkcontent);
}
}
/*
Close Help
*/
public function mk_dp_close_dp_help() {
$nonce = sanitize_text_field($_REQUEST['nonce']);
if (wp_verify_nonce($nonce, 'nc_help_desk')) {
if (false === ($mk_fm_close_fm_help_c = get_option('mk_fm_close_fm_help_c'))) {
$set = update_option('mk_fm_close_fm_help_c', 'done');
if ($set) {
echo 'ok';
} else {
echo 'oh';
}
} else {
echo 'ac';
}
}else {
echo 'ac';
}
die;
}
/*
Custom Assets
*/
public function custom_assets() {
wp_enqueue_style( 'duplicate-page', plugins_url( '/css/duplicate_page.css', __FILE__ ) );
wp_enqueue_script( 'duplicate-page', plugins_url( '/js/duplicate_page.js', __FILE__ ) );
wp_localize_script( 'duplicate-page', 'dt_params', array(
'ajax_url' => admin_url( 'admin-ajax.php'),
'nonce' => wp_create_nonce( 'nc_help_desk' ))
);
}
}
new duplicate_page();
endif;
@@ -1,90 +0,0 @@
<?php if (!defined('ABSPATH') && !current_user_can('manage_options')) {
exit;
}
$this->custom_assets();
?>
<div class="wrap duplicate_page_settings">
<?php
$this->load_help_desk(); ?>
<h1><?php _e('Duplicate Page Settings ', 'duplicate-page'); ?><a href="https://duplicatepro.com/pro/" target="_blank" class="button button-primary"><?php _e('Buy PRO', 'duplicate-page'); ?></a></h1>
<?php
$msg = isset($_GET['msg']) ? intval($_GET['msg']) : '';
if (current_user_can('manage_options') && isset($_POST['submit_duplicate_page']) && wp_verify_nonce(sanitize_text_field($_POST['duplicatepage_nonce_field']), 'duplicatepage_action')):
_e('<div class="saving-txt"><strong>Saving Please wait...</strong></div>','duplicate-page');
$duplicatepageoptions = array(
"duplicate_post_editor" => sanitize_text_field(htmlentities($_POST["duplicate_post_editor"])),
"duplicate_post_status" => sanitize_text_field(htmlentities($_POST["duplicate_post_status"])),
"duplicate_post_redirect" => sanitize_text_field(htmlentities($_POST["duplicate_post_redirect"])),
"duplicate_post_suffix" => sanitize_text_field(htmlentities($_POST["duplicate_post_suffix"]))
);
$saveSettings = update_option('duplicate_page_options', $duplicatepageoptions);
if ($saveSettings) {
duplicate_page::dp_redirect('options-general.php?page=duplicate_page_settings&msg=1');
} else {
duplicate_page::dp_redirect('options-general.php?page=duplicate_page_settings&msg=2');
}
endif;
$opt = get_option('duplicate_page_options');
if (!empty($msg) && $msg == 1):
_e('<div class="updated settings-error notice is-dismissible" id="setting-error-settings_updated">
<p><strong>Settings saved.</strong></p><button class="notice-dismiss button-custom-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice</span></button></div>','duplicate-page');
elseif (!empty($msg) && $msg == 2):
_e('<div class="error settings-error notice is-dismissible" id="setting-error-settings_updated">
<p><strong>Settings not saved.</strong></p><button class="notice-dismiss button-custom-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice</span></button></div>','duplicate-page');
endif;
?>
<div id="poststuff">
<div id="post-body" class="metabox-holder columns-2">
<div id="post-body-content" style="position: relative;">
<form action="" method="post" name="duplicate_page_form">
<?php wp_nonce_field('duplicatepage_action', 'duplicatepage_nonce_field'); ?>
<table class="form-table">
<tbody>
<tr>
<th scope="row"><label for="duplicate_post_editor"><?php _e('Choose Editor', 'duplicate-page'); ?></label></th>
<td>
<select id="duplicate_post_editor" name="duplicate_post_editor">
<option value="all" <?php echo (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'all') ? "selected = 'selected'" : ''; ?>><?php _e('All Editors', 'duplicate-page'); ?></option>
<option value="classic" <?php echo (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'classic') ? "selected = 'selected'" : ''; ?>><?php _e('Classic Editor', 'duplicate-page'); ?></option>
<option value="gutenberg" <?php echo (isset($opt['duplicate_post_editor']) && $opt['duplicate_post_editor'] == 'gutenberg') ? "selected = 'selected'" : ''; ?>><?php _e('Gutenberg Editor', 'duplicate-page'); ?></option>
</select>
<p><?php _e('Please select which editor you are using.<strong> Default: </strong> Classic Editor', 'duplicate-page'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="duplicate_post_status"><?php _e('Duplicate Post Status', 'duplicate-page'); ?></label></th>
<td>
<select id="duplicate_post_status" name="duplicate_post_status">
<option value="draft" <?php echo($opt['duplicate_post_status'] == 'draft') ? "selected = 'selected'" : ''; ?>><?php _e('Draft', 'duplicate-page'); ?></option>
<option value="publish" <?php echo($opt['duplicate_post_status'] == 'publish') ? "selected = 'selected'" : ''; ?>><?php _e('Publish', 'duplicate-page'); ?></option>
<option value="private" <?php echo($opt['duplicate_post_status'] == 'private') ? "selected = 'selected'" : ''; ?>><?php _e('Private', 'duplicate-page'); ?></option>
<option value="pending" <?php echo($opt['duplicate_post_status'] == 'pending') ? "selected = 'selected'" : ''; ?>><?php _e('Pending', 'duplicate-page'); ?></option>
</select>
<p><?php _e('Please select any post status you want to assign for duplicate post.<strong> Default: </strong> Draft','duplicate-page'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="duplicate_post_redirect"><?php _e('Redirect to after click on <strong>Duplicate This Link</strong>', 'duplicate-page'); ?></label></th>
<td><select id="duplicate_post_redirect" name="duplicate_post_redirect">
<option value="to_list" <?php echo($opt['duplicate_post_redirect'] == 'to_list') ? "selected = 'selected'" : ''; ?>><?php _e('To All Posts List', 'duplicate-page'); ?></option>
<option value="to_page" <?php echo($opt['duplicate_post_redirect'] == 'to_page') ? "selected = 'selected'" : ''; ?>><?php _e('To Duplicate Edit Screen', 'duplicate-page'); ?></option>
</select>
<p><?php _e('Please select any post redirection, redirect you to selected after click on duplicate this link.<strong> Default: </strong>To All Posts List','duplicate-page'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><label for="duplicate_post_suffix"><?php _e('Duplicate Post Suffix', 'duplicate-page'); ?></label></th>
<td>
<input type="text" class="regular-text" value="<?php echo !empty($opt['duplicate_post_suffix']) ? esc_attr($opt['duplicate_post_suffix']) : ''; ?>" id="duplicate_post_suffix" name="duplicate_post_suffix">
<p><?php _e('Add a suffix for duplicate or clone post as Copy, Clone etc. It will show after title.', 'duplicate-page'); ?></p>
</td>
</tr>
</tbody></table>
<p class="submit"><input type="submit" value="<?php _e('Save Changes','duplicate-page'); ?>" class="button button-primary" id="submit" name="submit_duplicate_page"></p>
</form>
</div>
</div>
</div>
</div>
@@ -1,28 +0,0 @@
jQuery(window).on('load',function() {
jQuery('.dpmrs').delay(10000).slideDown('slow');
});
jQuery(document).ready(function () {
jQuery('.close_dp_help').on('click', function (e) {
var what_to_do = jQuery(this).data('ct');
var nonce = dt_params.nonce
jQuery.ajax({
type: "post",
url: dt_params.ajax_url,
data: {
action: "mk_dp_close_dp_help",
what_to_do: what_to_do,
nonce:nonce
},
success: function (response) {
jQuery('.dpmrs').slideUp('slow');
}
});
});
});
jQuery(document).ready(function() {
var admin_page_url = "options-general.php?page=duplicate_page_settings";
window.history.replaceState({}, document.title, admin_page_url);
});
jQuery(document).on('click', '.button-custom-dismiss', function(e) {
jQuery(this).parent().hide();
})
@@ -1,28 +0,0 @@
var el = wp.element.createElement;
var __ = wp.i18n.__;
var registerPlugin = wp.plugins.registerPlugin;
var PluginPostStatusInfo = wp.editPost.PluginPostStatusInfo;
var buttonControl = wp.components.Button;
function dpGutenButton({}) {
return el(
PluginPostStatusInfo,
{
className: 'dt-duplicate-post-status-info'
},
el(
buttonControl,
{
isTertiary: true,
name: 'duplicate_page_link_guten',
isLink: true,
title: dt_params.dp_post_title,
href : dt_params.dp_duplicate_link+"&post="+dt_params.dp_post_id+"&nonce="+dt_params.dtnonce
}, dt_params.dp_post_text
)
);
}
registerPlugin( 'dt-duplicate-post-status-info-plugin', {
render: dpGutenButton
} );
@@ -1,142 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Duplicate Page v Češtině (v2)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-01-12 19:23+0100\n"
"PO-Revision-Date: 2018-02-05 16:32+0530\n"
"Language-Team: LeBaux <lebaux@gmail.com>\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n"
"Last-Translator: Pierre LeBaux (EN>SK>CS) <lebaux@gmail.com>\n"
"Language: cs_CZ\n"
#: admin-settings.php:3
msgid "Duplicate Page Settings"
msgstr "Nastavení duplikátoru obsahu"
#: admin-settings.php:8
msgid "<strong>Saving Please wait...</strong>"
msgstr "<strong>Ukládám nastavení...</strong>"
#: admin-settings.php:27
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" type="
"\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</span></"
"button></div>"
msgstr ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Nastavení uloženo.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Rozumím.</span></button></"
"div>"
#: admin-settings.php:30
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</"
"span></button></div>"
msgstr ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Nastavení nebylo uloženo!</strong></p><button class=\"notice-"
"dismiss\" type=\"button\"><span class=\"screen-reader-text\">Rozumím.</"
"span></button></div>"
#: admin-settings.php:43
msgid "Duplicate Post Status"
msgstr "Stav duplikátu po vytvoření"
#: admin-settings.php:50
msgid ""
"Please select any post status you want to assign for duplicate post. "
"<strong>Default:</strong> Draft."
msgstr ""
"Když se vytvoří duplikát, je potřeba mu nastavit stav publikovaní. "
"<strong>Výchozí:</strong> Koncept"
#: admin-settings.php:54
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr "Kam přesměrovat potom, co se vytvoří <strong>duplikát</strong>"
#: admin-settings.php:56
msgid "To All Posts List"
msgstr "Zůstat kde jste byli"
#: admin-settings.php:57
msgid "To Duplicate Edit Screen"
msgstr "Otevřít duplikát pro editaci"
#: admin-settings.php:59
msgid ""
"Please select any post redirection, redirect you to selected after click on "
"duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
"Co se stane poté, co kliknete na tlačítko duplikovat. <strong>Výchozí:</"
"strong> Zůstat kde jste byli"
#: admin-settings.php:63
msgid "Duplicate Post Suffix"
msgstr "Přípona duplikovaného obsahu"
#: admin-settings.php:66
msgid ""
"Add a suffix for duplicate or clone post as Copy, Clone etc. It will show "
"after title."
msgstr ""
"Zde si můžete zvolit příponu, kterou plugin připojí k názvu duplikované "
"položky. Může zůstat prázdné, nebo například: kopie."
#: admin-settings.php:76
msgid ""
"Contribute some donation, to make plugin more stable. You can pay amount of "
"your choice."
msgstr ""
"Pokud je pro vás tento plugin užitečný, můžete vývojářovi třeba přispět na "
"jedno orosené."
#. Name of the plugin
msgid "Duplicate Page"
msgstr "Duplikátor obsahu"
#. Description of the plugin
msgid "Duplicate Posts, Pages and Custom Posts using single click."
msgstr "Duplikujte Příspěvky, Stránky a Custom Posty jedním kliknutím."
#. URI of the plugin
msgid "https://wordpress.org/plugins/duplicate-page/"
msgstr "https://wordpress.org/plugins/duplicate-page/"
#. Author of the plugin
msgid "mndpsingh287"
msgstr "mndpsingh287"
#. Author URI of the plugin
msgid "https://profiles.wordpress.org/mndpsingh287/"
msgstr "https://profiles.wordpress.org/mndpsingh287/"
#. Post Links
msgid "Duplicate This"
msgstr "Duplikovat"
#. Post Link title (status as draft)
msgid "Duplicate this as draft"
msgstr "Duplikujte to jako koncept"
#. Post Link title (status as publish)
msgid "Duplicate this as publish"
msgstr "Duplikujte to jako publikovat"
#. Post Link title (status as private)
msgid "Duplicate this as private"
msgstr "Duplikujte to jako soukromé"
#. Post Link title (status as pending)
msgid "Duplicate this as pending"
msgstr "Duplikujte to jako čekající"
@@ -1,182 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Duplicate Page\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-16 11:31+0100\n"
"PO-Revision-Date: 2018-11-16 11:32+0100\n"
"Last-Translator: Thorsten Wollenhöfer <thorsten.wollenhoefer@gmail.com>\n"
"Language-Team: Hindi\n"
"Language: de_DE@formal\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.2\n"
#: admin-settings.php:3
msgid "Duplicate Page Settings "
msgstr "Duplicate Page Einstellungen "
#: admin-settings.php:3
msgid "Buy PRO"
msgstr "PRO-Version kaufen"
#: admin-settings.php:8
msgid "<strong>Saving Please wait...</strong>"
msgstr "<strong>Speichern... Bitte warten.</strong>"
#: admin-settings.php:27
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" type="
"\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</span></"
"button></div>"
msgstr ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Einstellungen gespeichert.</strong></p><button class=\"notice-"
"dismiss\" type=\"button\"><span class=\"screen-reader-text\">Meldung "
"ausblenden.</span></button></div>"
#: admin-settings.php:30
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</"
"span></button></div>"
msgstr ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Einstellungen nicht gespeichert.</strong></p><button class="
"\"notice-dismiss\" type=\"button\"><span class=\"screen-reader-text"
"\">Meldung ausblenden.</span></button></div>"
#: admin-settings.php:42
msgid "Duplicate Post Status"
msgstr "Duplicate Post Status"
#: admin-settings.php:45
msgid "Draft"
msgstr "Entwurf"
#: admin-settings.php:46
msgid "Publish"
msgstr "Veröffentlichen"
#: admin-settings.php:47
msgid "Private"
msgstr "Privat"
#: admin-settings.php:48
msgid "Pending"
msgstr "Ausstehend"
#: admin-settings.php:50
msgid ""
"Please select any post status you want to assign for duplicate post. "
"<strong>Default:</strong> Draft."
msgstr ""
"Bitte wählen Sie einen beliebigen Beitragsstatus, den Sie dem duplizierten "
"Beitrag zuweisen wollen. <strong>Standard:</strong> Entwurf."
#: admin-settings.php:54
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr "Weiterleiten nach Klick auf <strong>Diesen Link duplizieren</strong>"
#: admin-settings.php:56
msgid "To All Posts List"
msgstr "Zur Liste mit allen Beiträgen"
#: admin-settings.php:57
msgid "To Duplicate Edit Screen"
msgstr "Zum Duplizieren-Bildschirm-bearbeiten"
#: admin-settings.php:59
msgid ""
"Please select any post redirection, redirect you to selected after click on "
"duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
"Bitte wählen Sie eine beliebige Beitragsweiterleitung aus. Sie werden "
"weitergeleitet, sobald sie auf die Auswahl für das Duplizieren des Links "
"klicken. <strong>Standard:</strong> Zur aktuellen Liste."
#: admin-settings.php:63
msgid "Duplicate Post Suffix"
msgstr "Beitragssuffix duplizieren"
#: admin-settings.php:66
msgid ""
"Add a suffix for duplicate or clone post as Copy, Clone etc. It will show "
"after title."
msgstr ""
"Füge einen Suffix für das Duplizieren oder Klonen eines Beitrags als Kopie, "
"Klon etc hinzu. Dieser wird nach dem Titel angezeigt."
#: admin-settings.php:76
msgid ""
"Contribute some donation, to make plugin more stable. You can pay amount of "
"your choice."
msgstr ""
"Spenden Sie etwas, um das Plugin stabiler zu machen. Sie können den Betrag "
"Ihrer Wahl bestimmen."
#: duplicatepage.php:55
msgid "Settings"
msgstr "Einstellungen"
#: duplicatepage.php:56
msgid "Donate"
msgstr "Spenden"
#. Plugin Name of the plugin/theme
#: duplicatepage.php:67
msgid "Duplicate Page"
msgstr "Seite duplizieren"
#: duplicatepage.php:179 duplicatepage.php:192
msgid "Duplicate This"
msgstr "Seite duplizieren"
#: duplicatepage.php:214
msgid "Duplicate This as "
msgstr "Duplizieren Sie dies als "
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/duplicate-page/"
msgstr "https://wordpress.org/plugins/duplicate-page/"
#. Description of the plugin/theme
msgid "Duplicate Posts, Pages and Custom Posts using single click."
msgstr ""
"Duplizieren Sie Beiträge, Seiten und benutzerdefinierte Beiträge mit einem "
"einzigen Klick."
#. Author of the plugin/theme
msgid "mndpsingh287"
msgstr "mndpsingh287"
#. Author URI of the plugin/theme
msgid "https://profiles.wordpress.org/mndpsingh287/"
msgstr "https://profiles.wordpress.org/mndpsingh287/"
#. Post Link
msgid "Duplicate This"
msgstr "Seite duplizieren"
#. Post Link title (status as draft)
msgid "Duplicate this as draft"
msgstr "Duplizieren Sie dies als Entwurf"
#. Post Link title (status as publish)
msgid "Duplicate this as publish"
msgstr "Duplizieren Sie dies als veröffentlichen"
#. Post Link title (status as private)
msgid "Duplicate this as private"
msgstr "Dupliziere dies als privat"
#. Post Link title (status as pending)
msgid "Duplicate this as pending"
msgstr "Duplizieren Sie dies als ausstehend"
@@ -1,144 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Duplicate Page\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-23 14:05+0100\n"
"PO-Revision-Date: 2018-02-23 14:16+0100\n"
"Language-Team: Hindi\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.11\n"
"Last-Translator: \n"
"Language: fr_FR\n"
#: admin-settings.php:3
msgid "Duplicate Page Settings"
msgstr "Réglages \"DUPLICATE PAGE\""
#: admin-settings.php:8
msgid "<strong>Saving Please wait...</strong>"
msgstr "<strong>Enregistrement, patientez...</strong>"
#: admin-settings.php:27
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" type="
"\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</span></"
"button></div>"
msgstr ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Paramètres enregistrés</strong></p><button class=\"notice-dismiss"
"\" type=\"button\"><span class=\"screen-reader-text\">Fermer la notice</"
"span></button></div>"
#: admin-settings.php:30
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</"
"span></button></div>"
msgstr ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Fermer la notice</span></"
"button></div>"
#: admin-settings.php:43
msgid "Duplicate Post Status"
msgstr "Statut \"DUPLICATE PAGE\""
#: admin-settings.php:50
msgid ""
"Please select any post status you want to assign for duplicate post. "
"<strong>Default:</strong> Draft."
msgstr ""
"Veuillez sélectionner un statut de publication que vous souhaitez attribuer "
"pour une page dubliqué<strong> Par défaut: </ strong> Brouillon."
#: admin-settings.php:54
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr "Rediriger après avoir cliquer sur <strong>Dupliquer ce lien</strong>"
#: admin-settings.php:56
msgid "To All Posts List"
msgstr "Sur la liste de tout les articles"
#: admin-settings.php:57
msgid "To Duplicate Edit Screen"
msgstr "Sur l’écran de duplication"
#: admin-settings.php:59
msgid ""
"Please select any post redirection, redirect you to selected after click on "
"duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
"S'il vous plaît sélectionner chaque redirection d'article, afin de "
"déterminer l’action après avoir cliqué sur dupliquer ce lien. <strong>Par "
"défaut:</strong> Sur la liste de tous les articles"
#: admin-settings.php:63
msgid "Duplicate Post Suffix"
msgstr "Dupliquer le suffixe de l'article"
#: admin-settings.php:66
msgid ""
"Add a suffix for duplicate or clone post as Copy, Clone etc. It will show "
"after title."
msgstr ""
"Ajoute un suffixe lorsque vous dupliquez ou clonez. Il sera mis après le "
"titre"
#: admin-settings.php:76
msgid ""
"Contribute some donation, to make plugin more stable. You can pay amount of "
"your choice."
msgstr ""
"Contribuer à un don, pour rendre le plugin plus stable. Vous pouvez donner "
"le montant de votre choix."
#. Name of the plugin
msgid "Duplicate Page"
msgstr "Dupliquer les Pages"
#. Description of the plugin
msgid "Duplicate Posts, Pages and Custom Posts using single click."
msgstr ""
"Dupliquer les articles, pages, et articles personnalisé juste en cliquant"
#. URI of the plugin
msgid "https://wordpress.org/plugins/duplicate-page/"
msgstr "https://wordpress.org/plugins/duplicate-page/"
#. Author of the plugin
msgid "mndpsingh287"
msgstr "mndpsingh287"
#. Author URI of the plugin
msgid "https://profiles.wordpress.org/mndpsingh287/"
msgstr "https://profiles.wordpress.org/mndpsingh287/"
#. Post Links
msgid "Duplicate This"
msgstr "Dupliquer ceci"
#. Post Link title (status as draft)
msgid "Duplicate this as draft"
msgstr "Dupliquer ceci comme brouillon"
#. Post Link title (status as publish)
msgid "Duplicate this as publish"
msgstr "Dupliquer cela comme publier"
#. Post Link title (status as private)
msgid "Duplicate this as private"
msgstr "Dupliquez cela comme privé"
#. Post Link title (status as pending)
msgid "Duplicate this as pending"
msgstr "Dupliquer cela en attente"
@@ -1,124 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Duplicate Page\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-19 12:43+0000\n"
"PO-Revision-Date: 2016-12-19 12:52+0000\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: Hindi\n"
"Language: hi-IN\n"
"Plural-Forms: nplurals=2; plural=n != 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco - https://localise.biz/"
#: admin-settings.php:3
msgid "Duplicate Page Settings"
msgstr "डुप्लिकेट पृष्ठ सेटिंग"
#: admin-settings.php:8
msgid "<strong>Saving Please wait...</strong>"
msgstr "<strong>सुरक्षित कर रहा है कृपया प्रतीक्षा करें...</strong>"
#: admin-settings.php:27
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice."
"</span></button></div>"
msgstr ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>सेटिंग्स को सहेजा गया।</strong></p><button class=\"notice-"
"dismiss\" type=\"button\"><span class=\"screen-reader-text\">इस नोटिस को "
"खारिज करें।</span></button></div>"
#: admin-settings.php:30
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice."
"</span></button></div>"
msgstr ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>सेटिंग सहेजा नहीं।</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">इस नोटिस को खारिज "
"करें।</span></button></div>"
#: admin-settings.php:43
msgid "Duplicate Post Status"
msgstr "पोस्ट की स्थिति डुप्लिकेट"
#: admin-settings.php:50
msgid ""
"Please select any post status you want to assign for duplicate post. <strong>"
"Default:</strong> Draft."
msgstr ""
"कृपया किसी भी पोस्ट की स्थिति आप दोहरे पद के लिए प्रदान करना चाहते हैं का "
"चयन करें।<strong>चूक:</strong> प्रारूप।"
#: admin-settings.php:54
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr ""
"पर क्लिक करने के बाद पुन: निर्देशित करने के लिए <strong> डुप्लिकेट इस लिंक "
"</ strong>"
#: admin-settings.php:56
msgid "To All Posts List"
msgstr "सभी पदों की सूची के लिए"
#: admin-settings.php:57
msgid "To Duplicate Edit Screen"
msgstr "स्क्रीन संपादित करने के लिए डुप्लिकेट"
#: admin-settings.php:59
msgid ""
"Please select any post redirection, redirect you to selected after click on "
"duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
"कृपया किसी भी पद पुनर्निर्देशन का चयन करें, आप इस लिंक पर क्लिक करने के बाद "
"नकल चयनित करने के लिए भेज दें। <Strong> डिफ़ॉल्ट: </ strong> वर्तमान सूची पर।"
#: admin-settings.php:63
msgid "Duplicate Post Suffix"
msgstr "दोहरे पद प्रत्यय"
#: admin-settings.php:66
msgid ""
"Add a suffix for duplicate or clone post as Copy, Clone etc. It will show "
"after title."
msgstr ""
"कॉपी, क्लोन आदि के रूप में डुप्लिकेट या क्लोन के बाद यह खिताब के बाद दिखाएगा "
"के लिए एक प्रत्यय जोड़ें।"
#: admin-settings.php:76
msgid ""
"Contribute some donation, to make plugin more stable. You can pay amount of "
"your choice."
msgstr ""
"कुछ दान योगदान, प्लगइन अधिक स्थिर बनाने के लिए। आप अपनी पसंद की राशि का "
"भुगतान कर सकते हैं।"
#. Name of the plugin
msgid "Duplicate Page"
msgstr "डुप्लिकेट पृष्ठ"
#. Description of the plugin
msgid "Duplicate Posts, Pages and Custom Posts using single click."
msgstr "डुप्लिकेट पोस्ट, पन्ने और कस्टम पदों सिंगल क्लिक का उपयोग कर"
#. URI of the plugin
msgid "https://wordpress.org/plugins/duplicate-page/"
msgstr ""
#. Author of the plugin
msgid "mndpsingh287"
msgstr ""
#. Author URI of the plugin
msgid "https://profiles.wordpress.org/mndpsingh287/"
msgstr ""
@@ -1,121 +0,0 @@
# This file was generated by WPML
# WPML is a WordPress plugin that can turn any WordPress site into a full featured multilingual content management system.
# https://wpml.org
msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: WPML_EXPORT\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"X-Generator: Poedit 2.0.4\n"
# <div class="wrap duplicate_page_settings">
# <h1><?php _e('Duplicate Page Settings', 'duplicate-page')?></h1>
# <?php $duplicatepageoptions = array();
msgid "Duplicate Page Settings"
msgstr ""
# if(isset($_POST['submit_duplicate_page']) && wp_verify_nonce( $_POST['duplicatepage_nonce_field'], 'duplicatepage_action' )):
# _e("<strong>Saving Please wait...</strong>", 'duplicate-page');
# $needToUnset = array('submit_duplicate_page');//no need to save in Database
msgid "<strong>Saving Please wait...</strong>"
msgstr ""
# if(!empty($msg) && $msg == 1):
# _e( '<div class="updated settings-error notice is-dismissible" id="setting-error-settings_updated">
# <p><strong>Settings saved.</strong></p><button class="notice-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 'duplicate-page');
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \r\n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</span></button></div>"
msgstr ""
# elseif(!empty($msg) && $msg == 2):
# _e( '<div class="error settings-error notice is-dismissible" id="setting-error-settings_updated">
# <p><strong>Settings not saved.</strong></p><button class="notice-dismiss" type="button"><span class="screen-reader-text">Dismiss this notice.</span></button></div>', 'duplicate-page');
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-settings_updated\"> \r\n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice.</span></button></div>"
msgstr ""
# <tr>
# <th scope="row"><label for="duplicate_post_status"><?php _e('Duplicate Post Status', 'duplicate-page')?></label></th>
# <td><select id="duplicate_post_status" name="duplicate_post_status">
msgid "Duplicate Post Status"
msgstr ""
# </select>
# <p><?php _e('Please select any post status you want to assign for duplicate post. <strong>Default:</strong> Draft.', 'duplicate-page')?></p>
# </td>
msgid "Please select any post status you want to assign for duplicate post. <strong>Default:</strong> Draft."
msgstr ""
# <tr>
# <th scope="row"><label for="duplicate_post_redirect"><?php _e('Redirect to after click on <strong>Duplicate This Link</strong>', 'duplicate-page')?></label></th>
# <td><select id="duplicate_post_redirect" name="duplicate_post_redirect">
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr ""
# <td><select id="duplicate_post_redirect" name="duplicate_post_redirect">
# <option value="to_list" <?php echo($opt['duplicate_post_redirect'] == 'to_list' ) ? "selected = 'selected'" : ""; ?>><?php _e('To All Posts List', 'duplicate-page')?></option>
# <option value="to_page" <?php echo($opt['duplicate_post_redirect'] == 'to_page' ) ? "selected = 'selected'" : ""; ?>><?php _e('To Duplicate Edit Screen', 'duplicate-page')?></option>
msgid "To All Posts List"
msgstr ""
# <option value="to_list" <?php echo($opt['duplicate_post_redirect'] == 'to_list' ) ? "selected = 'selected'" : ""; ?>><?php _e('To All Posts List', 'duplicate-page')?></option>
# <option value="to_page" <?php echo($opt['duplicate_post_redirect'] == 'to_page' ) ? "selected = 'selected'" : ""; ?>><?php _e('To Duplicate Edit Screen', 'duplicate-page')?></option>
# </select>
msgid "To Duplicate Edit Screen"
msgstr ""
# </select>
# <p><?php _e('Please select any post redirection, redirect you to selected after click on duplicate this link. <strong>Default:</strong> To current list.', 'duplicate-page')?></p>
# </td>
msgid "Please select any post redirection, redirect you to selected after click on duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
# <tr>
# <th scope="row"><label for="duplicate_post_suffix"><?php _e('Duplicate Post Suffix', 'duplicate-page')?></label></th>
# <td>
msgid "Duplicate Post Suffix"
msgstr ""
# <input type="text" class="regular-text" value="<?php echo !empty($opt['duplicate_post_suffix']) ? $opt['duplicate_post_suffix'] : ''?>" id="duplicate_post_suffix" name="duplicate_post_suffix">
# <p><?php _e('Add a suffix for duplicate or clone post as Copy, Clone etc. It will show after title.', 'duplicate-page')?></p>
# </td>
msgid "Add a suffix for duplicate or clone post as Copy, Clone etc. It will show after title."
msgstr ""
# <div id="submitdiv" class="postbox" style="padding: 6px;">
# <p><strong style="color:#F00"><?php _e('Contribute some donation, to make plugin more stable. You can pay amount of your choice.', 'duplicate-page')?></strong></p>
# <form name="_xclick" action="https://www.paypal.com/yt/cgi-bin/webscr" method="post">
msgid "Contribute some donation, to make plugin more stable. You can pay amount of your choice."
msgstr ""
# if ( $file == plugin_basename( __FILE__ ) ) {
# $duplicate_page_links = '<a href="'.get_admin_url().'options-general.php?page=duplicate_page_settings">'.__('Settings', 'duplicate-page').'</a>';
# $duplicate_page_donate = '<a href="http://www.webdesi9.com/donate/?plugin=duplicate-page" title="Donate Now" target="_blank" style="font-weight:bold">'.__('Donate', 'duplicate-page').'</a>';
msgid "Settings"
msgstr ""
# $duplicate_page_links = '<a href="'.get_admin_url().'options-general.php?page=duplicate_page_settings">'.__('Settings', 'duplicate-page').'</a>';
# $duplicate_page_donate = '<a href="http://www.webdesi9.com/donate/?plugin=duplicate-page" title="Donate Now" target="_blank" style="font-weight:bold">'.__('Donate', 'duplicate-page').'</a>';
# array_unshift( $links, $duplicate_page_donate );
msgid "Donate"
msgstr ""
# public function duplicate_page_options_page(){
# add_options_page( __( 'Duplicate Page', 'duplicate-page' ), __( 'Duplicate Page', 'duplicate-page' ), 'manage_options', 'duplicate_page_settings',array(&$this, 'duplicate_page_settings'));
# }
msgid "Duplicate Page"
msgstr ""
# if (current_user_can('edit_posts')) {
# $actions['duplicate'] = '<a href="admin.php?action=dt_duplicate_post_as_draft&amp;post=' . $post->ID . '" title="Duplicate this as '.$post_status.'" rel="permalink">'.__( "Duplicate This", "duplicate-page" ).'</a>';
# }
msgid "Duplicate This"
msgstr ""
@@ -1,125 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: Duplicate Page\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-19 12:43+0000\n"
"PO-Revision-Date: 2016-12-19 12:52+0000\n"
"Last-Translator: admin <munishthedeveloper48@gmail.com>\n"
"Language-Team: Hindi\n"
"Language: hi-IN\n"
"Plural-Forms: nplurals=2; plural=n != 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Loco - https://localise.biz/"
#: admin-settings.php:3
msgid "Duplicate Page Settings"
msgstr "डुप्लिकेट पृष्ठ सेटिंग"
#: admin-settings.php:8
msgid "<strong>Saving Please wait...</strong>"
msgstr "<strong>सुरक्षित कर रहा है कृपया प्रतीक्षा करें...</strong>"
#: admin-settings.php:27
msgid ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>Settings saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice."
"</span></button></div>"
msgstr ""
"<div class=\"updated settings-error notice is-dismissible\" id=\"setting-"
"error-settings_updated\"> \n"
"<p><strong>सेटिंग्स को सहेजा गया।</strong></p><button class=\"notice-"
"dismiss\" type=\"button\"><span class=\"screen-reader-text\">इस नोटिस को "
"खारिज करें।</span></button></div>"
#: admin-settings.php:30
msgid ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>Settings not saved.</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">Dismiss this notice."
"</span></button></div>"
msgstr ""
"<div class=\"error settings-error notice is-dismissible\" id=\"setting-error-"
"settings_updated\"> \n"
"<p><strong>सेटिंग सहेजा नहीं।</strong></p><button class=\"notice-dismiss\" "
"type=\"button\"><span class=\"screen-reader-text\">इस नोटिस को खारिज "
"करें।</span></button></div>"
#: admin-settings.php:43
msgid "Duplicate Post Status"
msgstr "पोस्ट की स्थिति डुप्लिकेट"
#: admin-settings.php:50
msgid ""
"Please select any post status you want to assign for duplicate post. <strong>"
"Default:</strong> Draft."
msgstr ""
"कृपया किसी भी पोस्ट की स्थिति आप दोहरे पद के लिए प्रदान करना चाहते हैं का "
"चयन करें।<strong>चूक:</strong> प्रारूप।"
#: admin-settings.php:54
msgid "Redirect to after click on <strong>Duplicate This Link</strong>"
msgstr ""
"पर क्लिक करने के बाद पुन: निर्देशित करने के लिए <strong> डुप्लिकेट इस लिंक "
"</ strong>"
#: admin-settings.php:56
msgid "To All Posts List"
msgstr "सभी पदों की सूची के लिए"
#: admin-settings.php:57
msgid "To Duplicate Edit Screen"
msgstr "स्क्रीन संपादित करने के लिए डुप्लिकेट"
#: admin-settings.php:59
msgid ""
"Please select any post redirection, redirect you to selected after click on "
"duplicate this link. <strong>Default:</strong> To current list."
msgstr ""
"कृपया किसी भी पद पुनर्निर्देशन का चयन करें, आप इस लिंक पर क्लिक करने के बाद "
"नकल चयनित करने के लिए भेज दें। <Strong> डिफ़ॉल्ट: </ strong> वर्तमान सूची पर।"
#: admin-settings.php:63
msgid "Duplicate Post Suffix"
msgstr "दोहरे पद प्रत्यय"
#: admin-settings.php:66
msgid ""
"Add a suffix for duplicate or clone post as Copy, Clone etc. It will show "
"after title."
msgstr ""
"कॉपी, क्लोन आदि के रूप में डुप्लिकेट या क्लोन के बाद यह खिताब के बाद दिखाएगा "
"के लिए एक प्रत्यय जोड़ें।"
#: admin-settings.php:76
msgid ""
"Contribute some donation, to make plugin more stable. You can pay amount of "
"your choice."
msgstr ""
"कुछ दान योगदान, प्लगइन अधिक स्थिर बनाने के लिए। आप अपनी पसंद की राशि का "
"भुगतान कर सकते हैं।"
#. Name of the plugin
msgid "Duplicate Page"
msgstr "डुप्लिकेट पृष्ठ"
#. Description of the plugin
msgid "Duplicate Posts, Pages and Custom Posts using single click."
msgstr "डुप्लिकेट पोस्ट, पन्ने और कस्टम पदों सिंगल क्लिक का उपयोग कर"
#. URI of the plugin
msgid "https://wordpress.org/plugins/duplicate-page/"
msgstr ""
#. Author of the plugin
msgid "mndpsingh287"
msgstr ""
#. Author URI of the plugin
msgid "https://profiles.wordpress.org/mndpsingh287/"
msgstr ""
#. Post link
msgid "Duplicate This"
msgstr ""
#. Post Link title (status as draft)
msgid "Duplicate this as draft"
msgstr ""
#. Post Link title (status as publish)
msgid "Duplicate this as publish"
msgstr ""
#. Post Link title (status as private)
msgid "Duplicate this as private"
msgstr ""
#. Post Link title (status as pending)
msgid "Duplicate this as pending"
msgstr ""
@@ -1,242 +0,0 @@
=== Duplicate Page ===
Contributors: mndpsingh287
Tags: Page Duplicate, Post duplicate, duplicate custom posts, duplicate page, duplicate post, duplicate ,custom posts, post, page, duplicate this, duplicate, content duplicate, duplicate content, data duplicate, duplicate data, copy page, clone page,wordpress page duplicate, wordpress post duplicate, Copy post, wordpress page duplicator, wordpress post duplicator, Cloner, duplicate post
Requires at least: 3.4
Tested up to: 6.8.3
Stable tag: 4.5.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Duplicate Posts, Pages and Custom Posts easily using single click
== Description ==
Duplicate Posts, Pages and Custom Posts easily using single click. You can duplicate your pages, posts and custom post by just one click and it will save as your selected options (draft, private, public, pending).
= Key Features in Duplicate Page Pro Editions =
* **User Roles:** Allow User Roles To access Duplicate Page.
* **Post Types:** Filter to show Duplicate Page link in post types.
* **Clone Link Location:** Option where to show clone link.
* **Status:** Option to select Duplicate Posts Status.
* **Redirection:** Option to Redirect after click on clone link..
* **Clone Link Title:** Option to change Duplicate Post Link Title.
* **Post Prefix:** Option to add Post Prefix.
* **Post Suffix:** Option to add Post Suffix.
* **Editor**: And Many More Filters and Features.
> <strong>[Buy Pro Version](https://duplicatepro.com/pro/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=Duplicate%20Page%20Pro)</strong> with various features & support.
> <strong>[Contact us](https://duplicatepro.com/contact/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=Duplicate%20Page%20Pro)</strong> for Support Only Pro Version Users.
**[Upgrade to Pro Version](https://duplicatepro.com/pro/?utm_source=Wordpress.org&utm_medium=Website&utm_campaign=Duplicate%20Page%20Pro)**
https://www.youtube.com/watch?v=Fj8BHxvebXs&feature=youtu.be
== Installation ==
1. Upload the `duplicate-page` folder to the directory `/wp-content/plugins/`.
2. Activate the plugin using the 'Plugins' menu in WordPress.
== Frequently asked questions ==
## How to use
1. First Activate Plugin.
2. Go Select to Duplicate Page settings Menu from Settings Tab and savings settings.
1. Then Create New Post/Page or Use old.
2. After click on duplicate this link, then duplicate post/ page will be created and saved as draft,publish,pending,private depending upon settings.
== Screenshots ==
1. Activate Screen
2. Duplicate Page Settings Screen
3. Select Option from Settings Page.
4. Click on Duplicate This.
5. Duplicate Post / Page will Appear.
== Changelog ==
= 4.5.6 (16th Oct, 2025) =
* Compatible with WordPress 6.8.3
= 4.5.5 (9th June, 2025) =
* Compatible with WordPress 6.8.1
= 4.5.4 (29th July, 2024) =
* Compatible with WordPress 6.6.1
= 4.5.3(11th Sept, 2023)
* Compatible with wordpress 6.3.1
= 4.5.2(4th May, 2023)
* Compatible with wordpress 6.2
= 4.5.1(8th Feb, 2023)
* Fixes compatibility issues with event calendar plugin.
* Minor bug fixes
= 4.5(14th Dec, 2022)
* Checked compatibility with wordpress v6.1.1
* Fixes elementor sections compatibility issue
= 4.4.9(15th Jul, 2022)
* Checked compatibility with wordpress v6.0.1
= 4.4.8(27th Jan, 2022)
* Checked compatibility with wordpress v5.9
= 4.4.7(16th Dec, 2021)
* Added editor role check
= 4.4.6(7th Dec, 2021)
* Fixed security issues.
= 4.4.5(29th Sep, 2021)
* Fixed the issue for content HTML displaying in the sidebar.
= 4.4.4(16th Sep, 2021)
* Fixed sanitization Issues as per wordpress standards.
= 4.4.3(8th Sep, 2021)
* Updated code sanitization process for secure data submission
= 4.4.2(6th Sep, 2021)
* Added sanitization as per wordpress standards.
= 4.4.1(27th July, 2021) =
* Checked compatibility with wordpress v5.8
* Fixed php warnings
= 4.4(18th Mar, 2021) =
* Tested upto wordpress v5.7
= 4.3(28th Aug, 2020) =
* Tested with wordpress v5.5
= 4.2(26th March, 2020) =
* Fixed Translations string issue
= 4.1(20th Feb, 2020) =
* Fixed Translations issue
= 4.0(20th Sep, 2019) =
* Fixed slug duplication issue
= 3.9 (6th Aug, 2019) =
* Fixed some compatibility issues
= 3.8 (18th July, 2019) =
* Fixed compatibility issues with GT3 editor
= 3.7 (18th July, 2019) =
* Fixed compatibility issues with other editors
= 3.6 (16th July, 2019) =
* Security fixes addressed by wordpress
= 3.5 (2nd Apr, 2019) =
* Gutenberg and advanced custom fields compatibility
= 3.4 (1st Apr, 2019) =
* Security issues fixes addressed by Securi
= 3.3 (14th March, 2019) =
* Compatible with WordPress 5.1.1
= 3.2 (25th Dec, 2018) =
* Gutenberg Compatible
= 3.1 (5th Dec, 2018) =
* removed nag
= 3.0 (3rd Dec, 2018) =
* German Formal lang added
= 2.9 (16th Nov, 2018) =
* Minor bug fixes
= 2.8 (20th Oct, 2018) =
* Compatible with php 7.3 and wordpress 5.0
= 2.7 (28th July, 2018) =
* removed useless adsense code
= 2.6 (24th March, 2018) =
* Added signup popup and minor fixes.
= 2.5 (5th Feb, 2018) =
* Translations issue resolve.
= 2.4 (29th Nov, 2017) =
* Duplicate Page appends original post name issue fixed.
= 2.3 (27st april, 2017) =
* Minor Fixes
= 2.2 (28th Jan, 2017) =
* Strings Translations
= 2.1 (25th Aug, 2016) =
* New Text field added in settings page for duplicate post title suffix to remove confusion of currently duplicate page.
= 1.4 (18th Jun, 2016) =
* New Features added
= 1.3 (23th May, 2016) =
* New Features added
= 1.2 (05th May, 2016) =
* Duplicate Page Settings Menu Added.
= 1.1 (04th May ,2016) =
* fix some Bug in 1.0
== Other Notes ==
== Minimum requirements for Duplicate Page ==
* Wordpress 3.3+
* PHP 5.x
* MySQL 5.x
@@ -1 +0,0 @@
.block-editor__container .googlesitekit-rrm-settings-panel .googlesitekit-rrm-panel__select-control label{text-transform:none;white-space:normal}
@@ -1 +0,0 @@
.googlesitekit-blocks-reader-revenue-manager-button{align-items:center;background-color:#fff;border:1px solid #dadce0;border-radius:4px;color:#1a73e8;display:flex;font-family:"Google Sans",Roboto-Regular,sans-serif,arial;font-size:14px;font-weight:500;justify-content:center;letter-spacing:.014px;outline:0;padding:12px 34px}.googlesitekit-blocks-reader-revenue-manager-button svg{margin-right:8px}.googlesitekit-blocks-reader-revenue-manager-button.googlesitekit-blocks-reader-revenue-manager-button--disabled{filter:grayscale(100%);opacity:.5}
@@ -1,14 +0,0 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "google-site-kit/rrm-contribute-with-google",
"version": "1.164.0",
"title": "Contribute with Google",
"category": "widgets",
"icon": "google",
"description": "Allow users to make voluntary contributions using Reader Revenue Manager.",
"textdomain": "google-site-kit",
"supports": {
"inserter": true
}
}
@@ -1,14 +0,0 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "google-site-kit/rrm-subscribe-with-google",
"version": "1.164.0",
"title": "Subscribe with Google",
"category": "widgets",
"icon": "google",
"description": "Allow users to subscribe using Reader Revenue Manager to access content behind a paywall.",
"textdomain": "google-site-kit",
"supports": {
"inserter": true
}
}
@@ -1,11 +0,0 @@
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 2,
"name": "google-site-kit/sign-in-with-google",
"version": "1.164.0",
"title": "Sign in with Google",
"category": "widgets",
"icon": "google",
"description": "Allow users to sign in to your site using their Google Account.",
"textdomain": "google-site-kit"
}
@@ -1 +0,0 @@
.googlesitekit-blocks-sign-in-with-google{max-width:180px;min-width:120px}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
.authorize-application-php{background-color:#fff}.authorize-application-php .wrap{margin:30px 0 0}.authorize-application-php .wrap h1{font-size:24px;line-height:32px;padding:0}.authorize-application-php .auth-app-card{border:none;margin:37px 0 0;padding:0}.authorize-application-php .auth-app-card p{font-size:14px;font-weight:500;line-height:20px;margin:19px 0 20px}.authorize-application-php .title{font-size:18px;font-weight:500;line-height:24px}.authorize-application-php strong{font-weight:500}.authorize-application-php .form-field{margin:20px 0 40px;max-width:512px}.authorize-application-php .form-field label{color:#1f1f1f;font-size:12px;font-weight:500;line-height:16px}.authorize-application-php .form-field input{border:1px solid #747775;border-radius:8px;color:#1f1f1f;font-size:14px;line-height:20px;margin:8px 0 0;padding:12px 16px;width:100%}.authorize-application-php .description{color:#1f1f1f;font-size:12px;line-height:16px}.authorize-application-php .description strong{display:block;margin:9px 0 0;max-width:512px}.authorize-application-php .description code{background-color:#ededed;border-radius:4px;color:#1f1f1f;display:inline-block;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:16px;padding:4px 9px}.authorize-application-php .googlesitekit-authorize-application__footer{display:none}@media(min-width: 783px){.authorize-application-php .googlesitekit-authorize-application__footer{bottom:0;display:block;left:0;line-height:32px;margin-left:36px;padding:0 47px;position:absolute}.authorize-application-php .googlesitekit-authorize-application__footer p{color:#1f1f1f;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;font-weight:500;line-height:20px;margin:19px 0 20px}}@media(min-width: 961px){.authorize-application-php .googlesitekit-authorize-application__footer{margin-left:160px}}html[dir=rtl] .googlesitekit-authorize-application__footer{left:auto;margin-right:36px;right:0}@media(min-width: 961px){html[dir=rtl] .googlesitekit-authorize-application__footer{margin-right:160px}}#wpbody-content{padding-bottom:100px}@media(max-width: 782px){.auto-fold #wpcontent{padding:0 26px}}#wpcontent,#wpfooter{color:#1f1f1f;font-family:"Google Sans Text","Helvetica Neue",Helvetica,Arial,sans-serif}@media(min-width: 783px){#wpcontent,#wpfooter{padding:0 47px}}#wpbody-content a,#wpfooter a{color:#1a73e8}#wpfooter{bottom:45px}#approve,#reject{border-radius:100px;font-size:14px;font-weight:500;line-height:20px;margin:0 0 15px;padding:10px 24px}#approve{background-color:#0b57d0;border:none;color:#fff}#approve:hover{box-shadow:0 0 0 1000px rgba(255,255,255,.08) inset}#approve:focus{box-shadow:0 0 0 1000px rgba(255,255,255,.12) inset}#reject{background-color:#fff;border:1px solid #747775;color:#0b57d0}#reject:hover{box-shadow:0 0 0 1000px rgba(11,87,208,.08) inset}#reject:focus{border:1px solid #0b57d0;box-shadow:0 0 0 1000px rgba(11,87,208,.12) inset}#description-approve{border-bottom:1px solid #c4c7c5;margin:0 0 33px;padding:0 0 31px}#description-reject{margin:0 0 8px}#footer-thankyou{font-size:12px;line-height:16px}
@@ -1 +0,0 @@
"use strict";(globalThis.__googlesitekit_webpackJsonp=globalThis.__googlesitekit_webpackJsonp||[]).push([[146],{6146:(e,t,r)=>{r.r(t),r.d(t,{default:()=>__WEBPACK_DEFAULT_EXPORT__});var l,a,i,n,o,c,s,h=r(63696);function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var l in r)({}).hasOwnProperty.call(r,l)&&(e[l]=r[l])}return e},f.apply(null,arguments)}const __WEBPACK_DEFAULT_EXPORT__=e=>h.createElement("svg",f({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 169 95"},e),l||(l=h.createElement("g",{filter:"url(#ghost-card-red_svg__a)"},h.createElement("rect",{width:165,height:90,fill:"#fff",rx:11}),h.createElement("rect",{width:164,height:89,x:.5,y:.5,stroke:"#EBEEF0",rx:10.5}))),a||(a=h.createElement("rect",{width:25,height:8,x:16,y:16,fill:"#EBEEF0",rx:4})),i||(i=h.createElement("rect",{width:50,height:20,x:16,y:33,fill:"#FFDED3",rx:10})),n||(n=h.createElement("rect",{width:133,height:8,x:16,y:68,fill:"#EBEEF0",rx:4})),o||(o=h.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m24.997 40 6.594 6.593m0 0 .073-5.201m-.073 5.201-5.202.074"})),c||(c=h.createElement("rect",{width:20,height:6,x:38,y:40,fill:"#fff",rx:2})),s||(s=h.createElement("defs",null,h.createElement("filter",{id:"ghost-card-red_svg__a",width:169,height:95,x:0,y:0,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},h.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),h.createElement("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),h.createElement("feOffset",{dx:4,dy:5}),h.createElement("feComposite",{in2:"hardAlpha",operator:"out"}),h.createElement("feColorMatrix",{values:"0 0 0 0 0.921569 0 0 0 0 0.933333 0 0 0 0 0.941176 0 0 0 1 0"}),h.createElement("feBlend",{in2:"BackgroundImageFix",result:"effect1_dropShadow_4824_80809"}),h.createElement("feBlend",{in:"SourceGraphic",in2:"effect1_dropShadow_4824_80809",result:"shape"})))))}}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
"use strict";(globalThis.__googlesitekit_webpackJsonp=globalThis.__googlesitekit_webpackJsonp||[]).push([[909],{4290:(e,t,r)=>{r.r(t),r.d(t,{default:()=>__WEBPACK_DEFAULT_EXPORT__});var l,a,n,i,o,c,s,h=r(63696);function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var l in r)({}).hasOwnProperty.call(r,l)&&(e[l]=r[l])}return e},f.apply(null,arguments)}const __WEBPACK_DEFAULT_EXPORT__=e=>h.createElement("svg",f({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 169 95"},e),l||(l=h.createElement("g",{filter:"url(#ghost-card-green_svg__a)"},h.createElement("rect",{width:165,height:90,fill:"#fff",rx:11}),h.createElement("rect",{width:164,height:89,x:.5,y:.5,stroke:"#EBEEF0",rx:10.5}))),a||(a=h.createElement("rect",{width:64,height:8,x:16,y:16,fill:"#EBEEF0",rx:4})),n||(n=h.createElement("path",{fill:"#B8E6CA",d:"M16 43c0-5.523 4.477-10 10-10h30c5.523 0 10 4.477 10 10s-4.477 10-10 10H26c-5.523 0-10-4.477-10-10"})),i||(i=h.createElement("rect",{width:133,height:8,x:16,y:68,fill:"#EBEEF0",rx:4})),o||(o=h.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"m25 46.667 6.593-6.594m0 0L26.392 40m5.201.073.074 5.202"})),c||(c=h.createElement("rect",{width:20,height:6,x:38,y:40,fill:"#fff",rx:2})),s||(s=h.createElement("defs",null,h.createElement("filter",{id:"ghost-card-green_svg__a",width:169,height:95,x:0,y:0,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},h.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),h.createElement("feColorMatrix",{in:"SourceAlpha",result:"hardAlpha",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"}),h.createElement("feOffset",{dx:4,dy:5}),h.createElement("feComposite",{in2:"hardAlpha",operator:"out"}),h.createElement("feColorMatrix",{values:"0 0 0 0 0.921569 0 0 0 0 0.933333 0 0 0 0 0.941176 0 0 0 1 0"}),h.createElement("feBlend",{in2:"BackgroundImageFix",result:"effect1_dropShadow_4824_80823"}),h.createElement("feBlend",{in:"SourceGraphic",in2:"effect1_dropShadow_4824_80823",result:"shape"})))))}}]);
@@ -1 +0,0 @@
(()=>{"use strict";var t={};function e(t,e){const o=t.matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||function(t){const e=(this.document||this.ownerDocument).querySelectorAll(t);let o=e.length;for(;--o>=0&&e.item(o)!==this;);return o>-1};return!!o&&o.call(t,e)}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();const o=window._googlesitekitAnalyticsTrackingData||[];Array.isArray(o)&&function(o){const n=[];o.forEach(o=>{function c(t){var n,c;("DOMContentLoaded"===o.on||e(t.target,o.selector)||e(t.target,o.selector.concat(" *")))&&(n=o.action,c=o.metadata,window.gtag("event",n,c||void 0))}t.g.document.addEventListener(o.on,c,!0),n.push([o.on,c,!0])})}(o)})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,23 +0,0 @@
"use strict";(globalThis.__googlesitekit_webpackJsonp=globalThis.__googlesitekit_webpackJsonp||[]).push([[101],{2522:(t,e,n)=>{n.d(e,{D:()=>o});var r=n(32091),i=n.n(r);function o(t,{dateRangeLength:e}){i()(Array.isArray(t),"report must be an array to partition."),i()(Number.isInteger(e)&&e>0,"dateRangeLength must be a positive integer.");const n=-1*e;return{currentRange:t.slice(n),compareRange:t.slice(2*n,n)}}},8143:(t,e,n)=>{n.d(e,{VZ:()=>o,dc:()=>s,pH:()=>i,r0:()=>a});var r=n(84024);function i(t){try{return new URL(t).pathname}catch{}return null}function o(t,e){try{return new URL(e,t).href}catch{}return("string"==typeof t?t:"")+("string"==typeof e?e:"")}function s(t){return"string"!=typeof t?t:t.replace(/^https?:\/\/(www\.)?/i,"").replace(/\/$/,"")}function a(t,e){if(!(0,r.m)(t))return t;if(t.length<=e)return t;const n=new URL(t),i=t.replace(n.origin,"");if(i.length<e)return i;const o=i.length-Math.floor(e)+1;return"…"+i.substr(o)}},12850:(t,e,n)=>{n.d(e,{tt:()=>S,Jg:()=>D,Gp:()=>_,GH:()=>v,r0:()=>N,Du:()=>I,Zf:()=>V,Cn:()=>T,G7:()=>h,vH:()=>p,N_:()=>R,zh:()=>z,mK:()=>l.mK,Ql:()=>$,vY:()=>K,sq:()=>E,VZ:()=>C.VZ,JK:()=>l.JK,IS:()=>j,pH:()=>C.pH,kf:()=>B,O5:()=>M,Qr:()=>L,x6:()=>U,K5:()=>l.K5,S_:()=>m,dc:()=>C.dc,Eo:()=>l.Eo,jq:()=>l.jq,DK:()=>J.D,N9:()=>H,p9:()=>o.p,XH:()=>O,Zm:()=>c,sx:()=>i.sx,BI:()=>i.BI,CZ:()=>o.C,BG:()=>Z});var r=n(17243),i=n(89318),o=n(82046),s=n(10523),a=n.n(s);function c(t){return a()(JSON.stringify(u(t)))}function u(t){const e={};return Object.keys(t).sort().forEach(n=>{let r=t[n];r&&"object"==typeof r&&!Array.isArray(r)&&(r=u(r)),e[n]=r}),e}var l=n(79829);function g(t){return t.replace(new RegExp("\\[([^\\]]+)\\]\\((https?://[^/]+\\.\\w+/?.*?)\\)","gi"),'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>')}function f(t){return`<p>${t.replace(/\n{2,}/g,"</p><p>")}</p>`}function d(t){return t.replace(/\n/gi,"<br>")}function m(t){const e=[g,f,d];let n=t;for(const t of e)n=t(n);return n}function p(t){return t=parseFloat(t),isNaN(t)||0===t?[0,0,0,0]:[Math.floor(t/60/60),Math.floor(t/60%60),Math.floor(t%60),Math.floor(1e3*t)-1e3*Math.floor(t)]}function h(t){const e=t&&!Number.isInteger(t)?new Date(t).getTime():t;return isNaN(e)||!e?0:e}var y=n(32091),b=n.n(y),k=n(82871);const w="Date param must construct to a valid date instance or be a valid date instance itself.",v="Invalid dateString parameter, it must be a string.",_='Invalid date range, it must be a string with the format "last-x-days".',N=60,D=60*N,S=24*D,I=7*S;function $(){function t(t){return(0,k.sprintf)(/* translators: %s: number of days */ /* translators: %s: number of days */
(0,k._n)("Last %s day","Last %s days",t,"google-site-kit"),t)}return{"last-7-days":{slug:"last-7-days",label:t(7),days:7},"last-14-days":{slug:"last-14-days",label:t(14),days:14},"last-28-days":{slug:"last-28-days",label:t(28),days:28},"last-90-days":{slug:"last-90-days",label:t(90),days:90}}}function L(t=""){if(!(0,r.isString)(t))return!1;if(3!==t.split("-").length)return!1;const e=new Date(t);return(0,r.isDate)(e)&&!isNaN(e)}function E(t){b()((0,r.isDate)(t)&&!isNaN(t),w);const e=`${t.getMonth()+1}`,n=`${t.getDate()}`;return[t.getFullYear(),e.length<2?`0${e}`:e,n.length<2?`0${n}`:n].join("-")}function O(t){b()(L(t),v);const[e,n,r]=t.split("-");return new Date(e,n-1,r)}function j(t,e){return E(R(t,e*S))}function M(t){const e=t.split("-");return 3===e.length&&"last"===e[0]&&!Number.isNaN(e[1])&&!Number.isNaN(parseFloat(e[1]))&&"days"===e[2]}function R(t,e){b()(L(t)||(0,r.isDate)(t)&&!isNaN(t),v);const n=L(t)?Date.parse(t):t.getTime();return new Date(n-1e3*e)}var x=n(69743),A=n(94552),F=n(62540);function K(t,e={}){if(Number.isNaN(Number(t)))return"";const{invertColor:n=!1}=e;return(0,x.Ay)((0,F.jsx)(A.A,{direction:t>0?"up":"down",invertColor:n}))}function T(t,e){return t>0&&e>0?t/e-1:t>0?1:e>0?-1:0}var C=n(8143);function U(t){const e=parseFloat(t)||0;return!!Number.isInteger(e)&&e>0}function B(t){if("number"==typeof t)return!0;const e=(t||"").toString();return!!e&&!isNaN(e)}function H(t){return Array.isArray(t)?[...t].sort():t}var J=n(2522);function V(t,e){function n(t){return"0"===t||0===t}if(n(t)&&n(e))return 0;if(n(t)||Number.isNaN(t))return null;const r=(e-t)/t;return Number.isNaN(r)||!Number.isFinite(r)?null:r}function Z(t){try{return JSON.parse(t)&&!!t}catch(t){return!1}}function z(t){if(!t)return"";const e=t.replace(/&#(\d+);/g,(t,e)=>String.fromCharCode(e)).replace(/(\\)/g,"");return(0,r.unescape)(e)}},15210:(t,e,n)=>{n.d(e,{O:()=>i});var r=n(31234);const i=n.n(r)()(n.g)},24558:(t,e,n)=>{n.d(e,{Ax:()=>o,CZ:()=>l,Ej:()=>N,Gw:()=>D,Is:()=>s,KK:()=>f,Nn:()=>I,OT:()=>v,SH:()=>w,Y$:()=>d,ZS:()=>a,bg:()=>h,en:()=>_,ep:()=>p,f7:()=>i,hi:()=>m,jU:()=>r,k$:()=>b,kz:()=>S,ly:()=>c,mo:()=>y,s3:()=>k,uR:()=>u,zx:()=>g});const r="mainDashboard",i="entityDashboard",o="mainDashboardViewOnly",s="entityDashboardViewOnly",a="userInput",c="activation",u="splash",l="adminBar",g="adminBarViewOnly",f="settings",d="adBlockingRecovery",m="wpDashboard",p="wpDashboardViewOnly",h="moduleSetup",y="metricSelection",b="wpBlockEditor",k="keyMetricsSetup",w="key-metrics",v="traffic",_="content",N="speed",D="monetization",S=[r,i,o,s,a,u,f,h,y],I=[o,s,g,p]},50539:t=>{t.exports=googlesitekit.data},65214:(t,e,n)=>{n.d(e,{G:()=>i,t:()=>r});const r=new Set(n.g?._googlesitekitBaseData?.enabledFeatures||[]);function i(t,e=r){return e instanceof Set&&e.has(t)}},71715:(t,e,n)=>{var r=n(12850),i=n(50539),o=n(24558);!function(t){const e=function(t){const e=new Map,n=(0,i.subscribe)(()=>{(0,i.select)("core/block-editor").getInserterItems().filter(({id:e})=>t.includes(e)).forEach(({id:t,title:n})=>e.set(t,n)),e.size===t.length&&n()});return function(t){return e.get(t)}}(t),n=new Set((0,i.select)("core/block-editor").getBlocks().map(t=>t.clientId));(0,i.subscribe)(()=>{(0,i.select)("core/block-editor").getBlocks().forEach(s=>{const{clientId:a,name:c}=s;t.includes(c)&&!n.has(a)&&(0,i.select)("core/block-editor").isBlockSelected(a)&&(0,r.sx)(`${o.k$}_rrm`,"insert_block",e(c)),n.add(a)})})}(["google-site-kit/rrm-subscribe-with-google","google-site-kit/rrm-contribute-with-google"])},79829:(t,e,n)=>{n.d(e,{Eo:()=>g,JK:()=>p,K5:()=>m,jq:()=>d,mK:()=>l});var r=n(17243),i=n(50532),o=n.n(i),s=n(82871);function a(t,e={}){const{formatUnit:n,formatDecimal:r}=function(t,e={}){const{hours:n,minutes:r,seconds:i}=c(t);return{hours:n,minutes:r,seconds:i,formatUnit(){const{unitDisplay:o="short",...a}=e,c={unitDisplay:o,...a,style:"unit"};return 0===t?d(i,{...c,unit:"second"}):(0,s.sprintf)(/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ /* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
(0,s._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?d(i,{...c,unit:"second"}):"",r?d(r,{...c,unit:"minute"}):"",n?d(n,{...c,unit:"hour"}):"").trim()},formatDecimal(){const e=(0,s.sprintf)(
// translators: %s: number of seconds with "s" as the abbreviated unit.
// translators: %s: number of seconds with "s" as the abbreviated unit.
(0,s.__)("%ds","google-site-kit"),i);if(0===t)return e;const o=(0,s.sprintf)(
// translators: %s: number of minutes with "m" as the abbreviated unit.
// translators: %s: number of minutes with "m" as the abbreviated unit.
(0,s.__)("%dm","google-site-kit"),r),a=(0,s.sprintf)(
// translators: %s: number of hours with "h" as the abbreviated unit.
// translators: %s: number of hours with "h" as the abbreviated unit.
(0,s.__)("%dh","google-site-kit"),n);return(0,s.sprintf)(/* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */ /* translators: 1: formatted seconds, 2: formatted minutes, 3: formatted hours */
(0,s._x)("%3$s %2$s %1$s","duration of time: hh mm ss","google-site-kit"),i?e:"",r?o:"",n?a:"").trim()}}}(t,e);try{return n()}catch{return r()}}function c(t){t=parseInt(t,10),Number.isNaN(t)&&(t=0);return{hours:Math.floor(t/60/60),minutes:Math.floor(t/60%60),seconds:Math.floor(t%60)}}function u(t){return 1e6<=t?Math.round(t/1e5)/10:1e4<=t?Math.round(t/1e3):1e3<=t?Math.round(t/100)/10:t}function l(t){let e={};return"%"===t?e={style:"percent",maximumFractionDigits:2}:"s"===t?e={style:"duration",unitDisplay:"narrow"}:t&&"string"==typeof t?e={style:"currency",currency:t}:(0,r.isPlainObject)(t)&&(e={...t}),e}function g(t,e={}){t=(0,r.isFinite)(t)?t:Number(t),(0,r.isFinite)(t)||(console.warn("Invalid number",t,typeof t),t=0);const n=l(e),{style:i="metric"}=n;return"metric"===i?function(t){const e={minimumFractionDigits:1,maximumFractionDigits:1};return 1e6<=t?(0,s.sprintf)(
// translators: %s: an abbreviated number in millions.
// translators: %s: an abbreviated number in millions.
(0,s.__)("%sM","google-site-kit"),d(u(t),t%10==0?{}:e)):1e4<=t?(0,s.sprintf)(
// translators: %s: an abbreviated number in thousands.
// translators: %s: an abbreviated number in thousands.
(0,s.__)("%sK","google-site-kit"),d(u(t))):1e3<=t?(0,s.sprintf)(
// translators: %s: an abbreviated number in thousands.
// translators: %s: an abbreviated number in thousands.
(0,s.__)("%sK","google-site-kit"),d(u(t),t%10==0?{}:e)):d(t,{signDisplay:"never",maximumFractionDigits:1})}(t):"duration"===i?a(t,n):"durationISO"===i?function(t){let{hours:e,minutes:n,seconds:r}=c(t);return r=("0"+r).slice(-2),n=("0"+n).slice(-2),e=("0"+e).slice(-2),"00"===e?`${n}:${r}`:`${e}:${n}:${r}`}(t):d(t,n)}const f=o()(console.warn);function d(t,e={}){const{locale:n=p(),...r}=e;try{return new Intl.NumberFormat(n,r).format(t)}catch(e){f(`Site Kit numberFormat error: Intl.NumberFormat( ${JSON.stringify(n)}, ${JSON.stringify(r)} ).format( ${typeof t} )`,e.message)}const i={currencyDisplay:"narrow",currencySign:"accounting",style:"unit"},o=["signDisplay","compactDisplay"],s={};for(const[t,e]of Object.entries(r))i[t]&&e===i[t]||o.includes(t)||(s[t]=e);try{return new Intl.NumberFormat(n,s).format(t)}catch{return new Intl.NumberFormat(n).format(t)}}function m(t,e={}){const{locale:n=p(),style:r="long",type:i="conjunction"}=e;if(Intl.ListFormat){return new Intl.ListFormat(n,{style:r,type:i}).format(t)}
/* translators: used between list items, there is a space after the comma. */const o=(0,s.__)(", ","google-site-kit");return t.join(o)}function p(t=n.g){const e=(0,r.get)(t,["_googlesitekitLegacyData","locale"]);if(e){const t=e.match(/^(\w{2})?(_)?(\w{2})/);if(t&&t[0])return t[0].replace(/_/g,"-")}return t.navigator.language}},82046:(t,e,n)=>{n.d(e,{C:()=>o,p:()=>i});var r=n(15210);function i(t,e={}){return{__html:r.O.sanitize(t,e)}}function o(t){const e="object"==typeof t?t.toString():t;return e?.replace?.(/\/+$/,"")}},82871:t=>{t.exports=googlesitekit.i18n},89318:(t,e,n)=>{n.d(e,{M9:()=>S,sx:()=>N,BI:()=>D});var r=n(17243);const i="_googlesitekitDataLayer",o="data-googlesitekit-gtag";function s(t){return function(){t[i]=t[i]||[],t[i].push(arguments)}}var a=n(65214);const c={activeModules:[],isAuthenticated:!1,referenceSiteURL:"",trackingEnabled:!1,trackingID:"",userIDHash:"",userRoles:[]};const{activeModules:u=[],isSiteKitScreen:l,trackingEnabled:g,trackingID:f,referenceSiteURL:d,userIDHash:m,isAuthenticated:p,userRoles:h}=n.g._googlesitekitTrackingData||{},{GOOGLESITEKIT_VERSION:y}=n.g,b={activeModules:u,trackingEnabled:g,trackingID:f,referenceSiteURL:d,userIDHash:m,isSiteKitScreen:l,userRoles:h,isAuthenticated:p,pluginVersion:y},{enableTracking:k,disableTracking:w,isTrackingEnabled:v,initializeSnippet:_,trackEvent:N,trackEventOnce:D}=function(t,e=n.g,u=n.g){const l={...c,...t};l.referenceSiteURL&&(l.referenceSiteURL=l.referenceSiteURL.toString().replace(/\/+$/,""));const g=function(t,e){const r=s(e);let c;const{activeModules:u,referenceSiteURL:l,userIDHash:g,userRoles:f=[],isAuthenticated:d,pluginVersion:m}=t;return function(){const{document:e}=n.g;if(void 0===c&&(c=!!e.querySelector(`script[${o}]`)),c)return!1;c=!0;const s=f?.length?f.join(","):"";r("js",new Date),r("config",t.trackingID,{groups:"site_kit",send_page_view:t.isSiteKitScreen,domain:l,plugin_version:m||"",enabled_features:Array.from(a.t).join(","),active_modules:u.join(","),authenticated:d?"1":"0",user_properties:{user_roles:s,user_identifier:g}});const p=e.createElement("script");return p.setAttribute(o,""),p.async=!0,p.src=`https://www.googletagmanager.com/gtag/js?id=${t.trackingID}&l=${i}`,e.head.appendChild(p),{scriptTagSrc:`https://www.googletagmanager.com/gtag/js?id=${t.trackingID}&l=${i}`}}}(l,e),f=function(t,e,n,r){const i=s(e);return async function(e,o,s,a){const{trackingEnabled:c}=t;if(!c)return null;n();const u={send_to:"site_kit",event_category:e,event_label:s,value:a};return new Promise(t=>{const n=setTimeout(function(){r.console.warn(`Tracking event "${o}" (category "${e}") took too long to fire.`),t()},1e3);function s(){clearTimeout(n),t()}i("event",o,{...u,event_callback:s}),r._gaUserPrefs?.ioo?.()&&s()})}}(l,e,g,u),d={};return{enableTracking:function(){l.trackingEnabled=!0},disableTracking:function(){l.trackingEnabled=!1},initializeSnippet:g,isTrackingEnabled:function(){return!!l.trackingEnabled},trackEvent:f,trackEventOnce:function(...t){const e=JSON.stringify(t);d[e]||(d[e]=(0,r.once)(f)),d[e](...t)}}}(b);function S(t){t?k():w()}l&&g&&_()},94552:(t,e,n)=>{n.d(e,{A:()=>c});var r=n(62688),i=n.n(r),o=n(4452),s=n.n(o),a=n(62540);function ChangeArrow({direction:t,invertColor:e,width:n,height:r}){return(0,a.jsx)("svg",{className:s()("googlesitekit-change-arrow",`googlesitekit-change-arrow--${t}`,{"googlesitekit-change-arrow--inverted-color":e}),width:n,height:r,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,a.jsx)("path",{d:"M5.625 10L5.625 2.375L9.125 5.875L10 5L5 -1.76555e-07L-2.7055e-07 5L0.875 5.875L4.375 2.375L4.375 10L5.625 10Z",fill:"currentColor"})})}ChangeArrow.propTypes={direction:i().string,invertColor:i().bool,width:i().number,height:i().number},ChangeArrow.defaultProps={direction:"up",invertColor:!1,width:9,height:9};const c=ChangeArrow}},t=>{t.O(0,[660],()=>{return e=71715,t(t.s=e);var e});t.O()}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
"use strict";(globalThis.__googlesitekit_webpackJsonp=globalThis.__googlesitekit_webpackJsonp||[]).push([[290],{1102:(t,e,o)=>{o.d(e,{w:()=>i});var n=o(35470),c=o(63696),r=o(2422);function s(){}function i(t,e){const o=(0,r.W)({sticky:!0}),i=(0,c.useRef)(),a=(0,c.useCallback)(t,e),u=(0,n.A)(o?a:s);return o&&(i.current=u),i.current}},2422:(t,e,o)=>{o.d(e,{W:()=>a});var n=o(79257),c=o(35470),r=o(63696),s=o(6732),i=o(7081);function a({sticky:t=!1}={}){const e=(0,r.useContext)(s.A),[o,a]=(0,r.useState)(!1),u=(0,c.A)(t=>t(i.n).getInViewResetCount()),l=(0,c.A)(t=>t(i.n).getValue("forceInView"));return(0,r.useEffect)(()=>{e.value&&!o&&a(!0)},[o,e,a]),(0,r.useEffect)(()=>{l&&a(!0)},[l]),(0,n.A)(()=>{a(!1)},[u]),!(!t||!o)||!!e.value}},6732:(t,e,o)=>{o.d(e,{A:()=>n});const n=(0,o(63696).createContext)(!1)},7081:(t,e,o)=>{o.d(e,{F:()=>c,n:()=>n});const n="core/ui",c="activeContextID"},47121:(t,e,o)=>{o.d(e,{$C:()=>I,RF:()=>_,WI:()=>R,_5:()=>w,jU:()=>h,o3:()=>S,x0:()=>b});var n=o(32091),c=o.n(n),r=o(50532),s=o.n(r),i=o(17243),a=o(78913);const u="GET_REGISTRY",l="AWAIT";function g(...t){const e=t.reduce((t,e)=>({...t,...e}),{}),o=k(t.reduce((t,e)=>[...t,...Object.keys(e)],[]));return c()(0===o.length,`collect() cannot accept collections with duplicate keys. Your call to collect() contains the following duplicated functions: ${o.join(", ")}. Check your data stores for duplicates.`),e}const f=g,d=g;function p(...t){const e=[...t];let o;return"function"!=typeof e[0]&&(o=e.shift()),(t=o,n={})=>e.reduce((t,e)=>e(t,n),t)}const y=g,v=g,A=g;function m(t){return t}function S(...t){const e=A(...t.map(t=>t.initialState||{}));return{initialState:e,controls:d(...t.map(t=>t.controls||{})),actions:f(...t.map(t=>t.actions||{})),reducer:p(e,...t.map(t=>t.reducer||m)),resolvers:y(...t.map(t=>t.resolvers||{})),selectors:v(...t.map(t=>t.selectors||{}))}}const h={getRegistry:()=>({payload:{},type:u}),*await(t){return{payload:{value:t},type:l}}},w={[u]:(0,a.b)(t=>()=>t),[l]:({payload:t})=>t.value};function k(t){const e=[],o={};for(let n=0;n<t.length;n++){const c=t[n];o[c]=o[c]>=1?o[c]+1:1,o[c]>1&&e.push(c)}return e}const b={actions:h,controls:w,reducer:m};function R(t){return e=>C(t(e))}const C=s()(t=>(0,i.mapValues)(t,(t,e)=>(...o)=>{const n=t(...o);return c()(void 0!==n,`${e}(...) is not resolved`),n}));function _(t,{negate:e=!1}={}){return{safeSelector:(0,a.N)(o=>(n,...c)=>{const r=!e,s=!!e;try{return t(o,n,...c),r}catch{return s}}),dangerousSelector:(0,a.N)(e=>(o,...n)=>{t(e,o,...n)})}}function I(t,e){return c()("function"==typeof t,"a validator function is required."),c()("function"==typeof e,"an action creator function is required."),c()("Generator"!==t[Symbol.toStringTag]&&"GeneratorFunction"!==t[Symbol.toStringTag],"an action’s validator function must not be a generator."),(...o)=>(t(...o),e(...o))}},74595:(t,e,o)=>{o.d(e,{wA:()=>i.A});var n=o(29725),c=o(56805),r=o(78913),s=o(35470),i=o(63737),a=o(44319),u=o(31170),l=o(30043),g=o(66293),f=o(1102),d=o(47121),p=o(97241);const y=(0,n.I)({},o.g.wp?.data);y.combineStores=d.o3,y.commonActions=d.jU,y.commonControls=d._5,y.commonStore=d.x0,y.createReducer=function(t){return(0,p.Ay)(t)},y.useInViewSelect=f.w,y.controls=c.n,y.createRegistryControl=r.b,y.createRegistrySelector=r.N,y.useSelect=s.A,y.useDispatch=i.A,y.useRegistry=a.A,y.withSelect=u.A,y.withDispatch=l.A,y.RegistryProvider=g.Ay;const v=y;void 0===o.g.googlesitekit&&(o.g.googlesitekit={}),o.g.googlesitekit.data=v}},t=>{t.O(0,[660],()=>{return e=74595,t(t.s=e);var e});t.O()}]);
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
"use strict";(globalThis.__googlesitekit_webpackJsonp=globalThis.__googlesitekit_webpackJsonp||[]).push([[943],{45472:(t,e,o)=>{o.d(e,{M:()=>n});const n="core/location"},47121:(t,e,o)=>{o.d(e,{$C:()=>I,RF:()=>G,WI:()=>k,_5:()=>b,jU:()=>h,o3:()=>S,x0:()=>R});var n=o(32091),r=o.n(n),a=o(50532),i=o.n(a),c=o(17243),s=o(78913);const l="GET_REGISTRY",u="AWAIT";function g(...t){const e=t.reduce((t,e)=>({...t,...e}),{}),o=_(t.reduce((t,e)=>[...t,...Object.keys(e)],[]));return r()(0===o.length,`collect() cannot accept collections with duplicate keys. Your call to collect() contains the following duplicated functions: ${o.join(", ")}. Check your data stores for duplicates.`),e}const p=g,d=g;function f(...t){const e=[...t];let o;return"function"!=typeof e[0]&&(o=e.shift()),(t=o,n={})=>e.reduce((t,e)=>e(t,n),t)}const y=g,v=g,T=g;function m(t){return t}function S(...t){const e=T(...t.map(t=>t.initialState||{}));return{initialState:e,controls:d(...t.map(t=>t.controls||{})),actions:p(...t.map(t=>t.actions||{})),reducer:f(e,...t.map(t=>t.reducer||m)),resolvers:y(...t.map(t=>t.resolvers||{})),selectors:v(...t.map(t=>t.selectors||{}))}}const h={getRegistry:()=>({payload:{},type:l}),*await(t){return{payload:{value:t},type:u}}},b={[l]:(0,s.b)(t=>()=>t),[u]:({payload:t})=>t.value};function _(t){const e=[],o={};for(let n=0;n<t.length;n++){const r=t[n];o[r]=o[r]>=1?o[r]+1:1,o[r]>1&&e.push(r)}return e}const R={actions:h,controls:b,reducer:m};function k(t){return e=>N(t(e))}const N=i()(t=>(0,c.mapValues)(t,(t,e)=>(...o)=>{const n=t(...o);return r()(void 0!==n,`${e}(...) is not resolved`),n}));function G(t,{negate:e=!1}={}){return{safeSelector:(0,s.N)(o=>(n,...r)=>{const a=!e,i=!!e;try{return t(o,n,...r),a}catch{return i}}),dangerousSelector:(0,s.N)(e=>(o,...n)=>{t(e,o,...n)})}}function I(t,e){return r()("function"==typeof t,"a validator function is required."),r()("function"==typeof e,"an action creator function is required."),r()("Generator"!==t[Symbol.toStringTag]&&"GeneratorFunction"!==t[Symbol.toStringTag],"an action’s validator function must not be a generator."),(...o)=>(t(...o),e(...o))}},50539:t=>{t.exports=googlesitekit.data},79760:(t,e,o)=>{var n=o(50539),r=o.n(n),a=o(45472),i=o(32091),c=o.n(i),s=o(47121);const l="DO_NAVIGATE_TO",u="SET_NAVIGATING_TO",g={initialState:{navigatingTo:void 0},actions:{navigateTo:(0,s.$C)(t=>{let e=!1;try{e=new URL(t)}catch{}c()(!!e,"url must be a valid URI.")},function*(t){const e={url:t};return yield{type:u,payload:e},yield{type:l,payload:e}})},controls:{[l]:({payload:t})=>{o.g.location.assign(t.url)}},reducer:(0,n.createReducer)((t,{type:e,payload:o})=>{if(e===u)t.navigatingTo=o.url}),resolvers:{},selectors:{isNavigating:t=>!!t.navigatingTo,isNavigatingTo(t,e){const{navigatingTo:o}=t;return c()("string"==typeof e||e instanceof RegExp,"url must be either a string or a regular expression."),"string"==typeof e?o===e:e.test(o)},getNavigateURL:t=>t.navigatingTo||null}},p=(0,n.combineStores)(n.commonStore,g);p.initialState,p.actions,p.controls,p.reducer,p.resolvers,p.selectors;r().registerStore(a.M,p)}},t=>{t.O(0,[660],()=>{return e=79760,t(t.s=e);var e});t.O()}]);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
(()=>{"use strict";var e,t,r,a,l,o={};o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(e=o.g.jQuery)&&(e("body").on("edd_cart_item_added",(e,t)=>{var r,a;const{name:l,value:i}=function(e){var t,r;const a=(new DOMParser).parseFromString(e,"text/html"),l=(null===(t=a.querySelector(".edd-cart-item-title"))||void 0===t?void 0:t.textContent.trim())||"";let o=((null===(r=a.querySelector(".edd-cart-item-price"))||void 0===r?void 0:r.textContent.trim())||"").replace(/[^\d.,]/g,"").trim();const i=o.lastIndexOf(","),n=o.lastIndexOf(".");return i>-1&&n>-1?o=i>n?o.replace(/\./g,"").replace(",","."):o.replace(/,/g,""):i>-1?o=3===o.length-i?o.replace(",","."):o.replace(/,/g,""):n>-1&&3!==o.length-n&&(o=o.replace(/\./g,"")),{name:l,value:parseFloat(o)||0}}(t.cart_item),n=o.g._googlesitekit.easyDigitalDownloadsCurrency;null===(r=o.g._googlesitekit)||void 0===r||null===(a=r.gtagEvent)||void 0===a||a.call(r,"add_to_cart",{currency:n,value:i,items:[{item_name:l,price:i}]})}),null!==(t=o.g._googlesitekit)&&void 0!==t&&t.gtagUserData&&null!==(r=o.g._googlesitekit)&&void 0!==r&&null!==(r=r.edddata)&&void 0!==r&&null!==(r=r.purchase)&&void 0!==r&&r.user_data&&(null===(a=o.g._googlesitekit)||void 0===a||null===(l=a.gtagEvent)||void 0===l||l.call(a,"purchase",{user_data:o.g._googlesitekit.edddata.purchase.user_data})))})();
@@ -1 +0,0 @@
(()=>{"use strict";var e={};function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const r="email",i="phone",l="name",a={[r]:["email","e-mail","mail","email address"],[i]:["phone","tel","mobile","cell","telephone","phone number"],[l]:["name","full-name","full name","full_name","fullname","first-name","first name","first_name","firstname","last-name","last name","last_name","lastname","given-name","given name","given_name","givenname","family-name","family name","family_name","familyname","fname","lname","first","last","your-name","your name"]};function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function u(e){const t=o(e),n=t.lastIndexOf("@");if(-1===n)return t;const r=t.slice(n+1);if(["gmail.com","googlemail.com"].includes(r)){const e=t.slice(0,n).replace(/\./g,"");return"".concat(e,"@").concat(r)}return t}function c(e){const t=o(e),n=t.replace(/\D/g,"");return t.startsWith("+")?"+".concat(n):n}function s(e){const r=e.filter(e=>{let{type:t}=e;return t===l}).map(e=>{let{value:t}=e;return t});if(!r.length)return;const[i,...a]=1===r.length?r[0].split(" "):r;return function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach(function(t){n(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({first_name:o(i)},(null==a?void 0:a.length)>0?{last_name:o(a.join(" "))}:{})}function f(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===r}))||void 0===t?void 0:t.value}function m(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===i}))||void 0===t?void 0:t.value}((t,n,v)=>{if(!t||!n||!v)return;const g=n.Object.extend({initialize(){this.listenTo(v.Radio.channel("forms"),"submit:response",this.actionSubmit)},actionSubmit(t){var n,v,g;const y=(null===(n=e.g._googlesitekit)||void 0===n?void 0:n.gtagUserData)?(d=t.data.fields,function(e){const t=[["address",s(e)],["email",f(e)],["phone_number",m(e)]].filter(e=>{let[,t]=e;return t});if(0!==t.length)return Object.fromEntries(t)}(Object.values(d).map(e=>{var t;const{label:n,type:s,value:f,key:m}=e;return function(e){let{type:t,name:n,value:s,label:f}=e||{};switch(t=o(t),n=o(n),s=o(s),f=function(e){return e&&"string"==typeof e?e.trim().toLowerCase().replace(/\s*\*+\s*$/,"").replace(/\s*\(required\)\s*$/i,"").replace(/\s*:\s*$/,"").trim():""}(f),t){case"email":return{type:r,value:u(s)};case"tel":return{type:i,value:c(s)}}return function(e){if(!e)return!1;const t=u(e);return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}(s)?{type:r,value:u(s)}:function(e){if(!e)return!1;if(!function(e){const t=e.replace(/\D/g,"");return!(t.length<7||t.length<e.length/2)&&/^[\s\-()+.\d]*$/.test(e)}(e))return!1;const t=c(e);return/^\+?\d{7,}$/.test(t)}(s)?{type:i,value:c(s)}:a[r].includes(n)||a[r].includes(f)?{type:r,value:u(s)}:a[i].includes(n)||a[i].includes(f)?{type:i,value:c(s)}:a[l].includes(n)||a[l].includes(f)?{type:l,value:o(s)}:null}({label:n,type:null!==(t=p[s])&&void 0!==t?t:s,value:f,name:m})}).filter(Boolean))):void 0;var d;null===(v=e.g._googlesitekit)||void 0===v||null===(g=v.gtagEvent)||void 0===g||g.call(v,"submit_lead_form",y?{user_data:y}:void 0)}});t(document).ready(()=>{new g})})(e.g.jQuery,e.g.Marionette,e.g.Backbone);const p={phone:"tel",textbox:"text"}})();
@@ -1 +0,0 @@
(()=>{"use strict";var e={};function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const r="email",i="phone",l="name",a={[r]:["email","e-mail","mail","email address"],[i]:["phone","tel","mobile","cell","telephone","phone number"],[l]:["name","full-name","full name","full_name","fullname","first-name","first name","first_name","firstname","last-name","last name","last_name","lastname","given-name","given name","given_name","givenname","family-name","family name","family_name","familyname","fname","lname","first","last","your-name","your name"]};function o(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function u(e){const t=o(e),n=t.lastIndexOf("@");if(-1===n)return t;const r=t.slice(n+1);if(["gmail.com","googlemail.com"].includes(r)){const e=t.slice(0,n).replace(/\./g,"");return"".concat(e,"@").concat(r)}return t}function c(e){const t=o(e),n=t.replace(/\D/g,"");return t.startsWith("+")?"+".concat(n):n}function s(e){const r=e.filter(e=>{let{type:t}=e;return t===l}).map(e=>{let{value:t}=e;return t});if(!r.length)return;const[i,...a]=1===r.length?r[0].split(" "):r;return function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach(function(t){n(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({first_name:o(i)},(null==a?void 0:a.length)>0?{last_name:o(a.join(" "))}:{})}function m(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===r}))||void 0===t?void 0:t.value}function f(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===i}))||void 0===t?void 0:t.value}e.g.document.addEventListener("om.Analytics.track",t=>{let{detail:n}=t;if("conversion"===n.Analytics.type){var p,v,y,g;const t=(null===(p=e.g._googlesitekit)||void 0===p?void 0:p.gtagUserData)&&null!==(v=n.Campaign)&&void 0!==v&&v.Form?function(e){if(!e||!e.inputs)return;const t=Array.isArray(e.inputs)?e.inputs:Object.values(e.inputs);return t.length?function(e){const t=[["address",s(e)],["email",m(e)],["phone_number",f(e)]].filter(e=>{let[,t]=e;return t});if(0!==t.length)return Object.fromEntries(t)}(t.map(e=>{var t;if("hidden"===e.type)return null;const n=e.id?null===(t=document.querySelector("label[for='".concat(e.id,"']")))||void 0===t?void 0:t.textContent:e.placeholder||"";return function(e){let{type:t,name:n,value:s,label:m}=e||{};switch(t=o(t),n=o(n),s=o(s),m=function(e){return e&&"string"==typeof e?e.trim().toLowerCase().replace(/\s*\*+\s*$/,"").replace(/\s*\(required\)\s*$/i,"").replace(/\s*:\s*$/,"").trim():""}(m),t){case"email":return{type:r,value:u(s)};case"tel":return{type:i,value:c(s)}}return function(e){if(!e)return!1;const t=u(e);return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}(s)?{type:r,value:u(s)}:function(e){if(!e)return!1;if(!function(e){const t=e.replace(/\D/g,"");return!(t.length<7||t.length<e.length/2)&&/^[\s\-()+.\d]*$/.test(e)}(e))return!1;const t=c(e);return/^\+?\d{7,}$/.test(t)}(s)?{type:i,value:c(s)}:a[r].includes(n)||a[r].includes(m)?{type:r,value:u(s)}:a[i].includes(n)||a[i].includes(m)?{type:i,value:c(s)}:a[l].includes(n)||a[l].includes(m)?{type:l,value:o(s)}:null}({type:e.type,name:e.name,value:e.value,label:n})}).filter(Boolean)):void 0}(n.Campaign.Form):null,d={campaignID:n.Campaign.id,campaignType:n.Campaign.type};t&&(d.user_data=t),null===(y=e.g._googlesitekit)||void 0===y||null===(g=y.gtagEvent)||void 0===g||g.call(y,"submit_lead_form",d)}})})();
@@ -1 +0,0 @@
(()=>{"use strict";var e={};function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const r="email",i="phone",l="name",o={[r]:["email","e-mail","mail","email address"],[i]:["phone","tel","mobile","cell","telephone","phone number"],[l]:["name","full-name","full name","full_name","fullname","first-name","first name","first_name","firstname","last-name","last name","last_name","lastname","given-name","given name","given_name","givenname","family-name","family name","family_name","familyname","fname","lname","first","last","your-name","your name"]};function a(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function u(e){const t=a(e),n=t.lastIndexOf("@");if(-1===n)return t;const r=t.slice(n+1);if(["gmail.com","googlemail.com"].includes(r)){const e=t.slice(0,n).replace(/\./g,"");return"".concat(e,"@").concat(r)}return t}function c(e){const t=a(e),n=t.replace(/\D/g,"");return t.startsWith("+")?"+".concat(n):n}function s(e){const r=e.filter(e=>{let{type:t}=e;return t===l}).map(e=>{let{value:t}=e;return t});if(!r.length)return;const[i,...o]=1===r.length?r[0].split(" "):r;return function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach(function(t){n(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({first_name:a(i)},(null==o?void 0:o.length)>0?{last_name:a(o.join(" "))}:{})}function f(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===r}))||void 0===t?void 0:t.value}function m(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===i}))||void 0===t?void 0:t.value}var p,v;p=e.g.jQuery,v=e.g.PUM,p&&v&&v.hooks.addAction("pum.integration.form.success",(t,n)=>{var p,v,y;const g=(null===(p=e.g._googlesitekit)||void 0===p?void 0:p.gtagUserData)&&(b=n.formProvider,!d.includes(b))?function(e){if(!(e=e instanceof HTMLFormElement?e:e[0]))return;const t=new FormData(e);return function(e){const t=[["address",s(e)],["email",f(e)],["phone_number",m(e)]].filter(e=>{let[,t]=e;return t});if(0!==t.length)return Object.fromEntries(t)}(Array.from(t.entries()).map(t=>{var n,s;let[f,m]=t;const p=e.querySelector("[name='".concat(f,"']")),v=null==p?void 0:p.type;return"hidden"===v?null:function(e){let{type:t,name:n,value:s,label:f}=e||{};switch(t=a(t),n=a(n),s=a(s),f=function(e){return e&&"string"==typeof e?e.trim().toLowerCase().replace(/\s*\*+\s*$/,"").replace(/\s*\(required\)\s*$/i,"").replace(/\s*:\s*$/,"").trim():""}(f),t){case"email":return{type:r,value:u(s)};case"tel":return{type:i,value:c(s)}}return function(e){if(!e)return!1;const t=u(e);return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}(s)?{type:r,value:u(s)}:function(e){if(!e)return!1;if(!function(e){const t=e.replace(/\D/g,"");return!(t.length<7||t.length<e.length/2)&&/^[\s\-()+.\d]*$/.test(e)}(e))return!1;const t=c(e);return/^\+?\d{7,}$/.test(t)}(s)?{type:i,value:c(s)}:o[r].includes(n)||o[r].includes(f)?{type:r,value:u(s)}:o[i].includes(n)||o[i].includes(f)?{type:i,value:c(s)}:o[l].includes(n)||o[l].includes(f)?{type:l,value:a(s)}:null}({type:v,label:(null!=p&&p.id?null===(n=e.querySelector("label[for='".concat(null==p?void 0:p.id,"']")))||void 0===n?void 0:n.textContent:null)||(null==p||null===(s=p.closest("label"))||void 0===s?void 0:s.textContent),name:f,value:m})}).filter(Boolean))}(t):void 0;var b;null===(v=e.g._googlesitekit)||void 0===v||null===(y=v.gtagEvent)||void 0===y||y.call(v,"submit_lead_form",g?{user_data:g}:void 0)});const d=["wpforms","contactform7","ninjaforms","mc4wp"]})();
@@ -1 +0,0 @@
(()=>{var t={};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),((o,n)=>{if(!o)return;const{currency:e,products:i,purchase:a,add_to_cart:l,eventsToTrack:c}=(null===(n=t.g._googlesitekit)||void 0===n?void 0:n.wcdata)||{},r=null==c?void 0:c.includes("add_to_cart"),d=null==c?void 0:c.includes("purchase");if(l&&r){var u,s;const{price:o}=l,n=f(o,e,l);null===(u=t.g._googlesitekit)||void 0===u||null===(s=u.gtagEvent)||void 0===s||s.call(u,"add_to_cart",n)}if(a&&d){var g,_,p;const{id:o,totals:n,items:e,user_data:i}=a,l=f(n.total_price,n.currency_code,e,o,n.shipping_total,n.tax_total);null!==(g=t.g._googlesitekit)&&void 0!==g&&g.gtagUserData&&i&&(l.user_data=i),null===(_=t.g._googlesitekit)||void 0===_||null===(p=_.gtagEvent)||void 0===p||p.call(_,"purchase",l)}const v=o("body");function f(t,o,n){let e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;const l={value:m(t),currency:o,items:[]};if(e&&(l.transaction_id=e),"number"==typeof i&&(l.shipping=i),"number"==typeof a&&(l.tax=a),n&&n.length)for(const t of n)l.items.push(h(t));else n&&n.id&&(l.items=[h(n)]);return l}function h(t){const{id:o,name:n,price:e,variation:i,quantity:a,categories:l}=t,c={item_id:o,item_name:n,price:m(e)};if(a&&(c.quantity=a),i&&(c.item_variant=i),l&&null!=l&&l.length){let t=1;for(const o of l)c[t>1?"item_category".concat(t):"item_category"]=o.name,t++}return c}function m(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return parseInt(t,10)/10**o}r&&(v.on("added_to_cart",(o,n,a,l)=>{var c,r;const d=parseInt(l.data("product_id"),10);if(!d)return;const u=(null==i?void 0:i.find(t=>(null==t?void 0:t.id)===d))||{},{price:s}=u,g=f(s,e,u);null===(c=t.g._googlesitekit)||void 0===c||null===(r=c.gtagEvent)||void 0===r||r.call(c,"add_to_cart",g)}),o(".products-block-post-template .product, .wc-block-product-template .product").each(function(){const n=o(this),a=parseInt(n.find("[data-product_id]").attr("data-product_id"),10);a&&n.on("click",n=>{var l,c;const r=o(n.target).closest(".wc-block-components-product-button [data-product_id]");if(!r.length||!r.hasClass("add_to_cart_button")||r.hasClass("product_type_variable"))return;const d=(null==i?void 0:i.find(t=>(null==t?void 0:t.id)===a))||{},{price:u}=d,s=f(u,e,d);null===(l=t.g._googlesitekit)||void 0===l||null===(c=l.gtagEvent)||void 0===c||c.call(l,"add_to_cart",s)})}))})(t.g.jQuery)})();
@@ -1 +0,0 @@
(()=>{"use strict";var e={};function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const r="email",i="phone",l="name",o={[r]:["email","e-mail","mail","email address"],[i]:["phone","tel","mobile","cell","telephone","phone number"],[l]:["name","full-name","full name","full_name","fullname","first-name","first name","first_name","firstname","last-name","last name","last_name","lastname","given-name","given name","given_name","givenname","family-name","family name","family_name","familyname","fname","lname","first","last","your-name","your name"]};function a(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function u(e){const t=a(e),n=t.lastIndexOf("@");if(-1===n)return t;const r=t.slice(n+1);if(["gmail.com","googlemail.com"].includes(r)){const e=t.slice(0,n).replace(/\./g,"");return"".concat(e,"@").concat(r)}return t}function c(e){const t=a(e),n=t.replace(/\D/g,"");return t.startsWith("+")?"+".concat(n):n}function s(e){const r=e.filter(e=>{let{type:t}=e;return t===l}).map(e=>{let{value:t}=e;return t});if(!r.length)return;const[i,...o]=1===r.length?r[0].split(" "):r;return function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach(function(t){n(e,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({first_name:a(i)},(null==o?void 0:o.length)>0?{last_name:a(o.join(" "))}:{})}function f(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===r}))||void 0===t?void 0:t.value}function m(e){var t;return null===(t=e.find(e=>{let{type:t}=e;return t===i}))||void 0===t?void 0:t.value}var v;(v=e.g.jQuery)&&v(e.g.document.body).on("wpformsAjaxSubmitSuccess",t=>{var n,v,d;const p=(null===(n=e.g._googlesitekit)||void 0===n?void 0:n.gtagUserData)?function(e){if(!(e&&e instanceof HTMLFormElement))return;const t=new FormData(e);return function(e){const t=[["address",s(e)],["email",f(e)],["phone_number",m(e)]].filter(e=>{let[,t]=e;return t});if(0!==t.length)return Object.fromEntries(t)}(Array.from(t.entries()).map(t=>{var n,s,f,m,v,d;let[p,y]=t,g=e.querySelector("[name='".concat(p,"']"));"hidden"===(null===(n=g)||void 0===n?void 0:n.type)&&"hidden"!==(null===(s=g)||void 0===s||null===(s=s.previousSibling)||void 0===s?void 0:s.type)&&(g=g.previousSibling);const b=null===(f=g)||void 0===f?void 0:f.type;return"hidden"===b||"submit"===b?null:function(e){let{type:t,name:n,value:s,label:f}=e||{};switch(t=a(t),n=a(n),s=a(s),f=function(e){return e&&"string"==typeof e?e.trim().toLowerCase().replace(/\s*\*+\s*$/,"").replace(/\s*\(required\)\s*$/i,"").replace(/\s*:\s*$/,"").trim():""}(f),t){case"email":return{type:r,value:u(s)};case"tel":return{type:i,value:c(s)}}return function(e){if(!e)return!1;const t=u(e);return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}(s)?{type:r,value:u(s)}:function(e){if(!e)return!1;if(!function(e){const t=e.replace(/\D/g,"");return!(t.length<7||t.length<e.length/2)&&/^[\s\-()+.\d]*$/.test(e)}(e))return!1;const t=c(e);return/^\+?\d{7,}$/.test(t)}(s)?{type:i,value:c(s)}:o[r].includes(n)||o[r].includes(f)?{type:r,value:u(s)}:o[i].includes(n)||o[i].includes(f)?{type:i,value:c(s)}:o[l].includes(n)||o[l].includes(f)?{type:l,value:a(s)}:null}({type:b,label:null!==(m=g)&&void 0!==m&&m.id?null===(v=e.querySelector("label[for='".concat(null===(d=g)||void 0===d?void 0:d.id,"']")))||void 0===v?void 0:v.textContent:void 0,name:p,value:y})}).filter(Boolean))}(t.target):null;null===(v=e.g._googlesitekit)||void 0===v||null===(d=v.gtagEvent)||void 0===d||d.call(v,"submit_lead_form",p?{user_data:p}:void 0)})})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More