Skip to content

Commit

Permalink
Merge pull request #4 from berkanumutlu/feature-2024-04-03
Browse files Browse the repository at this point in the history
Feature #3
  • Loading branch information
berkanumutlu committed Apr 7, 2024
2 parents ddf79ee + 61ae2d9 commit 38e07ae
Show file tree
Hide file tree
Showing 51 changed files with 1,253 additions and 349 deletions.
325 changes: 268 additions & 57 deletions README.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"ext-pdo": "*",
"ext-mbstring": "*",
"ext-curl": "*",
"ext-zlib": "*"
"ext-zlib": "*",
"ext-dom": "*"
}
}
Binary file modified screenshots/screenshot01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshots/screenshot02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/screenshot03.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/screenshot04.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/screenshot05.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshots/screenshot06.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 79 additions & 15 deletions src/ajax.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?php
const BASE_PATH = __DIR__.'/';
require_once '../vendor/autoload.php';
require_once 'config/db.php';

use App\Library\SitemapGenerator;

if (!empty($_POST['sitemap'])) {
if (!empty($_POST['sitemap_generator'])) {
require_once 'config/db.php';
$response = new \App\Library\Response();
$sitemap_generator = new SitemapGenerator();
try {
Expand Down Expand Up @@ -62,41 +62,48 @@
/*
* Adding base url
*/
$sitemap_generator->set_url_loc('');
$domain_url = $sitemap_generator->getSitemap()->getDomain();
$change_freq = $sitemap_generator->getChangeFreq();
$url_priority = $sitemap_generator->getPriority();
$sitemap_generator->set_url_loc($domain_url);
$sitemap_generator->set_url_last_mod(date('Y-m-d'));
$sitemap_generator->set_url_priority(1);
$sitemap_generator->set_url_change_freq($change_freq);
$sitemap_generator->set_url_priority($url_priority);
$sitemap_generator->add_url_to_list();
/*
* Adding page urls
*/
$query_pages = $db->query("SELECT * from tbl_pages", PDO::FETCH_ASSOC);
$query_pages = $db->query("SELECT title, slug, image, created_at, updated_at from tbl_pages", PDO::FETCH_ASSOC);
if ($query_pages && $query_pages->rowCount()) {
$pages = $query_pages->fetchAll(PDO::FETCH_ASSOC);
foreach ($pages as $page) {
$sitemap_generator->set_url_loc(urlencode($page['slug']));
$sitemap_generator->set_url_loc($domain_url.'/'.urlencode($page['slug']));
$date = !empty($page['updated_at']) ? $page['updated_at'] : $page['created_at'];
$sitemap_generator->set_url_last_mod(date('Y-m-d', strtotime($date)));
$sitemap_generator->set_url_priority(0.8);
$sitemap_generator->set_url_change_freq($change_freq);
$sitemap_generator->set_url_priority($url_priority * 0.9);
if (!empty($page['image'])) {
$sitemap_generator->set_url_image_loc('assets/images/pages/'.urlencode($page['image']));
$sitemap_generator->set_url_image_title($page['name']);
$sitemap_generator->set_url_image_loc($domain_url.'/assets/images/pages/'.urlencode($page['image']));
$sitemap_generator->set_url_image_title($page['title']);
}
$sitemap_generator->add_url_to_list();
}
}
/*
* Adding products urls
*/
$query_products = $db->query("SELECT * from tbl_products", PDO::FETCH_ASSOC);
$query_products = $db->query("SELECT name, slug, image, created_at, updated_at from tbl_products",
PDO::FETCH_ASSOC);
if ($query_products && $query_products->rowCount()) {
$products = $query_products->fetchAll(PDO::FETCH_ASSOC);
foreach ($products as $product) {
$sitemap_generator->set_url_loc('product-detail/'.urlencode($product['slug']));
$sitemap_generator->set_url_loc($domain_url.'/product-detail/'.urlencode($product['slug']));
$date = !empty($product['updated_at']) ? $product['updated_at'] : $product['created_at'];
$sitemap_generator->set_url_last_mod(date('Y-m-d', strtotime($date)));
$sitemap_generator->set_url_priority(1);
$sitemap_generator->set_url_change_freq($change_freq);
$sitemap_generator->set_url_priority($url_priority * 1);
if (!empty($product['image'])) {
$sitemap_generator->set_url_image_loc('assets/images/products/'.urlencode($product['image']));
$sitemap_generator->set_url_image_loc($domain_url.'/assets/images/products/'.urlencode($product['image']));
$sitemap_generator->set_url_image_title($product['name']);
}
$sitemap_generator->add_url_to_list();
Expand All @@ -115,15 +122,72 @@
echo $response->toJson();
return true;
}
if (!empty($_POST['submit_sitemap'])) {
if (!empty($_POST['submit_sitemap']) || !empty($_POST['submit_sitemap_generator_url'])) {
$response = new \App\Library\Response();
if (empty($_POST['sitemap_url'])) {
$response->setMessage('Sitemap not found.');
$response->setMessage('Sitemap URL not found.');
echo $response->toJson();
exit();
}
$sitemap_generator = new SitemapGenerator();
$response = $sitemap_generator->submit_sitemap($_POST['sitemap_url']);
echo $response->toJson();
return true;
}
if (!empty($_POST['sitemap_generator_url'])) {
$response = new \App\Library\Response();
$sitemap_generator = new SitemapGenerator();
try {
if (!empty($_POST['domain'])) {
$sitemap_generator->getSitemap()->setDomain(trim($_POST['domain']));
}
if (!empty($_POST['last_mod'])) {
$sitemap_generator->setLastMod(trim($_POST['last_mod']));
}
if (!empty($_POST['change_freq'])) {
$sitemap_generator->setChangeFreq(trim($_POST['change_freq']));
}
if (!empty($_POST['priority'])) {
$sitemap_generator->setPriority(trim($_POST['priority']));
}
if (!empty($_POST['url_limit'])) {
$sitemap_generator->setUrlLimit(trim($_POST['url_limit']));
}
if (!empty($_POST['anchor_href_list'])) {
$list = explode(',', trim($_POST['anchor_href_list']));
$anchor_href_list = array_map('trim', $list);
$sitemap_generator->setIgnoreAnchorHrefList($anchor_href_list);
}
if (!empty($_POST['anchor_id_list'])) {
$list = explode(',', trim($_POST['anchor_id_list']));
$anchor_id_list = array_map('trim', $list);
$sitemap_generator->setIgnoreAnchorIdList($anchor_id_list);
}
if (!empty($_POST['anchor_name_list'])) {
$list = explode(',', trim($_POST['anchor_name_list']));
$anchor_name_list = array_map('trim', $list);
$sitemap_generator->setIgnoreAnchorNameList($anchor_name_list);
}
if (!empty($_POST['anchor_class_list'])) {
$list = explode(',', trim($_POST['anchor_class_list']));
$anchor_class_list = array_map('trim', $list);
$sitemap_generator->setIgnoreAnchorClassList($anchor_class_list);
}
$domain_url = $sitemap_generator->getSitemap()->getDomain();
$sitemap_generator->getSitemap()->setFilePath(BASE_PATH.'sitemap/');
$site_url = str_replace(['http://', 'https://'], ['', ''], $domain_url);
$sitemap_generator->getSitemap()->setFileName('sitemap-'.$site_url);
$sitemap_generator->getSitemap()->setFileExt('.xml');
$response = $sitemap_generator->scan_url($domain_url);
if ($response->isStatus()) {
$response = $sitemap_generator->generate();
}
} catch (\Exception $e) {
$response->setStatus(false);
$response->setStatusCode(500);
$response->setStatusText($e->getMessage());
$response->setMessage('The sitemap with url could not be created.');
}
echo $response->toJson();
return true;
}
4 changes: 4 additions & 0 deletions src/assets/web/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ a:hover {
color: var(--color-primary-hover);
}

small {
font-size: 12px;
}

.btn-primary {
--bs-btn-color: var(--color-text-secondary);
--bs-btn-bg: var(--color-primary);
Expand Down
2 changes: 1 addition & 1 deletion src/assets/web/css/style.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

151 changes: 136 additions & 15 deletions src/assets/web/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,46 @@ function checkInputNumberValue(element) {
}

jQuery(function ($) {
$.ajaxSetup({
error: function (xhr, status, error) {
let alert = this;
if (this.data !== '') {
if (this.data.indexOf('sitemap_generator=1') >= 0) {
alert = $('.alert-message.alert-sitemap-generator');
} else if (this.data.indexOf('submit_sitemap=1') >= 0) {
alert = $('.alert-message.alert-sitemap-submit-button');
} else if (this.data.indexOf('sitemap_generator_url=1') >= 0) {
alert = $('.alert-message.alert-sitemap-generator-url');
} else if (this.data.indexOf('submit_sitemap_generator_url=1') >= 0) {
alert = $('.alert-message.alert-sitemap-generator-url-submit-button');
}
}
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
let response = xhr.responseJSON;
if (response !== undefined && response.hasOwnProperty('status') && response.status) {
alert.find('.alert').removeClass('alert-danger').addClass('alert-success');
alertIcon.closest('.alert-success').show();
alertIcon.closest('.alert-danger').hide();
} else {
alert.find('.alert').removeClass('alert-success').addClass('alert-danger');
alertIcon.closest('.alert-danger').show();
alertIcon.closest('.alert-success').hide();
}
if (error !== '') {
alertText.html(status + ' ' + error);
alert.show();
}
}
});
$('form input[type="checkbox"]').each(function () {
$(this).val($(this).is(':checked') ? 1 : 0);
});
$('form input[type="checkbox"]').on("click", function () {
$(this).val($(this).is(':checked') ? 1 : 0);
let val = $(this).val();
});
$(".flatpickr").flatpickr({
enableTime: false,
Expand All @@ -44,6 +78,12 @@ jQuery(function ($) {
});
$("form.sitemap-generator").submit(function (event) {
event.preventDefault();
let alert = $('.alert-message.alert-sitemap-generator');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
let submit_sitemap_button = $('.sitemap-submit-button');
submit_sitemap_button.hide();
let alert_submit_button = $('.alert-message.alert-sitemap-submit-button');
Expand All @@ -52,19 +92,13 @@ jQuery(function ($) {
var method = $(this).attr('method');
var formData = $(this).serializeArray();
//formData.find(input => input.name == 'file_path').value = 'test';
formData.push({name: 'sitemap', value: 1});
formData.push({name: 'sitemap_generator', value: 1});
$.ajax({
url: url,
type: method,
data: formData,
dataType: "JSON"
}).done(function (response) {
let alert = $('.alert-message.alert-sitemap');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
if (response.hasOwnProperty('message')) {
alertText.html(response.message);
alert.show();
Expand All @@ -81,13 +115,19 @@ jQuery(function ($) {
alertIcon.closest('.alert-success').hide();
}
}
if (response.data.hasOwnProperty('file_url')) {
if (response.hasOwnProperty('data') && response.data !== null && response.data.hasOwnProperty('file_url')) {
submit_sitemap_button.attr('data-sitemap-url', response.data.file_url)
}
});
});
$(".sitemap-submit-button").on("click", function (event) {
event.preventDefault();
let alert = $('.alert-message.alert-sitemap-submit-button');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
var url = $(this).attr('href');
var sitemap_url = $(this).data('sitemap-url');
$.ajax({
Expand All @@ -96,12 +136,93 @@ jQuery(function ($) {
data: {'submit_sitemap': 1, 'sitemap_url': sitemap_url},
dataType: "JSON"
}).done(function (response) {
let alert = $('.alert-message.alert-sitemap-submit-button');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
if (response.hasOwnProperty('message')) {
alertText.html(response.message);
alert.show();
}
if (response.hasOwnProperty('data')) {
if ($.isArray(response.data)) {
var list_html = '<ul class="list-group list-unstyled mt-3">';
$.each(response.data, function (key, value) {
list_html += '<li class="mb-3"><div><strong>URL</strong>: ' + value.url + '</div><div><strong>Response</strong>: ' + value.response + '</div></li>';
});
list_html += '</ul>';
alertText.append(list_html);
}
alert.show();
}
if (response.hasOwnProperty('status')) {
if (response.status) {
alert.find('.alert').removeClass('alert-danger').addClass('alert-success');
alertIcon.closest('.alert-success').show();
alertIcon.closest('.alert-danger').hide();
} else {
alert.find('.alert').removeClass('alert-success').addClass('alert-danger');
alertIcon.closest('.alert-danger').show();
alertIcon.closest('.alert-success').hide();
}
}
});
});
$("form.sitemap-generator-url").submit(function (event) {
event.preventDefault();
let alert = $('.alert-message.alert-sitemap-generator-url');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
let submit_sitemap_button = $('.sitemap-generator-url-submit-button');
submit_sitemap_button.hide();
let alert_submit_button = $('.alert-message.alert-sitemap-generator-url-submit-button');
alert_submit_button.hide();
var url = $(this).attr('action');
var method = $(this).attr('method');
var formData = $(this).serializeArray();
formData.push({name: 'sitemap_generator_url', value: 1});
$.ajax({
url: url,
type: method,
data: formData,
dataType: "JSON",
}).done(function (response) {
if (response.hasOwnProperty('message')) {
alertText.html(response.message);
alert.show();
}
if (response.hasOwnProperty('status')) {
if (response.status) {
alert.find('.alert').removeClass('alert-danger').addClass('alert-success');
alertIcon.closest('.alert-success').show();
alertIcon.closest('.alert-danger').hide();
submit_sitemap_button.show();
} else {
alert.find('.alert').removeClass('alert-success').addClass('alert-danger');
alertIcon.closest('.alert-danger').show();
alertIcon.closest('.alert-success').hide();
}
}
if (response.data.hasOwnProperty('file_url')) {
submit_sitemap_button.attr('data-sitemap-url', response.data.file_url)
}
});
});
$(".sitemap-generator-url-submit-button").on("click", function (event) {
event.preventDefault();
let alert = $('.alert-message.alert-sitemap-generator-url-submit-button');
let alertIcon = alert.find('.alert .alert-icon');
let alertText = alert.find('.alert .text');
alert.hide();
alertIcon.hide();
alertText.text();
var url = $(this).attr('href');
var sitemap_url = $(this).data('sitemap-url');
$.ajax({
url: url,
type: "POST",
data: {'submit_sitemap_generator_url': 1, 'sitemap_url': sitemap_url},
dataType: "JSON"
}).done(function (response) {
if (response.hasOwnProperty('message')) {
alertText.html(response.message);
alert.show();
Expand Down
Loading

0 comments on commit 38e07ae

Please sign in to comment.