Update (ui)
This commit is contained in:
@@ -4,4 +4,4 @@
|
||||
require 'geo_helper.php';
|
||||
require 'platform_helper.php';
|
||||
require 'proxy_helper.php';
|
||||
require 'route_helper.php';
|
||||
require 'route_helper.php';
|
||||
|
||||
@@ -166,7 +166,6 @@ function get_domain_from_url($url)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (! function_exists('get_country_name_by_iso')) {
|
||||
function get_country_name_by_iso($country_iso)
|
||||
{
|
||||
|
||||
@@ -40,13 +40,12 @@ public function searchResults(Request $request, $query)
|
||||
SEOTools::jsonLd();
|
||||
SEOTools::setTitle($title, false);
|
||||
|
||||
$rss_posts = RssPost::with('category')
|
||||
->where('status', 'published')
|
||||
->whereRaw("to_tsvector('english', title || ' ' || bites || ' ' || keyword_list) @@ plainto_tsquery('english', ?)", [trim(preg_replace('/\s+/', ' ', $query))])
|
||||
->where('published_at', '<=', now())
|
||||
->orderBy('published_at', 'desc')
|
||||
->cursorPaginate(60);
|
||||
|
||||
$rss_posts = RssPost::with('category')
|
||||
->where('status', 'published')
|
||||
->whereRaw("to_tsvector('english', title || ' ' || bites || ' ' || keyword_list) @@ plainto_tsquery('english', ?)", [trim(preg_replace('/\s+/', ' ', $query))])
|
||||
->where('published_at', '<=', now())
|
||||
->orderBy('published_at', 'desc')
|
||||
->cursorPaginate(60);
|
||||
|
||||
// breadcrumb json ld
|
||||
$listItems = [];
|
||||
@@ -112,12 +111,10 @@ public function category(Request $request, $category_slug)
|
||||
|
||||
$category = Category::where('slug', $category_slug)->first();
|
||||
|
||||
if (is_null($category))
|
||||
{
|
||||
abort(404);
|
||||
if (is_null($category)) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
|
||||
$breadcrumbs = collect([
|
||||
['name' => 'Home', 'url' => route('front.home')],
|
||||
['name' => $category->name, 'url' => null],
|
||||
@@ -125,7 +122,6 @@ public function category(Request $request, $category_slug)
|
||||
|
||||
$title = 'Latest News from FutureWalker';
|
||||
|
||||
|
||||
SEOTools::metatags();
|
||||
SEOTools::twitter();
|
||||
SEOTools::opengraph();
|
||||
@@ -154,6 +150,6 @@ public function category(Request $request, $category_slug)
|
||||
'itemListElement' => $listItems,
|
||||
]);
|
||||
|
||||
return view('front.rss_post_list', compact('rss_posts', 'breadcrumbs', 'breadcrumb_context', 'page_type','category'));
|
||||
return view('front.rss_post_list', compact('rss_posts', 'breadcrumbs', 'breadcrumb_context', 'page_type', 'category'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public static function handle(int $rss_post_id)
|
||||
$rss_post->body = 'EMPTY CONTENT';
|
||||
}
|
||||
|
||||
if ((is_empty($rss_post->body)) || ($rss_post->body == 'EMPTY CONTENT') || (strlen($rss_post->body) < 800)){
|
||||
if ((is_empty($rss_post->body)) || ($rss_post->body == 'EMPTY CONTENT') || (strlen($rss_post->body) < 800)) {
|
||||
$rss_post->status = 'blocked';
|
||||
}
|
||||
|
||||
|
||||
@@ -54,9 +54,8 @@ public static function handle(int $rss_post_id)
|
||||
if (count($post_meta_response->output->keywords) > 0) {
|
||||
$rss_post->keywords = $post_meta_response->output->keywords;
|
||||
|
||||
foreach ($post_meta_response->output->keywords as $word)
|
||||
{
|
||||
$words_to_add_in_body[] = $word;
|
||||
foreach ($post_meta_response->output->keywords as $word) {
|
||||
$words_to_add_in_body[] = $word;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,9 +64,8 @@ public static function handle(int $rss_post_id)
|
||||
if (count($post_meta_response->output->entities) > 0) {
|
||||
$rss_post->entities = $post_meta_response->output->entities;
|
||||
|
||||
foreach ($post_meta_response->output->entities as $word)
|
||||
{
|
||||
$words_to_add_in_body[] = $word;
|
||||
foreach ($post_meta_response->output->entities as $word) {
|
||||
$words_to_add_in_body[] = $word;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,7 +104,7 @@ public static function handle(int $rss_post_id)
|
||||
$rss_post->category_id = $category->id;
|
||||
}
|
||||
|
||||
$rss_post->keyword_list = implode(",", $words_to_add_in_body);
|
||||
$rss_post->keyword_list = implode(',', $words_to_add_in_body);
|
||||
|
||||
$rss_post->status = 'published';
|
||||
$rss_post->save();
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
use Spatie\Feed\Feedable;
|
||||
use Spatie\Feed\FeedItem;
|
||||
|
||||
|
||||
/**
|
||||
* Class RssPost
|
||||
*
|
||||
@@ -74,12 +73,12 @@ public function category()
|
||||
|
||||
public function getAllKeywordsAttribute()
|
||||
{
|
||||
if (!is_empty($this->keyword_list))
|
||||
{
|
||||
return array_unique(explode(",",$this->keyword_list));
|
||||
}
|
||||
return [];
|
||||
|
||||
if (! is_empty($this->keyword_list)) {
|
||||
return array_unique(explode(',', $this->keyword_list));
|
||||
}
|
||||
|
||||
return [];
|
||||
|
||||
}
|
||||
|
||||
public function toFeedItem(): FeedItem
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
@@ -42,7 +41,6 @@ public function up(): void
|
||||
|
||||
DB::statement('CREATE INDEX idx_rss_posts_entities ON rss_posts USING gin (entities jsonb_path_ops)');
|
||||
|
||||
|
||||
DB::statement('CREATE INDEX idx_rss_posts_keywords ON rss_posts USING gin (keywords jsonb_path_ops)');
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
import{_ as i}from"./vue-541dc6d3.js";const n={name:"LqipLoader",mounted(){this.initLqipLoading()},methods:{initLqipLoading(){const e=document.getElementsByTagName("img");for(let t=0;t<e.length;t++)e[t].getAttribute("data-src")&&(e[t].onload=function(){this.classList.remove("lqip-blur")},e[t].setAttribute("src",e[t].getAttribute("data-src")))}}};function o(e,t,r,s,a,c){return null}const m=i(n,[["render",o]]);export{m as default};
|
||||
import{_ as i}from"./vue-1b15f6c7.js";const n={name:"LqipLoader",mounted(){this.initLqipLoading()},methods:{initLqipLoading(){const e=document.getElementsByTagName("img");for(let t=0;t<e.length;t++)e[t].getAttribute("data-src")&&(e[t].onload=function(){this.classList.remove("lqip-blur")},e[t].setAttribute("src",e[t].getAttribute("data-src")))}}};function o(e,t,r,s,a,c){return null}const m=i(n,[["render",o]]);export{m as default};
|
||||
@@ -1 +1 @@
|
||||
import{_ as o,o as p,c,a as r,b as u,p as i,d as m,e as g,f as _,g as d,v as f,Z as n,h as l}from"./vue-541dc6d3.js";const A={name:"AppAuth"};function $(s,a,t,Z,w,x){return p(),c("div")}const h=o(A,[["render",$]]),e=r({AppAuth:h}),v=Object.assign({});e.use(u());e.use(i,m);e.use(g);e.use(_);e.use(d);e.use(f.ZiggyVue,n);window.Ziggy=n;Object.entries({...v}).forEach(([s,a])=>{const t=s.split("/").pop().replace(/\.\w+$/,"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e.component(t,l(a))});e.mount("#app");
|
||||
import{_ as o,o as p,c,a as r,b as u,p as i,d as m,e as g,f as _,g as d,v as f,Z as n,h as l}from"./vue-1b15f6c7.js";const A={name:"AppAuth"};function $(s,a,t,Z,w,x){return p(),c("div")}const h=o(A,[["render",$]]),e=r({AppAuth:h}),v=Object.assign({});e.use(u());e.use(i,m);e.use(g);e.use(_);e.use(d);e.use(f.ZiggyVue,n);window.Ziggy=n;Object.entries({...v}).forEach(([s,a])=>{const t=s.split("/").pop().replace(/\.\w+$/,"").replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e.component(t,l(a))});e.mount("#app");
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
public/build/assets/app-front-3e4d9dac.js.gz
Normal file
BIN
public/build/assets/app-front-3e4d9dac.js.gz
Normal file
Binary file not shown.
9
public/build/assets/app-front-8a16d797.css
Normal file
9
public/build/assets/app-front-8a16d797.css
Normal file
File diff suppressed because one or more lines are too long
BIN
public/build/assets/app-front-8a16d797.css.gz
Normal file
BIN
public/build/assets/app-front-8a16d797.css.gz
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/build/assets/futurewalker-cover-fb-ea8d61e2.jpg
Normal file
BIN
public/build/assets/futurewalker-cover-fb-ea8d61e2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 360 KiB |
File diff suppressed because one or more lines are too long
BIN
public/build/assets/vue-1b15f6c7.js.gz
Normal file
BIN
public/build/assets/vue-1b15f6c7.js.gz
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"_vue-541dc6d3.js": {
|
||||
"_vue-1b15f6c7.js": {
|
||||
"css": [
|
||||
"assets/vue-935fc652.css"
|
||||
],
|
||||
"file": "assets/vue-541dc6d3.js"
|
||||
"file": "assets/vue-1b15f6c7.js"
|
||||
},
|
||||
"node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff": {
|
||||
"file": "assets/bootstrap-icons-4d4572ef.woff",
|
||||
@@ -121,6 +121,10 @@
|
||||
"file": "assets/RobotoCondensed-ThinItalic-5ab37aa6.ttf",
|
||||
"src": "resources/fonts/RobotoCondensed/RobotoCondensed-ThinItalic.ttf"
|
||||
},
|
||||
"resources/images/futurewalker-cover-fb.jpg": {
|
||||
"file": "assets/futurewalker-cover-fb-ea8d61e2.jpg",
|
||||
"src": "resources/images/futurewalker-cover-fb.jpg"
|
||||
},
|
||||
"resources/images/tints/caption-bg.png": {
|
||||
"file": "assets/caption-bg-49b89c07.png",
|
||||
"src": "resources/images/tints/caption-bg.png"
|
||||
@@ -174,9 +178,9 @@
|
||||
"src": "resources/images/tints/tint-9.png"
|
||||
},
|
||||
"resources/js/app-auth.js": {
|
||||
"file": "assets/app-auth-fabb569c.js",
|
||||
"file": "assets/app-auth-25a86e45.js",
|
||||
"imports": [
|
||||
"_vue-541dc6d3.js"
|
||||
"_vue-1b15f6c7.js"
|
||||
],
|
||||
"isEntry": true,
|
||||
"src": "resources/js/app-auth.js"
|
||||
@@ -185,17 +189,17 @@
|
||||
"dynamicImports": [
|
||||
"resources/js/vue/front/LqipLoader.vue"
|
||||
],
|
||||
"file": "assets/app-front-dc31ce01.js",
|
||||
"file": "assets/app-front-3e4d9dac.js",
|
||||
"imports": [
|
||||
"_vue-541dc6d3.js"
|
||||
"_vue-1b15f6c7.js"
|
||||
],
|
||||
"isEntry": true,
|
||||
"src": "resources/js/app-front.js"
|
||||
},
|
||||
"resources/js/vue/front/LqipLoader.vue": {
|
||||
"file": "assets/LqipLoader-3a6dd892.js",
|
||||
"file": "assets/LqipLoader-5f2dcf6c.js",
|
||||
"imports": [
|
||||
"_vue-541dc6d3.js"
|
||||
"_vue-1b15f6c7.js"
|
||||
],
|
||||
"isDynamicEntry": true,
|
||||
"src": "resources/js/vue/front/LqipLoader.vue"
|
||||
@@ -206,7 +210,7 @@
|
||||
"src": "resources/sass/app-auth.scss"
|
||||
},
|
||||
"resources/sass/app-front.scss": {
|
||||
"file": "assets/app-front-1cc890bf.css",
|
||||
"file": "assets/app-front-8a16d797.css",
|
||||
"isEntry": true,
|
||||
"src": "resources/sass/app-front.scss"
|
||||
},
|
||||
|
||||
Binary file not shown.
@@ -64,3 +64,40 @@ .bg-globe {
|
||||
inset -20px 0 80px #0ff, inset 20px 0 300px #f0f, inset -20px 0 300px #0ff,
|
||||
0 0 50px #fff, -10px 0 80px #f0f, 10px 0 80px #0ff;
|
||||
}
|
||||
|
||||
/* Custom illuminated button style */
|
||||
.illuminated {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
z-index: 1;
|
||||
animation: shimmer 2s infinite linear; /* Apply the animation to the button */
|
||||
}
|
||||
|
||||
/* Shimmer gradient */
|
||||
.illuminated::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background: linear-gradient(
|
||||
-45deg,
|
||||
rgba(255, 255, 255, 0) 25%,
|
||||
rgba(255, 255, 255, 0.6) 50%,
|
||||
rgba(255, 255, 255, 0) 75%
|
||||
);
|
||||
background-size: 400% 400%;
|
||||
z-index: -1;
|
||||
animation: shimmer 3s infinite; /* Apply the animation to the gradient */
|
||||
}
|
||||
|
||||
/* Define the shimmer effect using keyframes */
|
||||
@keyframes shimmer {
|
||||
0% {
|
||||
background-position: 0 0;
|
||||
}
|
||||
100% {
|
||||
background-position: -400% 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const Ziggy = {"url":"https:\/\/futurewalker.co","port":null,"defaults":{},"routes":{"debugbar.openhandler":{"uri":"_debugbar\/open","methods":["GET","HEAD"]},"debugbar.clockwork":{"uri":"_debugbar\/clockwork\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"debugbar.assets.css":{"uri":"_debugbar\/assets\/stylesheets","methods":["GET","HEAD"]},"debugbar.assets.js":{"uri":"_debugbar\/assets\/javascript","methods":["GET","HEAD"]},"debugbar.cache.delete":{"uri":"_debugbar\/cache\/{key}\/{tags?}","methods":["DELETE"],"parameters":["key","tags"]},"horizon.stats.index":{"uri":"chorizo\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"chorizo\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"chorizo\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"chorizo\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"chorizo\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"chorizo\/api\/monitoring\/{tag}","methods":["GET","HEAD"],"parameters":["tag"]},"horizon.monitoring-tag.destroy":{"uri":"chorizo\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"},"parameters":["tag"]},"horizon.jobs-metrics.index":{"uri":"chorizo\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"chorizo\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.queues-metrics.index":{"uri":"chorizo\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"chorizo\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.jobs-batches.index":{"uri":"chorizo\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"chorizo\/api\/batches\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.jobs-batches.retry":{"uri":"chorizo\/api\/batches\/retry\/{id}","methods":["POST"],"parameters":["id"]},"horizon.pending-jobs.index":{"uri":"chorizo\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"chorizo\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"chorizo\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"chorizo\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"chorizo\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.retry-jobs.show":{"uri":"chorizo\/api\/jobs\/retry\/{id}","methods":["POST"],"parameters":["id"]},"horizon.jobs.show":{"uri":"chorizo\/api\/jobs\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.index":{"uri":"chorizo\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"},"parameters":["view"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"laravelpwa.manifest":{"uri":"manifest.json","methods":["GET","HEAD"]},"laravelpwa.":{"uri":"offline","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"feeds.main":{"uri":"feeds\/posts-feed","methods":["GET","HEAD"]},"front.home":{"uri":"\/","methods":["GET","HEAD"]},"front.terms":{"uri":"terms","methods":["GET","HEAD"]},"front.privacy":{"uri":"privacy","methods":["GET","HEAD"]},"front.disclaimer":{"uri":"disclaimer","methods":["GET","HEAD"]},"front.all":{"uri":"latest","methods":["GET","HEAD"]},"front.search":{"uri":"search","methods":["POST"]},"front.post":{"uri":"{category_slug}\/{slug}","methods":["GET","HEAD"],"parameters":["category_slug","slug"]},"front.category":{"uri":"{category_slug}","methods":["GET","HEAD"],"wheres":{"category_slug":"^(updates|opinions|features|new-launches|how-tos|reviews)$"},"parameters":["category_slug"]}}};
|
||||
const Ziggy = {"url":"https:\/\/futurewalker.co","port":null,"defaults":{},"routes":{"debugbar.openhandler":{"uri":"_debugbar\/open","methods":["GET","HEAD"]},"debugbar.clockwork":{"uri":"_debugbar\/clockwork\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"debugbar.assets.css":{"uri":"_debugbar\/assets\/stylesheets","methods":["GET","HEAD"]},"debugbar.assets.js":{"uri":"_debugbar\/assets\/javascript","methods":["GET","HEAD"]},"debugbar.cache.delete":{"uri":"_debugbar\/cache\/{key}\/{tags?}","methods":["DELETE"],"parameters":["key","tags"]},"horizon.stats.index":{"uri":"chorizo\/api\/stats","methods":["GET","HEAD"]},"horizon.workload.index":{"uri":"chorizo\/api\/workload","methods":["GET","HEAD"]},"horizon.masters.index":{"uri":"chorizo\/api\/masters","methods":["GET","HEAD"]},"horizon.monitoring.index":{"uri":"chorizo\/api\/monitoring","methods":["GET","HEAD"]},"horizon.monitoring.store":{"uri":"chorizo\/api\/monitoring","methods":["POST"]},"horizon.monitoring-tag.paginate":{"uri":"chorizo\/api\/monitoring\/{tag}","methods":["GET","HEAD"],"parameters":["tag"]},"horizon.monitoring-tag.destroy":{"uri":"chorizo\/api\/monitoring\/{tag}","methods":["DELETE"],"wheres":{"tag":".*"},"parameters":["tag"]},"horizon.jobs-metrics.index":{"uri":"chorizo\/api\/metrics\/jobs","methods":["GET","HEAD"]},"horizon.jobs-metrics.show":{"uri":"chorizo\/api\/metrics\/jobs\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.queues-metrics.index":{"uri":"chorizo\/api\/metrics\/queues","methods":["GET","HEAD"]},"horizon.queues-metrics.show":{"uri":"chorizo\/api\/metrics\/queues\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.jobs-batches.index":{"uri":"chorizo\/api\/batches","methods":["GET","HEAD"]},"horizon.jobs-batches.show":{"uri":"chorizo\/api\/batches\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.jobs-batches.retry":{"uri":"chorizo\/api\/batches\/retry\/{id}","methods":["POST"],"parameters":["id"]},"horizon.pending-jobs.index":{"uri":"chorizo\/api\/jobs\/pending","methods":["GET","HEAD"]},"horizon.completed-jobs.index":{"uri":"chorizo\/api\/jobs\/completed","methods":["GET","HEAD"]},"horizon.silenced-jobs.index":{"uri":"chorizo\/api\/jobs\/silenced","methods":["GET","HEAD"]},"horizon.failed-jobs.index":{"uri":"chorizo\/api\/jobs\/failed","methods":["GET","HEAD"]},"horizon.failed-jobs.show":{"uri":"chorizo\/api\/jobs\/failed\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.retry-jobs.show":{"uri":"chorizo\/api\/jobs\/retry\/{id}","methods":["POST"],"parameters":["id"]},"horizon.jobs.show":{"uri":"chorizo\/api\/jobs\/{id}","methods":["GET","HEAD"],"parameters":["id"]},"horizon.index":{"uri":"chorizo\/{view?}","methods":["GET","HEAD"],"wheres":{"view":"(.*)"},"parameters":["view"]},"sanctum.csrf-cookie":{"uri":"sanctum\/csrf-cookie","methods":["GET","HEAD"]},"laravelpwa.manifest":{"uri":"manifest.json","methods":["GET","HEAD"]},"laravelpwa.":{"uri":"offline","methods":["GET","HEAD"]},"ignition.healthCheck":{"uri":"_ignition\/health-check","methods":["GET","HEAD"]},"ignition.executeSolution":{"uri":"_ignition\/execute-solution","methods":["POST"]},"ignition.updateConfig":{"uri":"_ignition\/update-config","methods":["POST"]},"feeds.main":{"uri":"feeds\/posts-feed","methods":["GET","HEAD"]},"front.home":{"uri":"\/","methods":["GET","HEAD"]},"front.terms":{"uri":"terms","methods":["GET","HEAD"]},"front.privacy":{"uri":"privacy","methods":["GET","HEAD"]},"front.disclaimer":{"uri":"disclaimer","methods":["GET","HEAD"]},"front.all":{"uri":"bites","methods":["GET","HEAD"]},"front.search":{"uri":"search","methods":["POST"]},"front.search.results":{"uri":"bites\/{query}","methods":["GET","HEAD"],"parameters":["query"]},"front.post":{"uri":"{category_slug}\/{slug}","methods":["GET","HEAD"],"parameters":["category_slug","slug"]},"front.category":{"uri":"{category_slug}","methods":["GET","HEAD"],"wheres":{"category_slug":"^(updates|opinions|features|new-launches|how-tos|reviews)$"},"parameters":["category_slug"]}}};
|
||||
|
||||
if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') {
|
||||
Object.assign(Ziggy.routes, window.Ziggy.routes);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<aside class="p-4 mb-3 bg-black text-white rounded-3 shadow-sm">
|
||||
<h4 class="font-family-roboto-condensed">About <span class="text-uppercase">FutureWalker</span></h4>
|
||||
<p class="mb-0">
|
||||
FutureWalker offers specialized coverage of advanced technology and AI breakthroughs, delivering the latest trends and insights through concise, 1-2 minute news updates to quickly bring you up to speed.
|
||||
FutureWalker offers specialized coverage of advanced technology and AI breakthroughs, delivering the latest
|
||||
trends and insights through concise, 1-2 minute news updates to quickly bring you up to speed.
|
||||
</p>
|
||||
</aside>
|
||||
|
||||
@@ -1,87 +1,82 @@
|
||||
<div class="accordion" id="accordionTechBites">
|
||||
|
||||
@foreach ($rss_posts as $key => $post)
|
||||
@foreach ($rss_posts as $key => $post)
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="heading{{ $post->id }}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#collapse{{ $post->id }}" aria-controls="collapse{{ $post->id }}">
|
||||
<div>
|
||||
<h3 class="h6 mb-2 fw fw-semibold font-family-roboto-condensed">
|
||||
{{ $post->title }}
|
||||
</h3>
|
||||
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="heading{{ $post->id }}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#collapse{{ $post->id }}" aria-controls="collapse{{ $post->id }}">
|
||||
<div>
|
||||
<h3 class="h6 mb-2 fw fw-semibold font-family-roboto-condensed">
|
||||
{{ $post->title }}
|
||||
</h3>
|
||||
|
||||
<div class="d-flex flex-wrap mb-1">
|
||||
@if ($post->entities)
|
||||
@foreach ($post->entities as $key => $keyword)
|
||||
|
||||
@if ($key == 0)
|
||||
<h4
|
||||
class="mb-1 pb-1 d-inline badge bg-secondary border-secondary text-white border me-1 small fw-bold">
|
||||
{{ $keyword }}
|
||||
</h4>
|
||||
@else
|
||||
<h4
|
||||
class="mb-1 pb-1 d-inline badge text-bg-light border me-1 small fw-normal">
|
||||
{{ $keyword }}
|
||||
</h4>
|
||||
@endif
|
||||
|
||||
|
||||
@endforeach
|
||||
@endif
|
||||
@if ($post->impact_level == 'high')
|
||||
<h4
|
||||
class="font-family-roboto-condensed mb-1 pb-1 d-inline badge bg-danger border-danger text-white border me-1 small fw-bold text-uppercase">
|
||||
🔥 High Impact
|
||||
</h4>
|
||||
@endif
|
||||
@if ($post->entities)
|
||||
@foreach ($post->entities as $key => $keyword)
|
||||
@if ($key == 0)
|
||||
<h4
|
||||
class="mb-1 pb-1 d-inline badge bg-secondary border-secondary text-white border me-1 small fw-bold">
|
||||
{{ $keyword }}
|
||||
</h4>
|
||||
@else
|
||||
<h4 class="mb-1 pb-1 d-inline badge text-bg-light border me-1 small fw-normal">
|
||||
{{ $keyword }}
|
||||
</h4>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@if ($post->impact_level == 'high')
|
||||
<h4
|
||||
class="font-family-roboto-condensed mb-1 pb-1 d-inline badge bg-danger border-danger text-white border me-1 small fw-bold text-uppercase">
|
||||
🔥 High Impact
|
||||
</h4>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="small">
|
||||
@if ($post->category)
|
||||
<span
|
||||
class="d-inline text-secondary small">{{ $post->category->name }}</span>
|
||||
<i class="bi bi-dot"></i>
|
||||
@endif
|
||||
<div class="small">
|
||||
@if ($post->category)
|
||||
<span class="d-inline text-secondary small">{{ $post->category->name }}</span>
|
||||
<i class="bi bi-dot"></i>
|
||||
@endif
|
||||
|
||||
<span
|
||||
class="d-inline text-secondary small">{{ $post->published_at->format('d M') }}</span>
|
||||
<i class="bi bi-dot"></i>
|
||||
<span
|
||||
class="d-inline text-secondary small">{{ min_read($post->bites) }}</span>
|
||||
<span class="d-inline text-secondary small">{{ $post->published_at->format('d M') }}</span>
|
||||
<i class="bi bi-dot"></i>
|
||||
<span class="d-inline text-secondary small">{{ min_read($post->bites) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse{{ $post->id }}" class="accordion-collapse collapse"
|
||||
aria-labelledby="heading{{ $post->id }}" data-bs-parent="#accordionTechBites">
|
||||
<div class="accordion-body small">
|
||||
<div class="fw-bold">The Bite:</div>
|
||||
<div class="mb-3">{{ $post->bites }}</div>
|
||||
|
||||
@if (in_array($post->impact_level, ['medium', 'high']))
|
||||
<div class="card mb-2">
|
||||
<div class="card-body">
|
||||
<div class="fw-bold">Social Impact:</div>
|
||||
<div>{{ $post->impact }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if ($post->entities)
|
||||
<div class="mb-2">
|
||||
More about: @foreach ($post->all_keywords as $keyword)
|
||||
<a class="ms-1"
|
||||
href="{{ get_route_search_result($keyword) }}">{{ $keyword }}</a>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
<div>
|
||||
Read more at:
|
||||
<a class="" target="_blank" rel="nofollow noopener noreferrer"
|
||||
href="{{ $post->post_url }}"> {{ get_domain_from_url($post->post_url) }} </a>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse{{ $post->id }}" class="accordion-collapse collapse" aria-labelledby="heading{{ $post->id }}"
|
||||
data-bs-parent="#accordionTechBites">
|
||||
<div class="accordion-body small">
|
||||
<div class="fw-bold">The Bite:</div>
|
||||
<div class="mb-3">{{ $post->bites }}</div>
|
||||
|
||||
@if (in_array($post->impact_level, ['medium','high']))
|
||||
<div class="card mb-2">
|
||||
<div class="card-body">
|
||||
<div class="fw-bold">Social Impact:</div>
|
||||
<div>{{ $post->impact }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@if ($post->entities)
|
||||
<div class="mb-2">
|
||||
More about: @foreach( $post->all_keywords as $keyword) <a class="ms-1" href="{{ get_route_search_result($keyword) }}">{{ $keyword }}</a> @endforeach
|
||||
</div>
|
||||
@endif
|
||||
<div>
|
||||
Read more at:
|
||||
<a class="" target="_blank" rel="nofollow noopener noreferrer" href="{{ $post->post_url }}"> {{ get_domain_from_url($post->post_url) }} </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endforeach
|
||||
@endforeach
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
@include('front.partials.news_bites')
|
||||
|
||||
<div class="mt-3 mb-3">
|
||||
@if ($rss_posts->count() > 0)
|
||||
@if ($rss_posts instanceof \Illuminate\Pagination\CursorPaginator)
|
||||
<div class="flex justify-center">
|
||||
{{ $rss_posts->links('pagination::simple-bootstrap-5-rounded') }}
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<div class="py-3 text-center">
|
||||
<div class="mb-4">No 🍪 bites found yet.</div>
|
||||
<div><a href="{{ route('front.all') }}">See more News Bites</a></div>
|
||||
</div>
|
||||
@endif
|
||||
@if ($rss_posts->count() > 0)
|
||||
@if ($rss_posts instanceof \Illuminate\Pagination\CursorPaginator)
|
||||
<div class="flex justify-center">
|
||||
{{ $rss_posts->links('pagination::simple-bootstrap-5-rounded') }}
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<div class="py-3 text-center">
|
||||
<div class="mb-4">No 🍪 bites found yet.</div>
|
||||
<div><a href="{{ route('front.all') }}">See more News Bites</a></div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<div class="container-lg">
|
||||
<div class="text-center row justify-content-center">
|
||||
<div class="col-12 col-md-10 col-lg-8">
|
||||
<div class="display-6 fw-bold font-family-roboto-condensed mb-2">Your future depends<wbr> on today's
|
||||
news.</div>
|
||||
<div class="display-6 fw-bold font-family-roboto-condensed mb-2">Your Future Depends<wbr> on Today's
|
||||
News</div>
|
||||
<h1 class="h4 fw-normal mb-4">In the fast-evolving world of AI and tech, staying updated is not
|
||||
optional—it's critical for your future success. Stay updated with daily news 🍪 bites from
|
||||
<strong>FutureWalker</strong>.
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- @if ($featured_posts->count() > 0)
|
||||
{{-- @if ($featured_posts->count() > 0)
|
||||
<div class="container-lg py-4">
|
||||
<div class="text-center">
|
||||
<h2 id="latest-news" class="font-family-roboto-condensed mb-3 h2">Featured News</h2>
|
||||
@@ -60,7 +60,17 @@ class="text-secondary">{{ $post->published_at->diffForHumans() }}</small>
|
||||
|
||||
@if ($rss_posts->count() > 0)
|
||||
<div class="text-start mb-3">
|
||||
<h2 id="latest-news" class="fw-bold font-family-roboto-condensed mb-1 h2">🍪 Tech Bites</h2>
|
||||
<div class="d-flex">
|
||||
<h2 id="latest-news" class="align-self-center fw-bold font-family-roboto-condensed mb-1 h2">
|
||||
🍪 Tech Bites </h2>
|
||||
<div class="align-self-center">
|
||||
<span
|
||||
class="mb-2 ms-2 badge illuminated text-bg-primary d-inline-flex font-family-roboto-condensed"><i
|
||||
class="bi bi-clock-history me-1"></i> UPDATED HOURLY</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<h5>1-2 minute news bites worth every second</h5>
|
||||
</div>
|
||||
|
||||
@@ -71,11 +81,9 @@ class="text-secondary">{{ $post->published_at->diffForHumans() }}</small>
|
||||
<a href="{{ route('front.all') }}"
|
||||
class="btn btn-primary px-4 rounded-pill text-decoration-none">Read more News Bites</a>
|
||||
</div>
|
||||
|
||||
|
||||
@endif
|
||||
|
||||
{{-- @if ($latest_posts->count() > 0)
|
||||
{{-- @if ($latest_posts->count() > 0)
|
||||
<div class="text-start">
|
||||
<h2 id="latest-news" class="fw-semibold font-family-roboto-condensed mb-3 h2">Latest News</h2>
|
||||
</div>
|
||||
|
||||
@@ -45,9 +45,8 @@
|
||||
|
||||
$hours = $request->input('hours');
|
||||
|
||||
if (is_empty($hours))
|
||||
{
|
||||
return "Missing 'hours'.";
|
||||
if (is_empty($hours)) {
|
||||
return "Missing 'hours'.";
|
||||
}
|
||||
|
||||
BrowseRSSPostJob::dispatch($hours)->onQueue('default')->onConnection('default');
|
||||
|
||||
Reference in New Issue
Block a user