From 51634c78d16b3de61c960c6068ad2c6f319fc5aa Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Thu, 26 Sep 2024 13:36:57 +0300 Subject: [PATCH 001/166] Added conflicting changes into my sidebar-left.tpl file --- dump.rdb | Bin 49070 -> 130097 bytes .../templates/partials/sidebar-left.tpl | 33 +++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dump.rdb b/dump.rdb index 81882685ed07b4339e233b0f0a5e8262257f49b4..08abf1aa55d2617547927baa132fe5bd51e8c8da 100644 GIT binary patch literal 130097 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⋘xin_eN&8*>{hoJI7}33H(L2<{sZ#i01ZW z8B5mqMO`EofIzig55ec&Tvz6vtg+8`&$&CZnm+XO>kZqw6Pm@jp3GkK(QL!=*R@F$ zvV0A#$})}spKbX`g(n;h#a8BeXF@p0E6bZx2zr?{SSD{yF{pIj9M%nG^5#BE)a6aj zo0H{sDx5MIIjESEOrLim>^oQ<0HM;D$VEDr0xCQxM=kg`DX3!0ljIciWY{rBrWehHhbuMBFg8rK#ksqm2qt%^6uEcat?uen!-O1y~e zPQ}1>m60nbEMcMGngw79@s+U@`&Tq&DNzhdm=9r#+CHyEJx_Y@OYDVG_Ot?6GqIE` zip(UM2<(ZMu&?F&P+^107_ZDeR17M;53$)=W*_wJD2oHR3Z8|`8>!95kimlx z?|4`WAXh;=P8HsSET>O#e`)?pVCF{jU^u8fI~B!1zlG!))rq0dlc+!4(pV{?olg`( z7wj4hL_*U`0qpE34R$^p;%hA7s6Te3ipD~l=f*-!cQPl&*)xmc$%-p?cPo9W?t5Es zr1YfLfFDGLg(@}+VGJw;#GL$D?lmDaa_+Pyv=Ml{Ap#jbRIMlceFDTU9J+PT#0aQa-{V zV-1BGE<9M$LqlJx(3WCU8JHYv?;>cc7$$#-5ag{vTW=jEH}#g(U_b>a|81@^b7-!b zS_oDF#VL?U;mIQu1>uti8;W+Mf}s{jcEzYNWXF71hU_%>c(ciFltm{Lk0vKb+318~ zT-oRZCQ6y;1PQ(0^yq|927fDbGa<@c6KPRjfzFKx#cw%1R>()*}{SqUGp=cgV9YrVEW~y*2Z(R8*_Te3a4UpXboU)G4Ar zQpP(q97!r#Z*Nso&CB_r{*B|TneUW?4FD!mz$ZdKW6(Dh|s zni}Wk!>w3BkUzvgg%td!f&aDezYhM_!~X{OzXJZhYO1FYc~T(R;Yo*sI7KsqBf*Wq z`~7!p9vBWz3y!;XAK8}R_oapt$zk`7{S!yKa=-OJdN_8Qt{M$A4`!B&a1R+Df-h)B zC!+v&Zy?F_zG^hWRwG@y8trAPA
I+C@op6N!TzBc`7Vy^hwQO!&{+U0B4ox=R? zYh$gI=SUj2uw|Fei0at^fC&H~@YQK+G%$Htl9OWB$aq28GzHhT>>6BW*%KXOfod zt!IFnTm_$AO=O4`wgl5kKRo+ZDmP_`zG|FVrp!QbyIPq67W(;}Lu`f@-orQAEUl-(ttQuS4&ynp*yg*W}NzlDn?q_P%*ou)f%|J1

qeF*dGk&1H*EplQpM~OO;UU^COvV2K4 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

?_44V`#`XjbO0 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 i6D5|CgK6huNqA delta 324 zcmdn^gMHn9rU?c@zFc3@esPo*r>5xUrsf`6kgl-NX*xH{QwtBx&3Cz{E3ld|{TI-g zbXs-uJe|dCOomL;r^+)bZB8|265_n)n9rTh$iQGTxxn=@Q-l8WKZhA>HlK4-x8R?& zS3q+TP>S>apV_yJIqUGEkA#F%|J@CMZvyJX48L zfAhAPn;1D6;4Uegt*!yo!nDUp D97k={ diff --git a/node_modules/nodebb-theme-harmony/templates/partials/sidebar-left.tpl b/node_modules/nodebb-theme-harmony/templates/partials/sidebar-left.tpl index 1aceabc255..657d193d80 100644 --- a/node_modules/nodebb-theme-harmony/templates/partials/sidebar-left.tpl +++ b/node_modules/nodebb-theme-harmony/templates/partials/sidebar-left.tpl @@ -31,7 +31,7 @@ - +

@@ -54,6 +54,8 @@ .form-popup { display: none; position: fixed; + top: 50%; + left: 15%; bottom: 0; right: 15px; border: 3px solid #f1f1f1; @@ -63,12 +65,12 @@ .form-container { max-width: 300px; padding: 10px; - background-color: white; + background-color: WhiteSmoke; } .form-container .btn { background-color: #04AA6D; - color: white; + color: white ; padding: 16px 20px; border: none; cursor: pointer; @@ -81,6 +83,23 @@ background-color: red; } + .buttonSidebar { + background-color: CornflowerBlue; + color: back; + border: 1px; + padding: 10px 20px; + cursor: pointer; + } + + + .form-container .btn:hover, .open-button:hover { + opacity: 0.5; + } + +.buttonSidebar:hover { + background-color: LightSkyBlue; +} + .form-container .btn:hover, .open-button:hover { opacity: 1; } @@ -91,6 +110,12 @@ - + \ No newline at end of file From 281524696dacfbc26df79f7f424ad31197bb2230 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sun, 13 Oct 2024 23:00:25 +0300 Subject: [PATCH 057/166] Modified the controller to fetch and render the links --- dump.rdb | Bin 137687 -> 137687 bytes src/controllers/resources-button.js | 28 +++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/dump.rdb b/dump.rdb index 3b7e3dd9b7671bb856133a6acff5604b29da3e66..aff2535a5d73ba469f45f70e9ee85b0b65872ad3 100644 GIT binary patch delta 37 vcmV+=0NVf8vk2F-2#_!W*dehpmcj$_D`bPq!ne!90R&eFhJRLX{-iKAPK6OE delta 37 vcmV+=0NVf8vk2F-2#_!Wt01v5mcj!Xm|ug-!ne!90R&eFTR<&XG$PPpI4%!h diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 0e6c906db2..4934f77290 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -3,10 +3,28 @@ const controllers = {}; controllers.getResourcesButtonPage = async (req, res) => { - // Return a JSON response to match the API schema definition - res.status(200).json({ - message: 'Resources button data retrieved successfully', - }); + try { + const links = await db.getSetMembers('resources:links'); + console.log('Retrieved links:', links); // Log the retrieved links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links, + }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).send('Internal Server Error'); + } }; -module.exports = controllers; +// Add the new method to get links for the API +controllers.getLinks = async () => { + try { + const links = await db.getSetMembers('resources:links'); + return links; + } catch (err) { + console.error('Error retrieving links:', err); + throw err; + } +}; + +module.exports = controllers; \ No newline at end of file From 16d529b80ad704e2e33b6fbec8055387ab009988 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sun, 13 Oct 2024 23:33:23 +0300 Subject: [PATCH 058/166] Added a route to to handle the API request --- dump.rdb | Bin 137687 -> 137687 bytes src/routes/index.js | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dump.rdb b/dump.rdb index aff2535a5d73ba469f45f70e9ee85b0b65872ad3..8f4767e479d9358b2311336be769fd98fb86f4d1 100644 GIT binary patch delta 37 vcmV+=0NVf8vk2F-2#_!Wnk}(1mcj$a8Ips`!ne!90R&eF7}`eqHWSFUMZFOZ delta 37 vcmV+=0NVf8vk2F-2#_!W*dehpmcj$_D`bPq!ne!90R&eFhJRLX{-iKAPK6OE diff --git a/src/routes/index.js b/src/routes/index.js index daf3affc76..c6b0190843 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -5,8 +5,9 @@ const winston = require('winston'); const path = require('path'); const express = require('express'); - - +const express = require('express'); +const router = express.Router(); +const controllers = require('../controllers'); const meta = require('../meta'); const controllers = require('../controllers'); @@ -227,3 +228,18 @@ function addRemountableRoutes(app, router, middleware, mounts) { _mounts[original](router, mount, middleware, controllers); }); } + + + +// Define the API endpoint for retrieving links +router.get('/api/resources/links', async (req, res) => { + try { + const links = await controllers.resources.getLinks(); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } +}); + +module.exports = router; From 700bddae2522d63714bcafc998f9f42424b6a103 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sun, 13 Oct 2024 23:44:17 +0300 Subject: [PATCH 059/166] Imported database in resources-button.js and defined the API endpoint in index.js --- dump.rdb | Bin 137687 -> 137687 bytes src/controllers/resources-button.js | 40 +++++++++++++++------------- src/routes/index.js | 16 +++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/dump.rdb b/dump.rdb index 8f4767e479d9358b2311336be769fd98fb86f4d1..b011654925bc44d9d8b5118d87dccd20ad3c7abe 100644 GIT binary patch delta 52 zcmV-40L%Z^vk2F-2#_!l^e+r&`UrJ%Wn?XFWo^QMez8G^!UKdsn}f^3x68r-1Xl=- KOEyk;NMp@xh8GS1 delta 52 zcmV-40L%Z^vk2F-2#_!lnk@`x`UrJ%Wn?XFWo^Q6z_CGx!UM+{l7q{_x68r-1Xl { - try { - const links = await db.getSetMembers('resources:links'); - console.log('Retrieved links:', links); // Log the retrieved links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links, - }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).send('Internal Server Error'); - } + try { + const links = await db.getSetMembers('resources:links'); + console.log('Retrieved links:', links); // Log the retrieved links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links, + }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).send('Internal Server Error'); + } }; // Add the new method to get links for the API controllers.getLinks = async () => { - try { - const links = await db.getSetMembers('resources:links'); - return links; - } catch (err) { - console.error('Error retrieving links:', err); - throw err; - } + try { + const links = await db.getSetMembers('resources:links'); + return links; + } catch (err) { + console.error('Error retrieving links:', err); + throw err; + } }; -module.exports = controllers; \ No newline at end of file +module.exports = controllers; diff --git a/src/routes/index.js b/src/routes/index.js index c6b0190843..69b622a572 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -5,9 +5,7 @@ const winston = require('winston'); const path = require('path'); const express = require('express'); -const express = require('express'); const router = express.Router(); -const controllers = require('../controllers'); const meta = require('../meta'); const controllers = require('../controllers'); @@ -233,13 +231,13 @@ function addRemountableRoutes(app, router, middleware, mounts) { // Define the API endpoint for retrieving links router.get('/api/resources/links', async (req, res) => { - try { - const links = await controllers.resources.getLinks(); - res.json({ links }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).json({ error: 'Internal Server Error' }); - } + try { + const links = await resourcesButtonController.getLinks(); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } }); module.exports = router; From 3618fa301d0cdb5a9a48009140a6689f1aff0390 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 00:12:14 +0300 Subject: [PATCH 060/166] Removed added code in routes/index.js --- dump.rdb | Bin 137687 -> 137687 bytes src/routes/index.js | 17 ----------------- 2 files changed, 17 deletions(-) diff --git a/dump.rdb b/dump.rdb index b011654925bc44d9d8b5118d87dccd20ad3c7abe..815133022c6713642a5ee770972459a0cbc737fa 100644 GIT binary patch delta 37 vcmV+=0NVf8vk2F-2#_!WAu+Ksmcj#K)t`gQ!ne!90R&eFXaR|Twc5dPKm`#u delta 37 vcmV+=0NVf8vk2F-2#_!W^e?e8mcj#sL7Rii!ne!90R&eFj!QO9ct~T-OBN8V diff --git a/src/routes/index.js b/src/routes/index.js index 69b622a572..d9604596f9 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -5,8 +5,6 @@ const winston = require('winston'); const path = require('path'); const express = require('express'); -const router = express.Router(); - const meta = require('../meta'); const controllers = require('../controllers'); const resourcesButtonController = require('../controllers/resources-button'); @@ -226,18 +224,3 @@ function addRemountableRoutes(app, router, middleware, mounts) { _mounts[original](router, mount, middleware, controllers); }); } - - - -// Define the API endpoint for retrieving links -router.get('/api/resources/links', async (req, res) => { - try { - const links = await resourcesButtonController.getLinks(); - res.json({ links }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).json({ error: 'Internal Server Error' }); - } -}); - -module.exports = router; From 39bf3b7590e47a58ddedd7748153b494007689c4 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 00:34:45 +0300 Subject: [PATCH 061/166] Added code in routes/index to define the API endpoint --- dump.rdb | Bin 137687 -> 138293 bytes src/routes/index.js | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/dump.rdb b/dump.rdb index 815133022c6713642a5ee770972459a0cbc737fa..6bc5afcbdbd90b40f60e40d3b28c34e51e721787 100644 GIT binary patch delta 2064 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 diff --git a/src/routes/index.js b/src/routes/index.js index d9604596f9..41e3a9b157 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -15,6 +15,8 @@ const authRoutes = require('./authentication'); const writeRoutes = require('./write'); const helpers = require('./helpers'); +const router = express.Router(); + const { setupPageRoute } = helpers; @@ -224,3 +226,20 @@ function addRemountableRoutes(app, router, middleware, mounts) { _mounts[original](router, mount, middleware, controllers); }); } + +// Define the route for the resources button page +router.get('/resources', resourcesButtonController.getResourcesButtonPage); + +// Define the API endpoint for retrieving links +router.get('/api/resources/links', async (req, res) => { + try { + const links = await resourcesButtonController.getLinks(); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } +}); + +module.exports = router; + From b92aed2f5fb8a05720fd82697fe681e8b7873c2c Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 01:11:07 +0300 Subject: [PATCH 062/166] Removed a line in routes/index --- dump.rdb | Bin 138293 -> 138293 bytes src/routes/index.js | 3 --- 2 files changed, 3 deletions(-) diff --git a/dump.rdb b/dump.rdb index 6bc5afcbdbd90b40f60e40d3b28c34e51e721787..fec679448dcb8257af798f34d003027a0c363065 100644 GIT binary patch delta 52 zcmV-40L%ZixCphl2#_!lzC8?Q`UrJ%Wn?XFWo^Q6l(9k2!~?UV&Vv)hw-dzy8dnI& Kt!M<5NC#qHn-)d@ delta 52 zcmV-40L%ZixCphl2#_!lkvt4%`UrJ%Wn?XFWo^Q6rm;cK!~@HU%!3ofw-dzy8dnH& Kev@dfmk{|{r58E? diff --git a/src/routes/index.js b/src/routes/index.js index 41e3a9b157..f7ab262503 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -15,9 +15,6 @@ const authRoutes = require('./authentication'); const writeRoutes = require('./write'); const helpers = require('./helpers'); -const router = express.Router(); - - const { setupPageRoute } = helpers; const _mounts = { From f36f6a69c2ac52542148537de2a999d2c0ceb062 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 01:12:40 +0300 Subject: [PATCH 063/166] Added a router in routes/index --- src/routes/index.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/routes/index.js b/src/routes/index.js index f7ab262503..f11fb68c9d 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -5,6 +5,8 @@ const winston = require('winston'); const path = require('path'); const express = require('express'); +const router = express.Router(); + const meta = require('../meta'); const controllers = require('../controllers'); const resourcesButtonController = require('../controllers/resources-button'); @@ -229,13 +231,13 @@ router.get('/resources', resourcesButtonController.getResourcesButtonPage); // Define the API endpoint for retrieving links router.get('/api/resources/links', async (req, res) => { - try { - const links = await resourcesButtonController.getLinks(); - res.json({ links }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).json({ error: 'Internal Server Error' }); - } + try { + const links = await resourcesButtonController.getLinks(); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } }); module.exports = router; From f923644c67caaaa28f69c6ada8d9e1399c27bffa Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 01:17:44 +0300 Subject: [PATCH 064/166] Removed changes in index --- src/routes/index.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/routes/index.js b/src/routes/index.js index f11fb68c9d..2895f20606 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -5,8 +5,6 @@ const winston = require('winston'); const path = require('path'); const express = require('express'); -const router = express.Router(); - const meta = require('../meta'); const controllers = require('../controllers'); const resourcesButtonController = require('../controllers/resources-button'); @@ -226,19 +224,3 @@ function addRemountableRoutes(app, router, middleware, mounts) { }); } -// Define the route for the resources button page -router.get('/resources', resourcesButtonController.getResourcesButtonPage); - -// Define the API endpoint for retrieving links -router.get('/api/resources/links', async (req, res) => { - try { - const links = await resourcesButtonController.getLinks(); - res.json({ links }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).json({ error: 'Internal Server Error' }); - } -}); - -module.exports = router; - From 5ebb13c7241f7f2cc5d0636d9f95fa5fee81b2a4 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 15:53:59 +0300 Subject: [PATCH 065/166] Modified the link extraction logic --- dump.rdb | Bin 138293 -> 138325 bytes src/posts/create.js | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dump.rdb b/dump.rdb index fec679448dcb8257af798f34d003027a0c363065..30625bd83aa4886d3735cd32f6d314e731a54b31 100644 GIT binary patch delta 554 zcmdnGgX8KBjtK^We!{%zzc@;ZQ&V(vQ*#e3ShLYlO^3OG_uJ+yoj_y8-JAEspR?j@ za_SfBXJTN;**tkxAtUbrZYBonrwh0l8UG8KOczvO)S13FnNfYRK$F?#DRUZ_IlCQ> ziydcRU{IJWyFewx`f2+E25zR0M|Bgp8JHCGnIzZvfCNHWtAPS63c-xdHV+uN8GY6@ zSSyG#GdNDlPEclGSKwweDsE6#;AU!wv}?$A;AYyI(sn?ZsiEdVL;vR91(mEUQQG_$ zHghdY;$W@RSN`sV z%_2vyvvVGV`D*f)Gc)9Y<^vsifSb9Y%uOHcE@h}g8M&V|luurI){1feo4(9Kc}tc(g$u=v+|vDKl^?xPu&&4RrFw#%Q2>#6b?T2AKwOm;U7Q=Z!g{A?}$z ond^d~h&iTvqBr|r&}3zt(p-6Ud*xNeEp8kOc#0I?MLJ#r0LgK-NdN!< delta 542 zcmcb*gJbIsjtK^W`)qmAe{qx+r>5xUrsf_hn6lAPO^4YnZ2#sgoj_y89h>*WpR?ku zacUN8W@2E-+B|tyA>(A`m4ch4=lo~pYK}eZ3fF!5B4Mg$|tgp diff --git a/src/posts/create.js b/src/posts/create.js index 6d7c8b46a3..6bbc2d497a 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -58,7 +58,9 @@ module.exports = function (Posts) { // Define the link extraction logic function extractLinks(text) { const urlRegex = /(https?:\/\/[^\s]+)/g; - return text.match(urlRegex) || []; + const links = text.match(urlRegex) || []; + console.log('Extracted links:', links); // Log the extracted links + return links; } // Extract links from post content From 0bda13c5faff80a3cf75291d8a8ff78834725cc3 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:05:49 +0300 Subject: [PATCH 066/166] Deleted routes/resources.js as it was unnecessary --- dump.rdb | Bin 138325 -> 139531 bytes src/routes/resources.js | 21 --------------------- 2 files changed, 21 deletions(-) delete mode 100644 src/routes/resources.js diff --git a/dump.rdb b/dump.rdb index 30625bd83aa4886d3735cd32f6d314e731a54b31..3def2e65a192f12958fd2177c0bc4433ee22dd51 100644 GIT binary patch delta 2384 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 diff --git a/src/routes/resources.js b/src/routes/resources.js deleted file mode 100644 index 05d1a2203a..0000000000 --- a/src/routes/resources.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -const db = require('../database'); - -const controllers = {}; - -controllers.getResourcesButtonPage = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - console.log('Retrieved links:', links); // Log the retrieved links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links, - }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).send('Internal Server Error'); - } -}; - -module.exports = controllers; From 8591c710523fcc643150e39d5597d9c546cf9c9a Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:13:29 +0300 Subject: [PATCH 067/166] Removed unnecessary code in resources-button.tpl --- dump.rdb | Bin 139531 -> 139570 bytes src/views/resources-button.tpl | 24 ------------------------ 2 files changed, 24 deletions(-) diff --git a/dump.rdb b/dump.rdb index 3def2e65a192f12958fd2177c0bc4433ee22dd51..bc544f73cdcd77b709f68cdc09982a9f5ccbc013 100644 GIT binary patch delta 743 zcmZXSUr19?9LLYOr@1??rgOGUX?XEYB+>o3cXQK3Hid`?2SXS_=|nALh}MjHh&n@% zLBDan%0NA4rl16N9$0st6CC(bzqhTcnX z2)IWBehw&k4vIm1lIIxQQjZ5*95dfJm=G9zeFaYemN&zI5(^9)wp74UGG3<)N8+%G z;BQvqZ&Aoalbs6mTB;{FYJy%8i@I{8T8pDrl1#;--AQJ>dZL*gW0BL@)y~I{kmu7i z2CP=rSgoR6679SIY*@`XY_@92=5SamOG)<369ux`Et0%An@-eKy5le{WxR2Vai1Dvl5P)!;T(k9R{cFAa;* z?4Uv{*pady zUk8flzB`dn7!>n5W_h=qjtq44A`x03t?TBz>4tzdKy$tTcEFTV)42k znfYHbj@i$YqGdumBmzh2MlqNMl(4r0w}Cv`$6khl`;f6cNW6Uj`I+|gE3{=Eru~A) qD6OzZJ8(ej0R{iz2IaDkClqjUz_S_mY{F-!Sk?EX-@g9GO@9GBH|uTy delta 682 zcmdmVh@<-u#{>hxt75$Azc@;ZQ&V(vQ*#eZ*tXGef)4X_af!`Wbasm{GEY{_6yChp zF<+kX;AY`OBOA_6r`ck&nHU)IHv7%3V`Og-XJq^@XfiobQf^uRqv_;x^5&aU=Fej0 zoa%5{>@oubgVJR7#W8B!OpcSX6Sx`J6}TCViW~G5xS1Lv?HbA*xS6)5v>i}pYN)x; zFnjZa#lKmZKgya;?pvwH;_p-~G5MppHXxn=1%1OqN=`j)lQc;nwD} ztAp5BFNsTZCrnQiVicMFCxlUOv*)INOw2&R&0bscc^Icp-gU5Z@`d99n?nyxXM=>m zq?7hc4*w@Ro(wm7z!Ak}B=qH_mP~ho3~O6SenDokg3AL2L598t!3AxMM*I&LB^f#& zFf3-_`tq1ZvB6>UnUgQsIZwdDZQn&%MooRD&mk%a$_(5N$_y79*E8?}L!?8?BS9QU zGi0+jWP?J;*`^_QGT&thiRlj9j77YSmw}XCMI$?dfPy|FFu>kVw!18$zMMfqK_3*1 z3E~Wr3gV1Y=QnmUNGXUjo&2Q^6p{rB?K;r7esb+)ea=Nr@nZ47*h|^G^)ee{y#hBg z1IQiv4BSBbAW;N#2_v!t82Eq&7!^NY06Hi?xgnT=AIM+7zcC%+ro~`4H9Us7={k@P zjM;dQKg6Cl^aCBI40c>I%yG_e$8o`3m%iEOswOMrtmd*?+ske-ZgJz-SQm6U!|LTX E0CRrb9RL6T diff --git a/src/views/resources-button.tpl b/src/views/resources-button.tpl index 53767b667b..f81a79a847 100644 --- a/src/views/resources-button.tpl +++ b/src/views/resources-button.tpl @@ -17,29 +17,5 @@ {{/each}} - - \ No newline at end of file From 2beea35c916a90c4399fc518a5f4cdcfe224e737 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:15:32 +0300 Subject: [PATCH 068/166] Modified the link extraction logic to pass the links to the template --- dump.rdb | Bin 139570 -> 139570 bytes src/controllers/resources-button.js | 39 ++++++++++++++-------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/dump.rdb b/dump.rdb index bc544f73cdcd77b709f68cdc09982a9f5ccbc013..11509283984fd29235090297ba1499c4ff54efca 100644 GIT binary patch delta 510 zcmdmVh-1?sjtK@#`jQ)s9wabc*eskF;AF$iG@&X(7>A!gxbtmgb znr&8JlETWIAK|>YZ{qsu zjp-1VEJkxl!+V%Z9>ZP2#31&(VK#$=f-)!~608{{fksT7-#FRgstns{u+ye*lwnku s{J?-^dV(J#=Va?`Hk%J$-NeGUvbpTm_Oe@yTiiJI%)NNvjQ^aw0Q7~W>;M1& delta 543 zcmdmVh-1?sjtK@#OcEQ79wacH-YlFL;AErBWFp&rfSZ}YaZ+{yHv_u@H=|K;gS7%T zQ$wU(L$d=n)7F%>1IkPdH5VF|GjJ&AGiI|lC^K;|{ueZ!e9=>G@&X(7>A!gxbtmgb znr&8JlETV-#Mo|g-^z&`tU-m!-3ikZg&0Mq{|R9f-0ZpO9}{y(q4H+0tzU(i92qA& zo-EdWz|qEPB=lu-kZOY&L+1mA#mrn^t{h(=!qEGGL4?IBDZhm80iy&%KaiMw_oOsq z$mX9XA8^!*gWR2y_nt>n4U%$U`u>&__5pUytAf;E)D9j)L^d!)?zkz&U5X6J500mAt zgAg!q#GW^7W{^;r9C2Bj{W_BaFc{<}KU^d-dER9n##NhFU*==1ci;xQO&{59+)R-0 z1v(BCfVkWg4|7v7&~l)g)&nWMiiYy0&?U;C2uf&XkOX>W>ikB3 zhRIe}rP%g^oi=@=45Py22L>$D6Z{xCCtGi`*?jowCKkpe&1JW?m)&CA;>N-G?%1F3 Hl4X7XaI~v- diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 689e4203d3..4f425b18ab 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -1,32 +1,33 @@ 'use strict'; +// Import the db module const db = require('../database'); const controllers = {}; controllers.getResourcesButtonPage = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - console.log('Retrieved links:', links); // Log the retrieved links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links, - }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).send('Internal Server Error'); - } + try { + const links = await db.getSetMembers('resources:links'); + console.log('Retrieved links:', links); // Log the retrieved links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links, + }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).send('Internal Server Error'); + } }; // Add the new method to get links for the API -controllers.getLinks = async () => { - try { - const links = await db.getSetMembers('resources:links'); - return links; - } catch (err) { - console.error('Error retrieving links:', err); - throw err; - } +controllers.getLinks = async (req, res) => { + try { + const links = await db.getSetMembers('resources:links'); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } }; module.exports = controllers; From ceb1b87d8103f8165da39643300150345bbdf37e Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:16:21 +0300 Subject: [PATCH 069/166] Fixed indentations in resources-button.js --- src/controllers/resources-button.js | 36 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 4f425b18ab..b63b8e5ba7 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -6,28 +6,28 @@ const db = require('../database'); const controllers = {}; controllers.getResourcesButtonPage = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - console.log('Retrieved links:', links); // Log the retrieved links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links, - }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).send('Internal Server Error'); - } + try { + const links = await db.getSetMembers('resources:links'); + console.log('Retrieved links:', links); // Log the retrieved links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links, + }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).send('Internal Server Error'); + } }; // Add the new method to get links for the API controllers.getLinks = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - res.json({ links }); - } catch (err) { - console.error('Error retrieving links:', err); - res.status(500).json({ error: 'Internal Server Error' }); - } + try { + const links = await db.getSetMembers('resources:links'); + res.json({ links }); + } catch (err) { + console.error('Error retrieving links:', err); + res.status(500).json({ error: 'Internal Server Error' }); + } }; module.exports = controllers; From 3547449ab841667ebfdba1a3840257cf93d31131 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:19:29 +0300 Subject: [PATCH 070/166] Ensured the routing that will fetch the links is correct --- src/routes/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/routes/index.js b/src/routes/index.js index 2895f20606..284dfe39b0 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -223,4 +223,12 @@ function addRemountableRoutes(app, router, middleware, mounts) { _mounts[original](router, mount, middleware, controllers); }); } +const router = express.Router(); +// Define the route for the resources button page +router.get('/resources', resourcesButtonController.getResourcesButtonPage); + +// Define the API endpoint for retrieving links +router.get('/api/resources/links', resourcesButtonController.getLinks); + +module.exports = router; From 6f25323e0ea4d23f6cb54def3d5ee0d59643c639 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:30:06 +0300 Subject: [PATCH 071/166] Removed code that did not start the sevrer --- dump.rdb | Bin 139570 -> 140115 bytes src/routes/index.js | 9 --------- 2 files changed, 9 deletions(-) diff --git a/dump.rdb b/dump.rdb index 11509283984fd29235090297ba1499c4ff54efca..5d7ddffce724006eef3c86bf4149763a24aa7b80 100644 GIT binary patch delta 1722 zcmZ{keQXnD9LJyMt}l0evxTkgHrVdibU?kf*N$FSMO%;oLYR`pWb)RoyKR+jE%e4D zm~dnRoO7`7Bpk_5i7yBYUsoKH7Mjw%0Ka(RBQ zpWpZQJA9hD^c6MWuU=kiZM{o%=EP>MU2H!+aK8fFr4pGIt|^fdPlA8Iz1YlR2aggZ zPb%k~ga@6g;1T@}bLj5{gu&wh08B!4B&(w#gbKS7Rx2Zip+UKI16CtnqoDptQU<73 z@6kS3b%y0j+9WBPi}-w9U0vSROr|w0dXt%U--_vNd5atRW+h`78^9xJ$4-t(lVX>XHKB;fbW^z)b_Dpm|w8Pec+cSagY^oW%cXu)d z62fkYF;viSYckUzi5(Jkc-j9j(~m>T+uW`h!CooVF6N{}d)8C{)VBiyK%@4Cx#cu` zOUh(Z$+#PuY1t26io12ag#zL(vx!#EH5@T&DpaO;;0{$-ag~Hu)X9lb{bM0)Zh2EX zecT$KYBVbK0xZ=*U}w=9s$4ygHR&w4f;Zndl>$ zv}o;>XNm#Io zf>^8NXwS1o<(>s{c#T48^@siBW8+%(ZG@zKdmY-g->X|Sr{9hK5K7Ru`=2uLLL?w~ zOGCjLG`!S}*aL%7pKlPIohjxgdRkLhn8gR0YB}~bdka?+5<^@f5f-^{ zk{1KaeKHvoM20goCnOQigFVhVK$ulXewIHNJ%-K?70+BqHm%Kc#k+OW=C-ZPFoN;v zY3szbxl|_h8^H%^nH~ntA($;c5IJN!_^K%yi!O66!@{tkH3zGWd0-|mI(64UnKa-F z@v)yn<-?_qGiw{(O5nA4JNmn&pv%JMSPM%d-vqtU$?>WR6OF9uTn+309v}O3JfJFM zyH%!SUV#hL(2;rC>(g_*-ZZX^{rFlbCk(_cHGSgfgoCD0{`xQ5$O$I}-TAtXh(Q!P zo0$DejO&X#z&6>jCj|pfrAXF9Q8}P^61AWh7f3 zy1{n*LEoP(gAMAPvq5c%xF@StytI;c6WdhhMGGNB&CvV$CL^$8ZDNs*;Qz+wS#LuZD@#|f`&H1427hGxzf|Jw1%E1J?JuA3<5R||99b#3 z(T}G#9?{E65-H?TIp~O}1 znvcK>9YIEhloW(`~m;M$XMB|MHsPj?wf(NWTy23pv0UHlBt zObu*NiB=-xvK^V~N>k}?pd%9mv_LBG+?m7V+97!AY$qgRJ8IE$Ll!Eq^(_Nxy-hRB>*7XFbK*T$U;Z0+zW&w6}+uo9gmLx2u}9HEuGScIcYS4yWKW^SoOyyMwG? zWA2hcyGvlq$`GFvlHsW7b7mR1P4ALyb(P(FMir0n$);Fal&Mqs;_-;UJj?rBWMfgFaC|7>2e-(y$Qpq(L{OSsdH7L9~FwY49lJX^bUv($J8mN1-h@ z4UOPP8djs*lf|$V|21isE0N|=nUJPnG0}%hrn3kaqg}}r_X49OfMwr-JfLINWg_;# ztA#IZ7F(nS;OlSUtRR=s!h&B#3=E7FaWl`uVLUPufcF1Ui1$`0e)*4r021(+1bmDb k3w3if*g3mR0ng%&J7MbJ{8#hv>8 Date: Mon, 14 Oct 2024 16:54:13 +0300 Subject: [PATCH 072/166] Modified the controller to generate the HTML for the links in the controller --- dump.rdb | Bin 140115 -> 140113 bytes src/controllers/resources-button.js | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dump.rdb b/dump.rdb index 5d7ddffce724006eef3c86bf4149763a24aa7b80..843cde68ff276ea5c7d71ad52875ee108aa9f385 100644 GIT binary patch delta 270 zcmcb7jN{@ljtK@#D-<^xElOm(z4>ZljWa7R<9|Wp$%oGIm1~Lq`^N27qO}0Hl_E4&*-HlH~CiJkGn=G~VkGFosmial>w&LE+n&$KnAEkT??QbC+?>iouT1}Oz` zCKK821aSv$rjx(a6Sx^<6_gow9cbLmAg7=_x$UYp!baWHTGthxFBW<6%+EkK6Bb{-K%#>uv)%S2g>guZZ0SYXD``G8?D3)h!v z@AVqIH=jKHiJkG%<~^4uGFmA!naFl0a5IQ2h%<^kZ`jNrp&-t*HKi> { - try { - const links = await db.getSetMembers('resources:links'); - console.log('Retrieved links:', links); // Log the retrieved links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links, - }); + try { + const links = await db.getSetMembers('resources:links'); + const linksHtml = links.map(link => `
  • ${link}
  • `).join(''); + console.log('Generated links HTML:', linksHtml); // Log the generated HTML to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + linksHtml, + }); } catch (err) { console.error('Error retrieving links:', err); res.status(500).send('Internal Server Error'); From a25eb19a5d5174973e13a4f89ba25a463f9987cf Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 16:55:36 +0300 Subject: [PATCH 073/166] Used a placeholder in the resources-button.tpl to inject the generated HTML --- src/views/resources-button.tpl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/views/resources-button.tpl b/src/views/resources-button.tpl index f81a79a847..9866c5846d 100644 --- a/src/views/resources-button.tpl +++ b/src/views/resources-button.tpl @@ -12,9 +12,7 @@

    Useful Links

    From 3d39343c6ae158614d24f5c4992898b0736f4178 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 17:06:39 +0300 Subject: [PATCH 074/166] Modified the controller to clean up the links before generating the HTML --- dump.rdb | Bin 140113 -> 140116 bytes src/controllers/resources-button.js | 17 +++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/dump.rdb b/dump.rdb index 843cde68ff276ea5c7d71ad52875ee108aa9f385..e599d39f0f42812826885a5aa8d3aebc1130335d 100644 GIT binary patch delta 242 zcmcb3jN{5NjtK^W`l`I?zc@;ZQ&V(vQ*#e3*tOAdaw6ly%~um^oEiD22VP~=oP42? zZMp(Kqx$6i%x0VKEzMCka4(9%c0h|AC)?)@U47T%#FfvZIJzXX6;z3}8 z8AIm-hQ%ygU!EC9PCkCRh(%Fh!Mn|NXKL9QFKym)c|D`d$zSRT;taA1;*7fvG_Gfm zQxIn|k?jTwDJXDHZoR6_xMuUltDTJMDC*Kt)iJWjHJoO0VEiwrJ^A5x`OS6Lf3q;| YYOcDoz3L9*c{dJ?S%0g%XYL9G06z9#e*gdg delta 228 zcmca|jN{@ljtK^WD-?Ote{qx+r>5xUrsf`+@Mojr { - try { - const links = await db.getSetMembers('resources:links'); - const linksHtml = links.map(link => `
  • ${link}
  • `).join(''); - console.log('Generated links HTML:', linksHtml); // Log the generated HTML to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - linksHtml, - }); + try { + const links = await db.getSetMembers('resources:links'); + const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); + const linksHtml = cleanedLinks.map(link => `
  • ${link}
  • `).join(''); + console.log('Generated links HTML:', linksHtml); // Log the generated HTML to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + linksHtml, + }); } catch (err) { console.error('Error retrieving links:', err); res.status(500).send('Internal Server Error'); From baecc1a393beb924e883c3677b8aae8f0f8d85b0 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 17:10:18 +0300 Subject: [PATCH 075/166] Passed the links as a JSON object to the template --- src/controllers/resources-button.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 295cc1acef..7a86f5f5a2 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -9,7 +9,7 @@ controllers.getResourcesButtonPage = async (req, res) => { try { const links = await db.getSetMembers('resources:links'); const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); - const linksHtml = cleanedLinks.map(link => `
  • ${link}
  • `).join(''); + const linksHtml = cleanedLinks.map(link => `
  • ${link}
  • `).join(''); console.log('Generated links HTML:', linksHtml); // Log the generated HTML to the console res.render('resources-button', { title: 'Resources Page', // You can customize the title or add more data as needed From 74924f5a83c03fa00c3bbaf790df868396cc3c06 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 17:10:38 +0300 Subject: [PATCH 076/166] Passed the links as a JSON object to the template --- src/controllers/resources-button.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 7a86f5f5a2..9475221dad 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -6,15 +6,14 @@ const db = require('../database'); const controllers = {}; controllers.getResourcesButtonPage = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); - const linksHtml = cleanedLinks.map(link => `
  • ${link}
  • `).join(''); - console.log('Generated links HTML:', linksHtml); // Log the generated HTML to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - linksHtml, - }); + try { + const links = await db.getSetMembers('resources:links'); + const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); + console.log('Cleaned links:', cleanedLinks); // Log the cleaned links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links: JSON.stringify(cleanedLinks), // Pass links as a JSON string + }); } catch (err) { console.error('Error retrieving links:', err); res.status(500).send('Internal Server Error'); From 09b26964b310e86c185496773e9ffd50b14d6a0c Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 17:12:01 +0300 Subject: [PATCH 077/166] Used an inline script to generate the HTML for the links --- dump.rdb | Bin 140116 -> 140141 bytes src/views/resources-button.tpl | 25 ++++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/dump.rdb b/dump.rdb index e599d39f0f42812826885a5aa8d3aebc1130335d..1575337a7738632c5f536ed0bc71419ec243d834 100644 GIT binary patch delta 528 zcmca|jN|PwjtK?=F>1W&zc@;ZQ&V(vQ*#eJ*ywOYhq>xX)Mjzry(WxLH(yOuwdI`V zv{`I369YrhX6E^=jJyZ9nHZEq7H~5%{ueZv?zo*%W%7b``jg|;%r{FeoW;z!#NoBr zYX$}ewaI&yXzM74bU$F=X8L$kH-VdhNx_;)a*Yp2Ae6NlD8Ql+&**IPfRUTgXI+E) zWS*tU3e67OOj}dh4k$A<)Ldv-&cLCd&zQ~Lpsc{n)Lr(%-Di4}TPI_FKJ< zgSi~&*#DdLn86H#?K~okOp|R-R|zcPh;A@r=zPGin1$=hvE#9mkDo4LW#E6nAi3H0 zOf5VA4Vb4GzAy+*W|@58s`2DMmn#LBAP#2ae%8>;z^b4>x$cTBIvcu zvI^piyACw&W{?9iOk^ADCpTTy=iKB}E>;c<)r`rzuC7M5wj5}!^5nd08j2v#b2ENC z+F%U~6HtIDGjJ*dgMz9V7t^6#kRu$ delta 466 zcmaERjN{5NjtK?=`l`I?zc@;ZQ&V(vQ*#e3*ywOYhdHiLd9%3gUK7TLo3AFS+Hy{C zS}wMniGiVDGxPjbM#hHC{R^~MIOjRs7rW2Ez@Reu&=PIck4JSAxEYuf^qC~r_&i|X zW(sAk1`4n!1T#9@JYeKz^jX(nJy~+8vSPUdH`CUXwgbvc4K)`UW;1Xo=rd-sHz+G` zGdGyXb|)xrj#>Jfm09>m*5;_y>o{2Z9|m+MOuwkXC^FqVoKbMI(H3@QW}x6^o9#Rz zjEs{#Pge=Nco5iN#?bkIVKEEWmuJS2lP{kxVo_9B@NTo$nOb(vOE3>izHoUHCnNW> zhH?g01?9<;uGli3o_yhoq||Z;ZbtPD4f+gRKp%V#QAto{;C4`ExY)RUGV@gBP<(R7H4VnulQ&+IWG@E>&c(*`$rrD=a->5{Up!gvx}lsirs?Sj(>Lc_ c*JNef)jaLa_Gxz*&%1GG%=%m9J#$wm0EKj;82|tP diff --git a/src/views/resources-button.tpl b/src/views/resources-button.tpl index 9866c5846d..9d2d5a5b6a 100644 --- a/src/views/resources-button.tpl +++ b/src/views/resources-button.tpl @@ -1,5 +1,3 @@ - - @@ -11,9 +9,22 @@

    Welcome to the resources page! Here you can find various links and materials.

    Useful Links

    - + - - \ No newline at end of file + + \ No newline at end of file From ab989ec69cd594856d25e636d714148f37c1ee1c Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 17:18:32 +0300 Subject: [PATCH 078/166] Ensured the correct JSON parsing of the links --- dump.rdb | Bin 140141 -> 140141 bytes src/controllers/resources-button.js | 16 ++++++++-------- src/views/resources-button.tpl | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dump.rdb b/dump.rdb index 1575337a7738632c5f536ed0bc71419ec243d834..3eb9fcbb04970fb052a1dd7cd9f060564eda6cf0 100644 GIT binary patch delta 52 zcmV-40L%aF#t7}k2#_!li6;$b`UrJ%Wn?XFWo^RXsIfth%L8kMUxU-jx6{i3l2-_+ KVV$?M9VsJ*9vD{u delta 52 zcmV-40L%aF#t7}k2#_!lTqX@?`UrJ%Wn?XFWo^RXy0Jlz%LB&8U4zrhx6{i3l2-_# KrJq_7JwbSi>=>c| diff --git a/src/controllers/resources-button.js b/src/controllers/resources-button.js index 9475221dad..9e3e197c24 100644 --- a/src/controllers/resources-button.js +++ b/src/controllers/resources-button.js @@ -6,14 +6,14 @@ const db = require('../database'); const controllers = {}; controllers.getResourcesButtonPage = async (req, res) => { - try { - const links = await db.getSetMembers('resources:links'); - const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); - console.log('Cleaned links:', cleanedLinks); // Log the cleaned links to the console - res.render('resources-button', { - title: 'Resources Page', // You can customize the title or add more data as needed - links: JSON.stringify(cleanedLinks), // Pass links as a JSON string - }); + try { + const links = await db.getSetMembers('resources:links'); + const cleanedLinks = links.map(link => link.replace(/\]\(.*?\)/g, '')); + console.log('Cleaned links:', cleanedLinks); // Log the cleaned links to the console + res.render('resources-button', { + title: 'Resources Page', // You can customize the title or add more data as needed + links: JSON.stringify(cleanedLinks), // Pass links as a JSON string + }); } catch (err) { console.error('Error retrieving links:', err); res.status(500).send('Internal Server Error'); diff --git a/src/views/resources-button.tpl b/src/views/resources-button.tpl index 9d2d5a5b6a..6db8105f15 100644 --- a/src/views/resources-button.tpl +++ b/src/views/resources-button.tpl @@ -13,7 +13,7 @@ - \ No newline at end of file + + \ No newline at end of file From fb7e53eb00635afa129b38de0985dd4dec635182 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 14 Oct 2024 23:05:42 +0300 Subject: [PATCH 085/166] Reverted changes in resources-button.tpl --- dump.rdb | Bin 140174 -> 140174 bytes src/views/resources-button.tpl | 14 ++++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/dump.rdb b/dump.rdb index 61a7b8f542fd64191aaeecdd9078bb460a5276d6..05a771ee2a7b1226b0e149e246ef285ba18faee5 100644 GIT binary patch delta 52 zcmV-40L%Z5#|Vzc2#_!l)p!kO`UrJ%Wn?XFWo^Rnv9Up*%LBp%pM&Jfx8%zKqE`r0 K){VcCVb52E{29Ff delta 52 zcmV-40L%Z5#|Vzc2#_!lsCNx#`UrJ%Wn?XFWo^O$yRku_%LCL6UI~=iO5*Kv< diff --git a/src/views/resources-button.tpl b/src/views/resources-button.tpl index 3a52c55dc3..261b45d674 100644 --- a/src/views/resources-button.tpl +++ b/src/views/resources-button.tpl @@ -1,11 +1,14 @@ - - - Resources + + {{title}} -