Update (ui)

This commit is contained in:
2023-12-03 13:14:42 +08:00
parent 2b9c5f88bc
commit 8309fd467c
22 changed files with 191 additions and 98 deletions

View File

@@ -26,7 +26,7 @@ public static function handle(int $rss_post_id)
// return; // return;
// } // }
$final_content = "TITLE: {$rss_post->title} \n BODY:" . $rss_post->body; $final_content = "TITLE: {$rss_post->title} \n BODY:".$rss_post->body;
if (in_array($rss_post->status, ['blocked', 'trashed'])) { if (in_array($rss_post->status, ['blocked', 'trashed'])) {
return; return;

View File

@@ -1 +1 @@
import{_ as i}from"./vue-9d41a690.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-f60b87be.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};

View File

@@ -0,0 +1 @@
import{M as d}from"./app-front-1412cff8.js";import{_ as n,c as i,i as e,t as l,n as c,o as r}from"./vue-f60b87be.js";const m={name:"OpenNewsBite",props:["title","bite","thisClass","minRead"],data(){return{modalInstance:null}},methods:{openModal(){this.modalInstance=new d(this.$refs.modal,{keyboard:!1}),this.modalInstance.show()},closeModal(){this.modalInstance&&this.modalInstance.hide()}}},_={class:"modal",ref:"modal",tabindex:"-1",role:"dialog","aria-labelledby":"modalLabel","aria-hidden":"true"},b={class:"modal-dialog modal-dialog-centered",role:"document"},h={class:"modal-content"},u={class:"modal-header text-start font-family-roboto-condensed fw-bolder"},f={class:"modal-title",id:"modalLabel"},p={class:"modal-body text-start small"},M=["innerHTML"];function v(y,t,a,B,x,o){return r(),i("div",null,[e("button",{type:"button",class:c(a.thisClass),onClick:t[0]||(t[0]=(...s)=>o.openModal&&o.openModal(...s))}," 🍪 Read Bite ("+l(a.minRead)+") ",3),e("div",_,[e("div",b,[e("div",h,[e("div",u,[e("h5",f,"The Bite: "+l(a.title),1),e("button",{type:"button",class:"btn-close",onClick:t[1]||(t[1]=(...s)=>o.closeModal&&o.closeModal(...s)),"aria-label":"Close"})]),e("div",p,[e("p",{innerHTML:a.bite},null,8,M)])])])],512)])}const I=n(m,[["render",v],["__scopeId","data-v-8c042ab4"]]);export{I as default};

Binary file not shown.

View File

@@ -1 +1 @@
import{_ as u,l as b,c as r,i as t,j as p,k as h,o as n,m as _,n as m}from"./vue-9d41a690.js";const f={name:"ShareToFriends",data(){return{showModal:!1,shareUrl:null}},computed:{isMobileDevice(){return!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}},methods:{handleShareButton(){if(navigator.share){const s=document.title,e=document.querySelector('meta[name="description"]'),d=e?"Check this out: "+e.content:"",c=s||"FutureWalker",a=d||"Check this AI & tech news platform out!";navigator.share({title:c,text:a,url:this.shareUrl}).then(()=>{}).catch(o=>{})}else this.showModal=!0},copyLink(){navigator.clipboard.writeText(this.shareUrl).then(()=>{b("Copied!",{position:"bottom-center",type:"success",timeout:1500,closeOnClick:!0,pauseOnFocusLoss:!0,pauseOnHover:!0,draggable:!0,draggablePercent:.6,showCloseButtonOnHover:!1,hideProgressBar:!1,closeButton:!0,icon:!0,rtl:!1})}).catch(s=>{})}},mounted(){this.shareUrl=window.location.href}},i=s=>(_("data-v-e7f1c1a4"),s=s(),m(),s),y={class:"d-flex",style:{height:"100%"}},g=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),k=[g],v=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),w={key:0,class:"modal fade show",id:"shareModal",tabindex:"-1","aria-labelledby":"shareModalLabel",style:{display:"block"},"aria-modal":"true",role:"dialog"},x={class:"modal-dialog modal-dialog-centered"},S={class:"modal-content"},B={class:"modal-header"},C=i(()=>t("h1",{class:"modal-title fs-5 text-black fw-bold",id:"shareModalLabel"}," Share to Friends ",-1)),M={class:"modal-body d-grid gap-2"},T=["value"],L={key:1,class:"modal-backdrop fade show"};function F(s,e,d,c,a,o){return n(),r("div",null,[t("div",y,[o.isMobileDevice?(n(),r("button",{key:0,type:"button",class:"align-self-center btn btn-link text-white ms-1 btn-lg px-1 hover-opacity",onClick:e[0]||(e[0]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},k)):(n(),r("button",{key:1,type:"button",class:"align-self-center btn btn-light ms-2 mb-0",onClick:e[1]||(e[1]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},[v,p(" Share ")]))]),a.showModal?(n(),r("div",w,[t("div",x,[t("div",S,[t("div",B,[C,t("button",{type:"button",class:"btn-close",onClick:e[2]||(e[2]=l=>a.showModal=!1),"aria-label":"Close"})]),t("div",M,[t("input",{type:"text",readonly:"",class:"form-control",value:a.shareUrl},null,8,T),t("button",{class:"btn btn-primary w-full",onClick:e[3]||(e[3]=(...l)=>o.copyLink&&o.copyLink(...l))}," Copy Link ")])])])])):h("",!0),a.showModal?(n(),r("div",L)):h("",!0)])}const O=u(f,[["render",F],["__scopeId","data-v-e7f1c1a4"]]);export{O as default}; import{_ as u,l as b,c as r,i as t,j as p,k as h,o as n,m as _,q as m}from"./vue-f60b87be.js";const f={name:"ShareToFriends",data(){return{showModal:!1,shareUrl:null}},computed:{isMobileDevice(){return!!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}},methods:{handleShareButton(){if(navigator.share){const s=document.title,e=document.querySelector('meta[name="description"]'),d=e?"Check this out: "+e.content:"",c=s||"FutureWalker",a=d||"Check this AI & tech news platform out!";navigator.share({title:c,text:a,url:this.shareUrl}).then(()=>{}).catch(o=>{})}else this.showModal=!0},copyLink(){navigator.clipboard.writeText(this.shareUrl).then(()=>{b("Copied!",{position:"bottom-center",type:"success",timeout:1500,closeOnClick:!0,pauseOnFocusLoss:!0,pauseOnHover:!0,draggable:!0,draggablePercent:.6,showCloseButtonOnHover:!1,hideProgressBar:!1,closeButton:!0,icon:!0,rtl:!1})}).catch(s=>{})}},mounted(){this.shareUrl=window.location.href}},i=s=>(_("data-v-e7f1c1a4"),s=s(),m(),s),y={class:"d-flex",style:{height:"100%"}},g=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),k=[g],v=i(()=>t("i",{class:"bi bi-share-fill"},null,-1)),w={key:0,class:"modal fade show",id:"shareModal",tabindex:"-1","aria-labelledby":"shareModalLabel",style:{display:"block"},"aria-modal":"true",role:"dialog"},x={class:"modal-dialog modal-dialog-centered"},S={class:"modal-content"},B={class:"modal-header"},C=i(()=>t("h1",{class:"modal-title fs-5 text-black fw-bold",id:"shareModalLabel"}," Share to Friends ",-1)),M={class:"modal-body d-grid gap-2"},T=["value"],L={key:1,class:"modal-backdrop fade show"};function F(s,e,d,c,a,o){return n(),r("div",null,[t("div",y,[o.isMobileDevice?(n(),r("button",{key:0,type:"button",class:"align-self-center btn btn-link text-white ms-1 btn-lg px-1 hover-opacity",onClick:e[0]||(e[0]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},k)):(n(),r("button",{key:1,type:"button",class:"align-self-center btn btn-light ms-2 mb-0",onClick:e[1]||(e[1]=(...l)=>o.handleShareButton&&o.handleShareButton(...l))},[v,p(" Share ")]))]),a.showModal?(n(),r("div",w,[t("div",x,[t("div",S,[t("div",B,[C,t("button",{type:"button",class:"btn-close",onClick:e[2]||(e[2]=l=>a.showModal=!1),"aria-label":"Close"})]),t("div",M,[t("input",{type:"text",readonly:"",class:"form-control",value:a.shareUrl},null,8,T),t("button",{class:"btn btn-primary w-full",onClick:e[3]||(e[3]=(...l)=>o.copyLink&&o.copyLink(...l))}," Copy Link ")])])])])):h("",!0),a.showModal?(n(),r("div",L)):h("",!0)])}const O=u(f,[["render",F],["__scopeId","data-v-e7f1c1a4"]]);export{O as default};

Binary file not shown.

View File

@@ -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-9d41a690.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-f60b87be.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

View File

@@ -1,9 +1,9 @@
{ {
"_vue-9d41a690.js": { "_vue-f60b87be.js": {
"css": [ "css": [
"assets/vue-935fc652.css" "assets/vue-935fc652.css"
], ],
"file": "assets/vue-9d41a690.js" "file": "assets/vue-f60b87be.js"
}, },
"node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff": { "node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff": {
"file": "assets/bootstrap-icons-4d4572ef.woff", "file": "assets/bootstrap-icons-4d4572ef.woff",
@@ -178,9 +178,9 @@
"src": "resources/images/tints/tint-9.png" "src": "resources/images/tints/tint-9.png"
}, },
"resources/js/app-auth.js": { "resources/js/app-auth.js": {
"file": "assets/app-auth-9eb438e3.js", "file": "assets/app-auth-9fb6bed7.js",
"imports": [ "imports": [
"_vue-9d41a690.js" "_vue-f60b87be.js"
], ],
"isEntry": true, "isEntry": true,
"src": "resources/js/app-auth.js" "src": "resources/js/app-auth.js"
@@ -188,34 +188,51 @@
"resources/js/app-front.js": { "resources/js/app-front.js": {
"dynamicImports": [ "dynamicImports": [
"resources/js/vue/front/LqipLoader.vue", "resources/js/vue/front/LqipLoader.vue",
"resources/js/vue/front/OpenNewsBite.vue",
"resources/js/vue/front/ShareToFriends.vue" "resources/js/vue/front/ShareToFriends.vue"
], ],
"file": "assets/app-front-28da81e8.js", "file": "assets/app-front-1412cff8.js",
"imports": [ "imports": [
"_vue-9d41a690.js" "_vue-f60b87be.js"
], ],
"isEntry": true, "isEntry": true,
"src": "resources/js/app-front.js" "src": "resources/js/app-front.js"
}, },
"resources/js/vue/front/LqipLoader.vue": { "resources/js/vue/front/LqipLoader.vue": {
"file": "assets/LqipLoader-08f53114.js", "file": "assets/LqipLoader-c29f6ec9.js",
"imports": [ "imports": [
"_vue-9d41a690.js" "_vue-f60b87be.js"
], ],
"isDynamicEntry": true, "isDynamicEntry": true,
"src": "resources/js/vue/front/LqipLoader.vue" "src": "resources/js/vue/front/LqipLoader.vue"
}, },
"resources/js/vue/front/OpenNewsBite.css": {
"file": "assets/OpenNewsBite-e3b0c442.css",
"src": "resources/js/vue/front/ShareToFriends.css"
},
"resources/js/vue/front/OpenNewsBite.vue": {
"css": [
"assets/OpenNewsBite-e3b0c442.css"
],
"file": "assets/OpenNewsBite-75a2c3ff.js",
"imports": [
"resources/js/app-front.js",
"_vue-f60b87be.js"
],
"isDynamicEntry": true,
"src": "resources/js/vue/front/OpenNewsBite.vue"
},
"resources/js/vue/front/ShareToFriends.css": { "resources/js/vue/front/ShareToFriends.css": {
"file": "assets/ShareToFriends-e3b0c442.css", "file": "assets/OpenNewsBite-e3b0c442.css",
"src": "resources/js/vue/front/ShareToFriends.css" "src": "resources/js/vue/front/ShareToFriends.css"
}, },
"resources/js/vue/front/ShareToFriends.vue": { "resources/js/vue/front/ShareToFriends.vue": {
"css": [ "css": [
"assets/ShareToFriends-e3b0c442.css" "assets/OpenNewsBite-e3b0c442.css"
], ],
"file": "assets/ShareToFriends-65ab958a.js", "file": "assets/ShareToFriends-8fa77fac.js",
"imports": [ "imports": [
"_vue-9d41a690.js" "_vue-f60b87be.js"
], ],
"isDynamicEntry": true, "isDynamicEntry": true,
"src": "resources/js/vue/front/ShareToFriends.vue" "src": "resources/js/vue/front/ShareToFriends.vue"

Binary file not shown.

View File

@@ -0,0 +1,68 @@
<template>
<div>
<!-- Button to open the modal -->
<button type="button" :class="thisClass" @click="openModal">
🍪 Read Bite ({{ minRead }})
</button>
<!-- Bootstrap Modal -->
<div
class="modal"
ref="modal"
tabindex="-1"
role="dialog"
aria-labelledby="modalLabel"
aria-hidden="true"
>
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div
class="modal-header text-start font-family-roboto-condensed fw-bolder"
>
<h5 class="modal-title" id="modalLabel">The Bite: {{ title }}</h5>
<button
type="button"
class="btn-close"
@click="closeModal"
aria-label="Close"
></button>
</div>
<div class="modal-body text-start small">
<p v-html="bite"></p>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { Modal } from "bootstrap";
export default {
name: "OpenNewsBite",
props: ["title", "bite", "thisClass", "minRead"],
data() {
return {
modalInstance: null,
};
},
methods: {
openModal() {
this.modalInstance = new Modal(this.$refs.modal, {
keyboard: false,
});
this.modalInstance.show();
},
closeModal() {
if (this.modalInstance) {
this.modalInstance.hide();
}
},
},
};
</script>
<style scoped>
/* Add any additional styling here */
</style>

View File

@@ -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":"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"]}}}; 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":"news","methods":["GET","HEAD"]},"front.search":{"uri":"search","methods":["POST"]},"front.search.results":{"uri":"news\/{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') { if (typeof window !== 'undefined' && typeof window.Ziggy !== 'undefined') {
Object.assign(Ziggy.routes, window.Ziggy.routes); Object.assign(Ziggy.routes, window.Ziggy.routes);

View File

@@ -28,7 +28,8 @@
<div class="text-center text-md-end"> <div class="text-center text-md-end">
<div class="d-flex d-justify-content-end"> <div class="d-flex d-justify-content-end">
<div data-nosnippet class="align-self-center d-none d-md-block">Digital news shaping your future</div> <div data-nosnippet class="align-self-center d-none d-md-block">Digital news shaping your future
</div>
<button type="button" <button type="button"
class="align-self-center ms-1 btn btn-link text-white btn-lg px-1 hover-opacity" class="align-self-center ms-1 btn btn-link text-white btn-lg px-1 hover-opacity"

View File

@@ -2,34 +2,35 @@
<div class="card mb-1"> <div class="card mb-1">
<div class="card-body"> <div class="card-body">
<div class="d-grid d-md-flex justify-content-md-between"> <div class="d-grid d-md-flex justify-content-md-between">
<div class="w-100"> <div class="w-100 mb-2">
<h3 class="h6 mb-1 fw fw-semibold font-family-roboto-condensed"> <h3 class="h5 mb-1 fw fw-semibold font-family-roboto-condensed">
{{ $post->title }} {{ $post->title }}
</h3> </h3>
@if ($post->entities_keywords->count() > 0) @if ($post->entities_keywords->count() > 0)
<div class="d-flex flex-wrap mb-1 gap-1"> <div class="d-flex flex-wrap mb-1 gap-1">
{{-- @if ($post->entities) --}} {{-- @if ($post->entities) --}}
@foreach ($post->entities_keywords as $keyword) @foreach ($post->entities_keywords as $keyword)
{{-- @if ($keyword->type == 'entity') --}} {{-- @if ($keyword->type == 'entity') --}}
@if ($loop->iteration <= 3) @if ($loop->iteration <= 3)
@if ($keyword->is_main) @if ($keyword->is_main)
<h4 class="mb-0 pb-1 d-inline badge bg-secondary border-secondary text-white border small fw-bold"> <h4
{{ $keyword->value }} class="mb-0 pb-1 d-inline badge bg-secondary border-secondary text-white border small fw-bold">
</h4> {{ $keyword->value }}
@else </h4>
<h4 class="mb-0 pb-1 d-inline badge text-bg-light border small fw-normal"> @else
{{ $keyword->value }} <h4 class="mb-0 pb-1 d-inline badge text-bg-light border small fw-normal">
</h4> {{ $keyword->value }}
@endif </h4>
@elseif ($loop->iteration > 3 && count($post->entities_keywords) > 3) @endif
<h4 class="mb-0 pb-1 d-inline badge text-bg-light border small fw-normal"> @elseif ($loop->iteration > 3 && count($post->entities_keywords) > 3)
+{{ count($post->entities_keywords) - 3 }} more <h4 class="mb-0 pb-1 d-inline badge text-bg-light border small fw-normal">
</h4> +{{ count($post->entities_keywords) - 3 }} more
@break </h4>
@endif @break
{{-- @endif --}} @endif
@endforeach {{-- @endif --}}
@endforeach
{{-- @endif --}} {{-- @endif --}}
@@ -57,11 +58,6 @@ class="font-family-roboto-condensed mb-0 pb-1 d-inline badge bg-danger border-da
</span> </span>
@if (!is_empty($post->bites))
<i class="bi bi-dot"></i>
<span class="d-inline text-secondary small">{{ min_read($post->bites) }}</span>
@endif
<i class="bi bi-dot"></i> <i class="bi bi-dot"></i>
<span class="d-inline text-secondary small"> <span class="d-inline text-secondary small">
{{ get_domain_from_url($post->post_url) }} {{ get_domain_from_url($post->post_url) }}
@@ -69,10 +65,16 @@ class="font-family-roboto-condensed mb-0 pb-1 d-inline badge bg-danger border-da
</div> </div>
</div> </div>
<div class="text-end d-flex justify-content-end w-100"> <div class="text-end d-flex justify-content-center justify-content-md-end w-100">
<div class="align-self-center"> <div class="align-self-center d-flex d-md-grid gap-1">
<open-news-bite
this-class="btn btn-outline-secondary btn-sm rounded-pill px-3 text-decoration-none"
title="{{ $post->title }}" bite="{{ $post->bites }}"
min-read="{{ min_read($post->bites, 'bite') }}"></open-news-bite>
<a class="btn btn-outline-secondary btn-sm rounded-pill px-3 text-decoration-none" <a class="btn btn-outline-secondary btn-sm rounded-pill px-3 text-decoration-none"
target="_blank" rel="nofollow noopener noreferrer" href="{{ $post->post_url }}">👉 Read article</a> target="_blank" rel="nofollow noopener noreferrer" href="{{ $post->post_url }}">👉 Read
full
article</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -7,8 +7,9 @@
<div class="col-12 col-md-10 col-lg-8"> <div class="col-12 col-md-10 col-lg-8">
<h1 class="fw-bolder font-family-roboto-condensed mb-3">Latest AI & tech news in 1 hyper-focused platform</h1> <h1 class="fw-bolder font-family-roboto-condensed mb-3">Latest AI & tech news in 1 hyper-focused
{{-- <div class="display-6 fw-bold font-family-roboto-condensed mb-2">Your Future Depends<wbr> on Today's platform</h1>
{{-- <div class="display-6 fw-bold font-family-roboto-condensed mb-2">Your Future Depends<wbr> on Today's
News</div> News</div>
<h1 class="h4 fw-normal mb-4">In the fast-evolving world of AI and tech, staying updated is not <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 hourly news optional—it's critical for your future success. Stay updated with hourly news
@@ -18,29 +19,30 @@
<a href="#latest-news" class="btn btn-primary px-4 rounded-pill text-decoration-none">Start reading <a href="#latest-news" class="btn btn-primary px-4 rounded-pill text-decoration-none">Start reading
now</a> now</a>
</div> --}} </div> --}}
</div> </div>
<div class="text-center row justify-content-center"> <div class="text-center row justify-content-center">
<div class="col-12 col-md-10 col-lg-6"> <div class="col-12 col-md-10 col-lg-6">
<p data-nosnippet class="h4 mb-3">📡 Top keywords identified for the past 24 hours across
{{ $rss_count }} articles identified by AI</p>
<div class="d-flex justify-content-center flex-wrap gap-1">
@foreach ($top_rss_keywords as $rss_keyword)
<a href="{{ get_route_search_result($rss_keyword->value_lowercased) }}"
class=" pb-1 badge text-primary border fw-bold shadow hover-grow">
<span class="h6">#{{ $rss_keyword->value }}</span>
</a>
@endforeach
</div>
<p data-nosnippet class="h4 mb-3">📡 Top keywords identified for the past 24 hours across {{ $rss_count }} articles identified by GPT</p>
<div class="d-flex justify-content-center flex-wrap gap-1">
@foreach ($top_rss_keywords as $rss_keyword)
<a href="{{ get_route_search_result($rss_keyword->value_lowercased) }}"
class=" pb-1 badge text-primary border fw-bold shadow hover-grow">
<span class="h6">#{{ $rss_keyword->value }}</span>
</a>
@endforeach
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
{{-- @if ($featured_posts->count() > 0) {{-- @if ($featured_posts->count() > 0)
<div class="container-lg py-4"> <div class="container-lg py-4">
<div class="text-center"> <div class="text-center">
<h2 id="latest-news" class="font-family-roboto-condensed mb-3 h2">Featured News</h2> <h2 id="latest-news" class="font-family-roboto-condensed mb-3 h2">Featured News</h2>
@@ -75,36 +77,39 @@ class="text-secondary">{{ $post->published_at->diffForHumans() }}</small>
@endif --}} @endif --}}
<div id="latest-news" class="container-lg py-4"> <div id="latest-news" class="container-lg py-4">
<div class="row"> <div class="row">
<div class="col-12 col-lg-8 mb-3"> <div class="col-12 col-lg-8 mb-3">
@if ($rss_posts->count() > 0)
<div class="text-start mb-3">
<div class="d-flex">
<h2 class="align-self-center fw-bold font-family-roboto-condensed mb-1 h2">
This Just In 🛰️</h2>
<div class="align-self-center">
<span
class="mb-2 ms-2 badge illuminated-slow bg-gradient-rainbow text-white d-inline-flex font-family-roboto-condensed"><i
class="bi bi-clock-history me-1"></i> UPDATED HOURLY</span>
</div>
@if ($rss_posts->count() > 0)
<div class="text-start mb-3">
<div class="d-flex">
<h2 class="align-self-center fw-bold font-family-roboto-condensed mb-1 h2">
This Just In 🛰️</h2>
<div class="align-self-center">
<span
class="mb-2 ms-2 badge illuminated-slow bg-gradient-rainbow text-white d-inline-flex font-family-roboto-condensed"><i
class="bi bi-clock-history me-1"></i> UPDATED HOURLY</span>
</div> </div>
<p class="text-secondary font-family-roboto-condensed">No time to read the full article?
Read the 🍪 bite, summarised by AI!</p>
</div> </div>
</div>
@include('front.partials.news_bites')
@include('front.partials.news_bites') <div class="w-full text-center mt-3 mb-3">
<a href="{{ route('front.all') }}"
class="btn btn-primary px-4 rounded-pill text-decoration-none">Discover more news</a>
</div>
@endif
<div class="w-full text-center mt-3 mb-3"> {{-- @if ($latest_posts->count() > 0)
<a href="{{ route('front.all') }}"
class="btn btn-primary px-4 rounded-pill text-decoration-none">Discover more news</a>
</div>
@endif
{{-- @if ($latest_posts->count() > 0)
<div class="text-start"> <div class="text-start">
<h2 id="latest-news" class="fw-semibold font-family-roboto-condensed mb-3 h2">Latest News</h2> <h2 id="latest-news" class="fw-semibold font-family-roboto-condensed mb-3 h2">Latest News</h2>
</div> </div>
@@ -172,17 +177,17 @@ class="btn btn-primary px-4 rounded-pill text-decoration-none">Discover More
</div> </div>
@endif --}} @endif --}}
</div> </div>
<div class="col-12 col-lg-4 mb-3"> <div class="col-12 col-lg-4 mb-3">
<div class="position-sticky" style="top: 8rem;"> <div class="position-sticky" style="top: 8rem;">
@include('front.partials.sidebar') @include('front.partials.sidebar')
</div>
</div> </div>
</div> </div>
</div>
</div> </div>
</main> </main>
@endsection @endsection

View File

@@ -23,7 +23,6 @@
Route::get('/disclaimer', [App\Http\Controllers\Front\FrontHomeController::class, 'disclaimer'])->name('front.disclaimer')->middleware('cacheResponse:2630000'); Route::get('/disclaimer', [App\Http\Controllers\Front\FrontHomeController::class, 'disclaimer'])->name('front.disclaimer')->middleware('cacheResponse:2630000');
Route::get('/bites/', function ($query) { Route::get('/bites/', function ($query) {
return redirect()->route('front.all', 301); return redirect()->route('front.all', 301);
}); });