first commit

This commit is contained in:
Roman Pyrih
2024-12-19 15:27:13 +01:00
commit d6241cfa7a
21694 changed files with 6902106 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
<?php
/**
* Plugin Name: Elementor Addon
* Description: Simple hello world widgets for Elementor.
* Version: 1.0.0
* Author: Roman Pyrih
* Author URI:
* Text Domain:
*
* Requires Plugins: elementor
* Elementor tested up to: 3.21.0
* Elementor Pro tested up to: 3.21.0
*/
function register_elementor_addon_widgets( $widgets_manager ) {
require_once( __DIR__ . '/widgets/apartment-search-form.php' );
require_once( __DIR__ . '/widgets/apartment-search-results.php' );
$widgets_manager->register( new \Elementor_Apartment_Search_Form() );
$widgets_manager->register( new \Elementor_Apartment_Search_Results() );
}
add_action( 'elementor/widgets/register', 'register_elementor_addon_widgets' );

View File

@@ -0,0 +1,66 @@
<?php
class Elementor_Apartment_Search_Form extends \Elementor\Widget_Base
{
public function get_name()
{
return 'Apartment search form';
}
public function get_title()
{
return esc_html__('Apartment search form', 'elementor-addon');
}
public function get_icon()
{
return 'eicon-site-search';
}
public function get_categories()
{
return ['basic'];
}
public function get_keywords()
{
return ['apartment', 'search form', 'form'];
}
protected function render()
{
$formatted_date_max = date("d-m-Y", strtotime('+1 year'));
?>
<div id="apartment-search-form">
<form action="<?php echo site_url('/apartamenty-filter/'); ?>" method="GET">
<div class="tile tile-1">
<label for="start_date">Wybierz daty:</label>
<input type="text" id="apartment-search-form-start" name="reservation_dates" required />
</div>
<input type="submit" value="Sprawdź i zarezerwuj" class="btn_submit">
</form>
<script>
jQuery(document).ready(function($) {
function initializeDateRangePicker(selector) {
$( selector ).dateRangePicker({
format: 'DD-MM-YYYY',
startDate: '<?= date("d-m-Y"); ?>',
endDate: '<?= $formatted_date_max; ?>',
autoClose: true,
separator: ' do ',
language: 'pl',
startOfWeek: 'monday',
setValue: function(s, s1, s2) {
$('#apartment-search-form-start').val( 'Od ' + s1 + ' do ' + s2);
}
});
}
initializeDateRangePicker('#apartment-search-form-start');
});
</script>
</div>
<?php
}
}

View File

@@ -0,0 +1,101 @@
<?php
class Elementor_Apartment_Search_Results extends \Elementor\Widget_Base {
public function get_name() {
return 'Apartment search results';
}
public function get_title() {
return esc_html__( 'Apartment search results', 'elementor-addon' );
}
public function get_icon() {
return 'eicon-site-search';
}
public function get_categories() {
return [ 'basic' ];
}
public function get_keywords() {
return [ 'apartment', 'search results', 'results' ];
}
protected function render() {
$reservation_dates = $_GET['reservation_dates'];
$dates = explode(' do ', $reservation_dates);
$start_date = date( 'Y-m-d', strtotime( str_replace( 'Od ', '', $dates[0] ) ) );
$end_date = date( 'Y-m-d', strtotime( $dates[1] ) );
?>
<?php if ( $start_date and $end_date ):?>
<div class="e-con e-flex">
<div class="e-con-inner">
<div id="search-results">
<h1>Wyniki wyszukiwania</h1>
<div id="search-apartments-results">
<p>Pobieranie wyników...</p>
</div>
</div>
</div>
</div>
<script>
jQuery(document).ready(function($) {
var startDate = '<?php echo $start_date; ?>';
var endDate = '<?php echo $end_date; ?>';
var reservedDays = [];
var startDateObj = new Date(startDate);
var endDateObj = new Date(endDate);
while (startDateObj <= endDateObj) {
reservedDays.push(startDateObj.getTime());
startDateObj.setDate(startDateObj.getDate() + 1);
}
$.ajax({
url: '<?php echo site_url("/custom-api.php"); ?>',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify({
id: 0,
reserved_days: reservedDays
}),
success: function(data) {
var apartmentsContainer = $('#search-apartments-results');
apartmentsContainer.empty();
console.log(data);
try {
var apartments = JSON.parse(data);
if (Array.isArray(apartments) && apartments.length > 0) {
apartments.forEach(function(room) {
var roomHtml = '<div class="room">';
roomHtml += `<a href="${room.url}"><img src="${room.room_thumb}" /></a>`;
roomHtml += `<h3><a href="${room.url}">${room.name}</a></h3>`;
roomHtml += `<p>Cena: ${room.price} zł</p>`;
roomHtml += '</div>';
apartmentsContainer.append(roomHtml);
});
} else {
apartmentsContainer.html('<p>Brak dostępnych apartamentów w wybranym terminie.</p>');
}
} catch (e) {
apartmentsContainer.html('<p>Wystąpił błąd podczas przetwarzania danych.</p>');
}
},
error: function() {
$('#search-apartments-results').html('<p>Wystąpił błąd podczas przetwarzania żądania.</p>');
}
});
});
</script>
<? endif; ?>
<?php
}
}