From 4eb0cf96e0f167808e87f351deae0b53f05bb5ba Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 17 Sep 2024 18:32:47 +0300 Subject: [PATCH 001/127] Added my P1 changes for src/topics/create.js in the project repo --- src/topics/create.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/topics/create.js b/src/topics/create.js index 0d6ee1bc19..0be268c7af 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -15,6 +15,8 @@ const privileges = require('../privileges'); const categories = require('../categories'); const translator = require('../translator'); +console.log('Al Anoud'); + module.exports = function (Topics) { Topics.create = async function (data) { // This is an internal method, consider using Topics.post instead @@ -104,13 +106,20 @@ module.exports = function (Topics) { } } + // Check if the category exists if (!categoryExists) { throw new Error('[[error:no-category]]'); - } + } - if (!canCreate || (!canTag && data.tags.length)) { - throw new Error('[[error:no-privileges]]'); - } + // Check if the user has the necessary privileges to create or tag + const cannotCreate = !canCreate; + const cannotTag = !canTag && data.tags.length; + + if (cannotCreate || cannotTag) { + throw new Error('[[error:no-privileges]]'); + } + + console.log('Al Anoud: Refactored code executed'); await guestHandleValid(data); if (!data.fromQueue) { From 136571837f423f048477d20281c622f3075a30d5 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 17 Sep 2024 19:12:50 +0300 Subject: [PATCH 002/127] Added my P1 changes into src/topics/create.js --- src/topics/create.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/topics/create.js b/src/topics/create.js index 0be268c7af..983642dec9 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -109,15 +109,15 @@ module.exports = function (Topics) { // Check if the category exists if (!categoryExists) { throw new Error('[[error:no-category]]'); - } + } // Check if the user has the necessary privileges to create or tag const cannotCreate = !canCreate; const cannotTag = !canTag && data.tags.length; - + if (cannotCreate || cannotTag) { - throw new Error('[[error:no-privileges]]'); - } + throw new Error('[[error:no-privileges]]'); + } console.log('Al Anoud: Refactored code executed'); @@ -327,4 +327,4 @@ module.exports = function (Topics) { throw new Error('[[error:no-privileges]]'); } } -}; +}; \ No newline at end of file From 1134af09deffd30fd2b8eaee0a2fd6dea9bea082 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 17 Sep 2024 19:16:25 +0300 Subject: [PATCH 003/127] fixed issue after adding P1 changes in src/topics/create.js --- src/topics/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/topics/create.js b/src/topics/create.js index 983642dec9..a141a2b722 100644 --- a/src/topics/create.js +++ b/src/topics/create.js @@ -327,4 +327,4 @@ module.exports = function (Topics) { throw new Error('[[error:no-privileges]]'); } } -}; \ No newline at end of file +}; From cc9d63f70a579482bf0db3492591612cf3e7f99c Mon Sep 17 00:00:00 2001 From: Zeina Halawa Date: Tue, 17 Sep 2024 19:18:39 +0300 Subject: [PATCH 004/127] Copying over changes from P1 --- src/middleware/render.js | 126 ++++++++++++++++++++++----------------- 1 file changed, 70 insertions(+), 56 deletions(-) diff --git a/src/middleware/render.js b/src/middleware/render.js index e01110936f..babc2a322c 100644 --- a/src/middleware/render.js +++ b/src/middleware/render.js @@ -26,6 +26,14 @@ const controllersHelpers = require('../controllers/helpers'); const relative_path = nconf.get('relative_path'); +async function checkAPI(req, options, res) { + if (req.route && req.route.path === '/api/') { + options.title = '[[pages:home]]'; + } + req.app.set('json spaces', global.env === 'development' || req.query.pretty ? 4 : 0); + return res.json(options); +} + module.exports = function (middleware) { middleware.processRender = function processRender(req, res, next) { // res.render post-processing, modified from here: https://gist.github.com/mrlannigan/5051687 @@ -85,12 +93,9 @@ module.exports = function (middleware) { options._locals = undefined; if (res.locals.isAPI) { - if (req.route && req.route.path === '/api/') { - options.title = '[[pages:home]]'; - } - req.app.set('json spaces', global.env === 'development' || req.query.pretty ? 4 : 0); - return res.json(options); + checkAPI(req, options, res); } + const optionsString = JSON.stringify(options).replace(/<\//g, '<\\/'); const headerFooterData = await loadHeaderFooterData(req, res, options); const results = await utils.promiseParallel({ @@ -126,6 +131,7 @@ module.exports = function (middleware) { }; async function getLoggedInUser(req) { + // console.log('ZEINA HALAWA'); if (req.user) { return await user.getUserData(req.uid); } @@ -147,10 +153,8 @@ module.exports = function (middleware) { return null; } - async function loadClientHeaderFooterData(req, res, options) { - const registrationType = meta.config.registrationType || 'normal'; - res.locals.config = res.locals.config || {}; - const templateValues = { + function initializeTemplateValues(req, res, options, registrationType) { + return { title: meta.config.title || '', 'title:url': meta.config['title:url'] || '', description: meta.config.description || '', @@ -162,52 +166,61 @@ module.exports = function (middleware) { allowRegistration: registrationType === 'normal', searchEnabled: plugins.hooks.hasListeners('filter:search.query'), postQueueEnabled: !!meta.config.postQueue, - registrationQueueEnabled: meta.config.registrationApprovalType !== 'normal' || (meta.config.registrationType === 'invite-only' || meta.config.registrationType === 'admin-invite-only'), + registrationQueueEnabled: meta.config.registrationApprovalType !== 'normal' || ['invite-only', 'admin-invite-only'].includes(meta.config.registrationType), config: res.locals.config, relative_path, bodyClass: options.bodyClass, widgets: options.widgets, + configJSON: jsesc(JSON.stringify(res.locals.config), { isScriptContext: true }), + browserTitle: '', }; + } - templateValues.configJSON = jsesc(JSON.stringify(res.locals.config), { isScriptContext: true }); + function populateUserDetails(unreadData, results, uid, user) { + user.unreadData = unreadData; + user.isAdmin = results.isAdmin; + user.isGlobalMod = results.isGlobalMod; + user.isMod = !!results.isModerator; + user.privileges = results.privileges; + user.blocks = results.blocks; + user.timeagoCode = results.timeagoCode; + user[results.user.status] = true; + user.lastRoomId = results.roomIds.length ? results.roomIds[0] : null; + user.email = String(user.email); + user['email:confirmed'] = user['email:confirmed'] === 1; + user.isEmailConfirmSent = !!results.isEmailConfirmSent; + } - const title = translator.unescape(utils.stripHTMLTags(options.title || '')); - const results = await utils.promiseParallel({ - isAdmin: user.isAdministrator(req.uid), - isGlobalMod: user.isGlobalModerator(req.uid), - isModerator: user.isModeratorOfAnyCategory(req.uid), - privileges: privileges.global.get(req.uid), - blocks: user.blocks.list(req.uid), - user: user.getUserData(req.uid), - isEmailConfirmSent: req.uid <= 0 ? false : await user.email.isValidationPending(req.uid), - languageDirection: translator.translate('[[language:dir]]', res.locals.config.userLang), - timeagoCode: languages.userTimeagoCode(res.locals.config.userLang), + async function fetchData(uid, title, userLang) { + return await utils.promiseParallel({ + isAdmin: user.isAdministrator(uid), + isGlobalMod: user.isGlobalModerator(uid), + isModerator: user.isModeratorOfAnyCategory(uid), + privileges: privileges.global.get(uid), + blocks: user.blocks.list(uid), + user: user.getUserData(uid), + isEmailConfirmSent: uid <= 0 ? false : await user.email.isValidationPending(uid), + languageDirection: translator.translate('[[language:dir]]', userLang), + timeagoCode: languages.userTimeagoCode(userLang), browserTitle: translator.translate(controllersHelpers.buildTitle(title)), - navigation: navigation.get(req.uid), - roomIds: req.uid > 0 ? db.getSortedSetRevRange(`uid:${req.uid}:chat:rooms`, 0, 0) : [], + navigation: navigation.get(uid), + roomIds: uid > 0 ? db.getSortedSetRevRange(`uid:${uid}:chat:rooms`, 0, 0) : [], }); + } + async function loadClientHeaderFooterData(req, res, options) { + const registrationType = meta.config.registrationType || 'normal'; + res.locals.config = res.locals.config || {}; + const templateValues = initializeTemplateValues(req, res, options, registrationType); + const title = translator.unescape(utils.stripHTMLTags(options.title || '')); + const results = await fetchData(req.uid, title, res.locals.config.userLang); const unreadData = { '': {}, new: {}, watched: {}, unreplied: {}, }; - - results.user.unreadData = unreadData; - results.user.isAdmin = results.isAdmin; - results.user.isGlobalMod = results.isGlobalMod; - results.user.isMod = !!results.isModerator; - results.user.privileges = results.privileges; - results.user.blocks = results.blocks; - results.user.timeagoCode = results.timeagoCode; - results.user[results.user.status] = true; - results.user.lastRoomId = results.roomIds.length ? results.roomIds[0] : null; - - results.user.email = String(results.user.email); - results.user['email:confirmed'] = results.user['email:confirmed'] === 1; - results.user.isEmailConfirmSent = !!results.isEmailConfirmSent; - + populateUserDetails(unreadData, results, req.uid, results.user); templateValues.bootswatchSkin = res.locals.config.bootswatchSkin || ''; templateValues.browserTitle = results.browserTitle; ({ @@ -219,38 +232,39 @@ module.exports = function (middleware) { navigation: results.navigation, unreadData, })); - templateValues.isAdmin = results.user.isAdmin; - templateValues.isGlobalMod = results.user.isGlobalMod; - templateValues.showModMenu = results.user.isAdmin || results.user.isGlobalMod || results.user.isMod; - templateValues.canChat = (results.privileges.chat || results.privileges['chat:privileged']) && meta.config.disableChat !== 1; - templateValues.user = results.user; - templateValues.userJSON = jsesc(JSON.stringify(results.user), { isScriptContext: true }); - templateValues.useCustomCSS = meta.config.useCustomCSS && meta.config.customCSS; - templateValues.customCSS = templateValues.useCustomCSS ? (meta.config.renderedCustomCSS || '') : ''; - templateValues.useCustomHTML = meta.config.useCustomHTML; - templateValues.customHTML = templateValues.useCustomHTML ? meta.config.customHTML : ''; - templateValues.maintenanceHeader = meta.config.maintenanceMode && !results.isAdmin; - templateValues.defaultLang = meta.config.defaultLang || 'en-GB'; - templateValues.userLang = res.locals.config.userLang; - templateValues.languageDirection = results.languageDirection; + populateTemplateValues(templateValues, results, res.locals.config); if (req.query.noScriptMessage) { templateValues.noScriptMessage = validator.escape(String(req.query.noScriptMessage)); } - templateValues.template = { name: res.locals.template }; templateValues.template[res.locals.template] = true; - if (options.hasOwnProperty('_header')) { templateValues.metaTags = options._header.tags.meta; templateValues.linkTags = options._header.tags.link; } - if (req.route && req.route.path === '/') { modifyTitle(templateValues); } return templateValues; } + async function populateTemplateValues(templateValues, results, config) { + templateValues.isAdmin = results.user.isAdmin; + templateValues.isGlobalMod = results.user.isGlobalMod; + templateValues.showModMenu = results.user.isAdmin || results.user.isGlobalMod || results.user.isMod; + templateValues.canChat = (results.privileges.chat || results.privileges['chat:privileged']) && config.disableChat !== 1; + templateValues.user = results.user; + templateValues.userJSON = jsesc(JSON.stringify(results.user), { isScriptContext: true }); + templateValues.useCustomCSS = config.useCustomCSS && config.customCSS; + templateValues.customCSS = templateValues.useCustomCSS ? (config.renderedCustomCSS || '') : ''; + templateValues.useCustomHTML = config.useCustomHTML; + templateValues.customHTML = templateValues.useCustomHTML ? config.customHTML : ''; + templateValues.maintenanceHeader = config.maintenanceMode && !results.isAdmin; + templateValues.defaultLang = config.defaultLang || 'en-GB'; + templateValues.userLang = config.userLang; + templateValues.languageDirection = results.languageDirection; + } + async function loadAdminHeaderFooterData(req, res, options) { const custom_header = { plugins: [], From d51ac37229e05dd6c6037886760780eef66117f1 Mon Sep 17 00:00:00 2001 From: Ruba Al Mahmoud Date: Wed, 18 Sep 2024 13:15:58 +0300 Subject: [PATCH 005/127] Added project 1 code --- src/topics/sorted.js | 92 ++++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 98292f0ddb..8a9d05f3f5 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -10,6 +10,52 @@ const categories = require('../categories'); const meta = require('../meta'); const plugins = require('../plugins'); +console.log("Ruba Almahmoud"); + +async function filterTids(tids, Topics, params) { + const { filter } = params; + const { uid } = params; + + if (filter === 'new') { + tids = await Topics.filterNewTids(tids, uid); + } else if (filter === 'unreplied') { + tids = await Topics.filterUnrepliedTids(tids); + } else { + tids = await Topics.filterNotIgnoredTids(tids, uid); + } + + tids = await privileges.topics.filterTids('topics:read', tids, uid); + let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid', 'tags']); + const topicCids = _.uniq(topicData.map(topic => topic.cid)).filter(Boolean); + + async function getIgnoredCids() { + if (params.cids || filter === 'watched' || meta.config.disableRecentCategoryFilter) { + return []; + } + return await categories.isIgnored(topicCids, uid); + } + const [ignoredCids, filtered] = await Promise.all([ + getIgnoredCids(), + user.blocks.filter(uid, topicData), + ]); + + const isCidIgnored = _.zipObject(topicCids, ignoredCids); + topicData = filtered; + + const cids = params.cids && params.cids.map(String); + const { tags } = params; + tids = topicData.filter(t => ( + t && + t.cid && + !isCidIgnored[t.cid] && + (!cids || cids.includes(String(t.cid))) && + (!tags.length || tags.every(tag => t.tags.find(topicTag => topicTag.value === tag))) + )).map(t => t.tid); + + const result = await plugins.hooks.fire('filter:topics.filterSortedTids', { tids: tids, params: params }); + return result.tids; +} + module.exports = function (Topics) { Topics.getSortedTopics = async function (params) { const data = { @@ -30,7 +76,7 @@ module.exports = function (Topics) { } data.tids = await getTids(params); data.tids = await sortTids(data.tids, params); - data.tids = await filterTids(data.tids.slice(0, meta.config.recentMaxTopics), params); + data.tids = await filterTids(data.tids.slice(0, meta.config.recentMaxTopics), Topics, params); data.topicCount = data.tids.length; data.topics = await getTopics(data.tids, params); data.nextStart = params.stop + 1; @@ -234,50 +280,6 @@ module.exports = function (Topics) { return b.viewcount - a.viewcount; } - async function filterTids(tids, params) { - const { filter } = params; - const { uid } = params; - - if (filter === 'new') { - tids = await Topics.filterNewTids(tids, uid); - } else if (filter === 'unreplied') { - tids = await Topics.filterUnrepliedTids(tids); - } else { - tids = await Topics.filterNotIgnoredTids(tids, uid); - } - - tids = await privileges.topics.filterTids('topics:read', tids, uid); - let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid', 'tags']); - const topicCids = _.uniq(topicData.map(topic => topic.cid)).filter(Boolean); - - async function getIgnoredCids() { - if (params.cids || filter === 'watched' || meta.config.disableRecentCategoryFilter) { - return []; - } - return await categories.isIgnored(topicCids, uid); - } - const [ignoredCids, filtered] = await Promise.all([ - getIgnoredCids(), - user.blocks.filter(uid, topicData), - ]); - - const isCidIgnored = _.zipObject(topicCids, ignoredCids); - topicData = filtered; - - const cids = params.cids && params.cids.map(String); - const { tags } = params; - tids = topicData.filter(t => ( - t && - t.cid && - !isCidIgnored[t.cid] && - (!cids || cids.includes(String(t.cid))) && - (!tags.length || tags.every(tag => t.tags.find(topicTag => topicTag.value === tag))) - )).map(t => t.tid); - - const result = await plugins.hooks.fire('filter:topics.filterSortedTids', { tids: tids, params: params }); - return result.tids; - } - async function getTopics(tids, params) { tids = tids.slice(params.start, params.stop !== -1 ? params.stop + 1 : undefined); const topicData = await Topics.getTopicsByTids(tids, params); From c81eabf84cff397ffb7fb784b777ab1f212b06ee Mon Sep 17 00:00:00 2001 From: Ruba Al Mahmoud Date: Wed, 18 Sep 2024 13:30:53 +0300 Subject: [PATCH 006/127] Fixing project 1 code to pass lint test --- src/topics/sorted.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 8a9d05f3f5..2202bbdb58 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -10,7 +10,6 @@ const categories = require('../categories'); const meta = require('../meta'); const plugins = require('../plugins'); -console.log("Ruba Almahmoud"); async function filterTids(tids, Topics, params) { const { filter } = params; From 3cfd603f8471c5e513f906b3a27f39d14534b342 Mon Sep 17 00:00:00 2001 From: Hakaabi Date: Thu, 19 Sep 2024 12:57:42 +0300 Subject: [PATCH 007/127] Edited batch.js in codhers --- src/batch.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/batch.js b/src/batch.js index 48c6571cd4..21706d773d 100644 --- a/src/batch.js +++ b/src/batch.js @@ -10,12 +10,23 @@ const DEFAULT_BATCH_SIZE = 100; const sleep = util.promisify(setTimeout); -exports.processSortedSet = async function (setKey, process, options) { - options = options || {}; +// I will reduce the complexity of the code by making helper functions outside the main function +// where the errors show +// helper functions: +// fixing error 1: +function processIsFunction(process) { if (typeof process !== 'function') { throw new Error('[[error:process-not-a-function]]'); } +} + + +exports.processSortedSet = async function (setKey, process, options) { + console.log('Hakaabi: Refactored code is running!'); + options = options || {}; + + processIsFunction(process); // Progress bar handling (upgrade scripts) if (options.progress) { @@ -68,6 +79,7 @@ exports.processSortedSet = async function (setKey, process, options) { stop = start + options.batch - 1; } }; +console.log('Hakaabi: Refactored code stopped running!'); exports.processArray = async function (array, process, options) { options = options || {}; @@ -101,4 +113,4 @@ exports.processArray = async function (array, process, options) { } }; -require('./promisify')(exports); +require('./promisify')(exports); \ No newline at end of file From 78e2a19839508eecc5458ae82f9f0db52538c748 Mon Sep 17 00:00:00 2001 From: Hakaabi Date: Thu, 19 Sep 2024 13:07:51 +0300 Subject: [PATCH 008/127] fixxing config.json port --- src/batch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/batch.js b/src/batch.js index 21706d773d..208371fca1 100644 --- a/src/batch.js +++ b/src/batch.js @@ -113,4 +113,4 @@ exports.processArray = async function (array, process, options) { } }; -require('./promisify')(exports); \ No newline at end of file +require('./promisify')(exports); From 217beaa4f18b2ec9b81bf84aefeb3f1ab87e6937 Mon Sep 17 00:00:00 2001 From: Ghalya AL-Eshaq Date: Thu, 19 Sep 2024 13:55:31 +0300 Subject: [PATCH 009/127] editing src/socket.io/admin/rooms.js from P1 --- src/socket.io/admin/rooms.js | 74 +++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/src/socket.io/admin/rooms.js b/src/socket.io/admin/rooms.js index a8107edaa7..ae67ed9551 100644 --- a/src/socket.io/admin/rooms.js +++ b/src/socket.io/admin/rooms.js @@ -16,6 +16,7 @@ SocketRooms.getTotalGuestCount = async function () { }; SocketRooms.getAll = async function () { + console.log('GhalyaRefactoredCode'); const sockets = await io.server.fetchSockets(); totals.onlineGuestCount = 0; @@ -31,37 +32,14 @@ SocketRooms.getAll = async function () { }; const userRooms = {}; const topicData = {}; + for (const s of sockets) { - for (const key of s.rooms) { - if (key === 'online_guests') { - totals.onlineGuestCount += 1; - } else if (key === 'categories') { - totals.users.categories += 1; - } else if (key === 'recent_topics') { - totals.users.recent += 1; - } else if (key === 'unread_topics') { - totals.users.unread += 1; - } else if (key.startsWith('uid_')) { - userRooms[key] = 1; - } else if (key.startsWith('category_')) { - totals.users.category += 1; - } else { - const tid = key.match(/^topic_(\d+)/); - if (tid) { - totals.users.topics += 1; - topicData[tid[1]] = topicData[tid[1]] || { count: 0 }; - topicData[tid[1]].count += 1; - } - } - } + processSocket(s, totals, userRooms, topicData); } + totals.onlineRegisteredCount = Object.keys(userRooms).length; - let topTenTopics = []; - Object.keys(topicData).forEach((tid) => { - topTenTopics.push({ tid: tid, count: topicData[tid].count }); - }); - topTenTopics = topTenTopics.sort((a, b) => b.count - a.count).slice(0, 10); + const topTenTopics = getTopTenTopics(topicData); const topTenTids = topTenTopics.map(topic => topic.tid); const titles = await topics.getTopicsFields(topTenTids, ['title']); @@ -73,6 +51,48 @@ SocketRooms.getAll = async function () { return totals; }; +function processSocket(s, totals, userRooms, topicData) { + console.log('GhalyaRefactoredCode1'); + for (const key of s.rooms) { + if (key === 'online_guests') { + totals.onlineGuestCount += 1; + } else if (key === 'categories') { + totals.users.categories += 1; + } else if (key === 'recent_topics') { + totals.users.recent += 1; + } else if (key === 'unread_topics') { + totals.users.unread += 1; + } else if (key.startsWith('uid_')) { + userRooms[key] = 1; + } else if (key.startsWith('category_')) { + totals.users.category += 1; + } else { + processTopicKey(key, totals, topicData); + } + } +} + +function processTopicKey(key, totals, topicData) { + console.log('GhalyaRefactoredCode2'); + const tid = key.match(/^topic_(\d+)/); + if (tid) { + totals.users.topics += 1; + topicData[tid[1]] = topicData[tid[1]] || { count: 0 }; + topicData[tid[1]].count += 1; + } +} + +function getTopTenTopics(topicData) { + console.log('GhalyaRefactoredCode3'); + const topTenTopics = []; + Object.keys(topicData).forEach((tid) => { + topTenTopics.push({ tid: tid, count: topicData[tid].count }); + }); + const sortedTopTenTopics = [...topTenTopics].sort((a, b) => b.count - a.count); + return sortedTopTenTopics.slice(0, 10); +} + + SocketRooms.getOnlineUserCount = function (io) { let count = 0; From db3c1efd49e84a50245a198fc0dd13f6541f39e6 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sat, 21 Sep 2024 19:24:18 +0300 Subject: [PATCH 010/127] Accidentally edited in navigation.json --- dump.rdb | Bin 0 -> 47893 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dump.rdb diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..60b50d18af49c9d6c3da9c1e638186f5109e214c GIT binary patch literal 47893 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 c Date: Sat, 21 Sep 2024 19:30:20 +0300 Subject: [PATCH 011/127] Added the Submit Bug/Feedback button to the navigation.json --- dump.rdb | Bin 47893 -> 47893 bytes install/data/navigation.json | 9 +++++++++ 2 files changed, 9 insertions(+) diff --git a/dump.rdb b/dump.rdb index 60b50d18af49c9d6c3da9c1e638186f5109e214c..d532279f9e3e8ceb817feb6dd1bc7dc6d64b0ab6 100644 GIT binary patch delta 33 rcmV++0N($V_5zjm0+28Qrt`5fWeWqOxM#DP3v;gskZPEoUd&1V1LhC2 delta 33 rcmV++0N($V_5zjm0+28QdGfI`WeWqtBxAFh3v;gslbkrt*D8CO_&yG` diff --git a/install/data/navigation.json b/install/data/navigation.json index 5a744dbdf7..77329a6f4d 100644 --- a/install/data/navigation.json +++ b/install/data/navigation.json @@ -65,5 +65,14 @@ "textClass": "d-lg-none", "text": "[[global:header.admin]]", "groups": ["administrators"] + }, + { + "route": "#", + "title": "Submit Bug/Feedback", + "enabled": true, + "iconClass": "fa-bug", + "textClass": "d-lg-none", + "text": "Submit Bug/Feedback", + "onclick": "openBugFeedbackModal()" } ] \ No newline at end of file From 09c390a8e5fd56be301afd0d5be161723f8c5b2b Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sat, 21 Sep 2024 20:09:41 +0300 Subject: [PATCH 012/127] Created a modal form template for the bug-feedback --- dump.rdb | Bin 47893 -> 47893 bytes src/views/partials/bug-feedback-modal.tpl | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 src/views/partials/bug-feedback-modal.tpl diff --git a/dump.rdb b/dump.rdb index d532279f9e3e8ceb817feb6dd1bc7dc6d64b0ab6..6e95f07c6d729d75e5e42c7ff40db9595b77ede8 100644 GIT binary patch delta 42 zcmV+_0M-AM_5zjm0+28Q)cmnBWeWpUl#8>P3$rW(Nj;0RP&mDU2!QmDKIGY96_Usj AxBvhE delta 42 zcmV+_0M-AM_5zjm0+28Qrt`5fWeWqOxM#DP3$rW(1?_pWP&mDU2#{)+o?gsJ|CXH- ASO5S3 diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl new file mode 100644 index 0000000000..1eaf9c15d5 --- /dev/null +++ b/src/views/partials/bug-feedback-modal.tpl @@ -0,0 +1,10 @@ + + \ No newline at end of file From 7bb0ca11ec8bfb1fb2933f8960cc7a8101300515 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sat, 21 Sep 2024 20:19:13 +0300 Subject: [PATCH 013/127] Commited dump.rdb file --- dump.rdb | Bin 47893 -> 47893 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index 6e95f07c6d729d75e5e42c7ff40db9595b77ede8..ccb4259900cb10224d6d7f88a1d6ef8c2e3fd95f 100644 GIT binary patch delta 48 zcmV-00MGxG_5zjm0+28fF8}Uk`UrJ%Wn?XFWo^RXO0hv!3j-3ol(U)(bFT<`Oo3`m G9GONMG!&}< delta 48 zcmV-00MGxG_5zjm0+28f)co#d`UrJ%Wn?XFWo^RHjIlvh3j Date: Sun, 22 Sep 2024 13:29:11 +0300 Subject: [PATCH 014/127] Added the bug-feedback.js file that will handle the form submission --- dump.rdb | Bin 47893 -> 47894 bytes public/scripts/bug-feedback.js | 25 ++++++++++++++++++++++ src/views/partials/bug-feedback-modal.tpl | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 public/scripts/bug-feedback.js diff --git a/dump.rdb b/dump.rdb index ccb4259900cb10224d6d7f88a1d6ef8c2e3fd95f..1068f2e6a88d292026395db18089b446906ccb20 100644 GIT binary patch delta 70 zcmV-M0J;B__5zmn0+28f5b*D2`UrJ%Wn?XFWo^PRnz2DH3jw2(a0?j|5DAHJVP|D_ cX=QhF3iN}%K^b7Pn+tNU2$}PJqfDxxat$9Hk^lez delta 69 zcmV-L0J{H{_5zjm0+28fF8}Uk`UrJ%Wn?XFWo^RXO0hvM3jv~&a0?j{4+)8IVP|D_ bX=QhF3iJ}Zlz_9G3v#ardQ5?8O&pm<2UZ+N diff --git a/public/scripts/bug-feedback.js b/public/scripts/bug-feedback.js new file mode 100644 index 0000000000..cfb05de373 --- /dev/null +++ b/public/scripts/bug-feedback.js @@ -0,0 +1,25 @@ +// public/scripts/bug-feedback.js +function openBugFeedbackModal() { + document.getElementById('bug-feedback-modal').style.display = 'block'; + } + + document.getElementById('bug-feedback-form').addEventListener('submit', async (event) => { + event.preventDefault(); + const title = document.getElementById('title').value; + const description = document.getElementById('description').value; + + const response = await fetch('/api/bugs', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ title, description }), + }); + + if (response.ok) { + alert('Thank you for your feedback!'); + document.getElementById('bug-feedback-modal').style.display = 'none'; + } else { + alert('Failed to submit feedback. Please try again.'); + } + }); \ No newline at end of file diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl index 1eaf9c15d5..3efea3b882 100644 --- a/src/views/partials/bug-feedback-modal.tpl +++ b/src/views/partials/bug-feedback-modal.tpl @@ -7,4 +7,4 @@ - \ No newline at end of file + \ No newline at end of file From beaf18c47f65f83a63258eb2843981ac8b510cae Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sun, 22 Sep 2024 13:38:18 +0300 Subject: [PATCH 015/127] Added a script tag to ensure that the bug-feebdack.js file is being loaded --- dump.rdb | Bin 47894 -> 47894 bytes src/views/install/index.tpl | 5 +++++ 2 files changed, 5 insertions(+) diff --git a/dump.rdb b/dump.rdb index 1068f2e6a88d292026395db18089b446906ccb20..9f89b0bdb3ff1df6354d3bb44af31807425ed720 100644 GIT binary patch delta 33 pcmbRCjcM99rU?d2S)Vo {{{ end }}} + + + + + \ No newline at end of file From 11933c1696516f480badb39424688342bb5e183f Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Sun, 22 Sep 2024 14:23:51 +0300 Subject: [PATCH 016/127] Commited dump.rdb file --- dump.rdb | Bin 47894 -> 47894 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index 9f89b0bdb3ff1df6354d3bb44af31807425ed720..2857d5588644d86ae38ad01d49a5e938ccc561b5 100644 GIT binary patch delta 33 pcmbRCjcM99rU?d2TmEh|O66t_{$I9v7I(>djx+5V7AYF)MgReR4aooi delta 33 pcmbRCjcM99rU?d2S)Vo Date: Sun, 22 Sep 2024 16:19:42 +0300 Subject: [PATCH 017/127] Added the code for the button to access the bugFeedbackModal from the index.tpl --- dump.rdb | Bin 47894 -> 47943 bytes src/views/install/index.tpl | 4 ++++ 2 files changed, 4 insertions(+) diff --git a/dump.rdb b/dump.rdb index 2857d5588644d86ae38ad01d49a5e938ccc561b5..9ebf8c905681ae0b1a19d614e6873908a1177887 100644 GIT binary patch delta 317 zcmbRCjp_I|rU?du0+JunesPo*r>5xUrsf`cuw$cR7&o(T(%sFoxZ4yMg*PkeoMvMb z-2B!kk(DJ(>|x^OAd4w{`iHg5#mpHP7&sWdFbGa&nZ(Gzz{$w?g<+4s=mBo#hWup7 z1KdmuakCb1Gcx`cP?}uGC^xynNqX{pJJHE2ocK1UxIZ^%naX}ba {{{ end }}} + + + + From 70a920fb199b1a95dbe83762313ff4e8fb518e61 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 00:59:32 +0300 Subject: [PATCH 018/127] Made a small change in navigation.json --- dump.rdb | Bin 47943 -> 48084 bytes install/data/navigation.json | 18 +++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dump.rdb b/dump.rdb index 9ebf8c905681ae0b1a19d614e6873908a1177887..e06eb58bdc27f577db6a2d6acb966063481c46a0 100644 GIT binary patch delta 911 zcmaizQA`{~7{_P#;NWg69!8EH*Kh}vsDW*FcXnrYj}or5(8gR^6cnXmnAw@VUN}l+ z4_g|VyQC5;FQrVPMvYJUsIl1xqA_}r2b(lTFeX0e15sbAO(YsyW8D)`-h7*x@5}f9 zzVG*+&wmxa{!Ls_9*OWf?%l?Dk5PGs&3u-AE(Pv3;#pTF*ke`jC%BjWNr=fDueI}P zvf;*JSW3wG9}}zThhmXe&f`3LvA`~P(d`rCpCtV^rKPlR(C_HI6&6zdZEdPvY}Ppb zsGVy&@nnpUm(w%M1ypJ!HFj?=H~FzrNKFG&^$GM_EN|8y-Xk=01&w! z3+Ico1Q*w{MLyYAXb4H7aKBmSc;ujer|(*5-|zpW%3O(b`R@;ug#>6Jg$s;L7Z+$D z&%BZ|JAbak=Bk1(ADyV%pGpA$>cBSm_;kzPI)boW$!#WlJ~SpovqRZ@JRfAl_|Lxzp_*#cwv8+7Wbn%=0qV|4hm+ zTm4OFOobUu$>_=M~?1 zrcNo;9ow{#sv*}Q1X3574%8K7Vb!t;vowMn6WW^UIGSZzP|;P#&~%eP2SL-e31k-5 zF|n~=@Fjcb2xPkBs6RPcJWr>+5%L1`es9CjZ-&FY2S&awCmh%*-VoSqN)ki< RF|9LML4>$>hP+p4In<*JKY(7H1J-kY~e;-(0JnV6y!B+k5fBcjV{W0peh zb_gmun2(4ON)RtyA}7K_fz-hu=u!mz13h&zIxGcd*_a-pOP3$~eth|Seth42=U2b+ zGs2-@=&QNuIcHHLo~G$%Ys+D7)1zg~xUN}rh5N<*NNs>%oTd81EY-S?g%>Ix&VBZV z-o76wpRFwo7GE9J2I<5QJ#TsQ9r~w`J?Fbz3(D-ehL>(oVsA(Tg~C>E#kw{NIF5^2 z)UuLzLhjBS8<`qDIW^VNC3aZ7@^LbHK|Yb`>$A?DQrNqTO##>=qNIqEGHOgH604tX z%2J6cDpX7Yv5+9DX($S&S^{EC6HSxIhM*HegHVGi)@7L(x+#e|B#M9q37L|r8VGBq zVH(bnidZ%b9YbPj3Z()SBti&MOeN7HcrQf(lnA3RS6|z2t{WyJ=@C0?jB?h?z!0{UPAwA zqAu@Wb&7VXE8Y&e2S+lxHu5|*%(TQ%K`r9!SBb|3u3{%*Uun7z?DpoQ#8-z zxhI|F_S4oL;5n>TsLsv9_P5m(&HDh@4o27*2s5GGWly)&VeieN7olAXTg-O5a?WaR zWs%pv!`{=!*o~?vgDur|?poRnc>BxD&%$thtRm*H-MhX&Q2_E>|DDi^kI&h$TMIyJ z-19q`66X3lv&Q*&=gk3MArJDo49QjU`@nVyI|`%h!-2qTS2df*$X>kt$mhDW^VFHe m!P0O|jbn8ELvt{@WEN_HU;hToS?kOI diff --git a/install/data/navigation.json b/install/data/navigation.json index 77329a6f4d..4183239811 100644 --- a/install/data/navigation.json +++ b/install/data/navigation.json @@ -66,13 +66,13 @@ "text": "[[global:header.admin]]", "groups": ["administrators"] }, - { - "route": "#", - "title": "Submit Bug/Feedback", - "enabled": true, - "iconClass": "fa-bug", - "textClass": "d-lg-none", - "text": "Submit Bug/Feedback", - "onclick": "openBugFeedbackModal()" - } + { + "route": "#", + "title": "Submit Bug/Feedback", + "enabled": true, + "iconClass": "fa-bug", + "textClass": "d-lg-none", + "text": "Submit Bug/Feedback", + "id": "submit-bug-feedback" + } ] \ No newline at end of file From 748043b2abcbffbca851065da0c3e83535f4f9df Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 01:01:53 +0300 Subject: [PATCH 019/127] Made a navigation.js file to add the JavaScript code that will handle the click event --- public/scripts/navigation.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 public/scripts/navigation.js diff --git a/public/scripts/navigation.js b/public/scripts/navigation.js new file mode 100644 index 0000000000..a953a1f9e8 --- /dev/null +++ b/public/scripts/navigation.js @@ -0,0 +1,17 @@ +// public/scripts/navigation.js +document.addEventListener('DOMContentLoaded', function () { + document.getElementById('submit-bug-feedback').addEventListener('click', function (event) { + event.preventDefault(); + openBugFeedbackModal(); + }); + }); + + function openBugFeedbackModal() { + // Ensure the modal element exists + const modal = document.getElementById('bug-feedback-modal'); + if (modal) { + modal.style.display = 'block'; + } else { + console.error('Bug feedback modal not found'); + } + } \ No newline at end of file From bbde70694fc15a29b3dc4224c5a689ad23940749 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 01:05:44 +0300 Subject: [PATCH 020/127] Indented the code in index.tpl --- dump.rdb | Bin 48084 -> 48084 bytes src/views/install/index.tpl | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dump.rdb b/dump.rdb index e06eb58bdc27f577db6a2d6acb966063481c46a0..d426560c86d838dd56abe637ec4b99f2a739442c 100644 GIT binary patch delta 33 rcmV++0N(%9_X5=S0+28QHk7e4WeWo#>%y~|3o@_>$pgPi(AFJN{JRc! delta 33 pcmcceo$1PVrU?d2oRc>irE)X7hws}wi`!@ehth>+h7!vQ!2s - - + + - - + + - - + + \ No newline at end of file From e8588d6c06559413ff5ba1b35419ac1c316e985d Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 01:10:03 +0300 Subject: [PATCH 021/127] ensuring the modal html is included --- dump.rdb | Bin 48084 -> 48109 bytes src/views/partials/bug-feedback-modal.tpl | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/dump.rdb b/dump.rdb index d426560c86d838dd56abe637ec4b99f2a739442c..61c07605a1a87089b5fc1e2a3acf1eee0a3eba62 100644 GIT binary patch delta 230 zcmcceo$2j&rU?du$x}b1{o*JsPEFCxP0c-&AhppkjGLLQ{`lru+-(Ys#+wy&PO~xU zZGLN{D#YpIP%Ku=z`!6hS=!Z#?*Rih6T|xb3%D5>{|hKhE@YIOY~anZxz1J5f^Xf4 zqtcTY85lVK|5?C&fAiW}ZzkpyCys9ZUH?&x-`62sEFEZ!0K*rCJ^rGT@6C{!EIM6^ zlYw8sopJsC2IbBA(-$yuhQe*TF~f-uD5(#YWa4N1FF4uJRCV%g8NNw@vXd8Bm~CD< Xa|<`vf|#WRVjQPJgfk@4w_gAN|0hw+ delta 188 zcmaF+o$1PVrU?duW>Y?-{o*JsPEFCxP0c-|5VO%SjGI~U^`XtPxZ4yMRW>W?oMvN` z-~84{RfyBoAzdt;fq_9_vb3w!<``Em3%EaMA77bL-H~G&rtIhV)7cg@Az>Rn@!-bNN(~0Y4*unE;5_%ukJAOJ#fLEr!Y diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl index 3efea3b882..1eaf9c15d5 100644 --- a/src/views/partials/bug-feedback-modal.tpl +++ b/src/views/partials/bug-feedback-modal.tpl @@ -7,4 +7,4 @@ - \ No newline at end of file + \ No newline at end of file From 92f9299bb8125029c02c4616852f2341ab6449a8 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 01:16:28 +0300 Subject: [PATCH 022/127] Commited dump.rdb file --- dump.rdb | Bin 48109 -> 48109 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index 61c07605a1a87089b5fc1e2a3acf1eee0a3eba62..ce4cb6a1f2d66948ce1fd270c7615ee6a023cacc 100644 GIT binary patch delta 33 rcmV++0N(%Y_X6$r0+28Qke0DBWeWr463nxj3rnyFCZ&fKs~CLW2rCY+ delta 33 pcmaF+o$2j&rU?d2$x}BPrE)W~)gRwHi`#nx$EgtE42ksZ7XbWL4kG{n From 36523a12eb262118d84ef1d4a49b5287a847b1d4 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 11:32:59 +0300 Subject: [PATCH 023/127] Commited dump.rdb file --- dump.rdb | Bin 48109 -> 48109 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index ce4cb6a1f2d66948ce1fd270c7615ee6a023cacc..ccb32ae8ce53cfc95dc3449cfe66faad577269c3 100644 GIT binary patch delta 35 tcmV+;0NnrW_X6$r0+28Re<$&=Gh_<{!z=X From 0732a8c74b195fc85f7254abd0880ae5d8c5930f Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 14:48:30 +0300 Subject: [PATCH 024/127] Adding code in sidebar-left.tpl which will have the bug-feedback button --- dump.rdb | Bin 48109 -> 48160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index ccb32ae8ce53cfc95dc3449cfe66faad577269c3..c298d740ebe5cbd22ce96a456adbe1e24a40895c 100644 GIT binary patch delta 292 zcmaF+ooT@jrU?cDu^}JResPo*r>5xUrsf`+u+br$n|Vt8#?7<1+Y}frHY@6!W@9wo z{MJZSh%?HeTdbRbfkAAtw5uck14eEphNrR*7?hdbNy{~Cj&=34;GgkcT5b{}0|V#( zKZleKq;1|>>&3*<5g;wMnYrPE7-xb*y;wca1d+*qrfF;IgY+keD{wP608L2XW?)v} zX7st(;LgAWWaK9|a5L~L=rgY0-(bDje)e$9zYg GECc}2c3QFk delta 231 zcmZ4RgX!&erU?cD_39tfesPo*r>5xUrsf_>*ys?>&3ssgY4a@ZHU&oG&5Amw*%dF)}c4{{ORp`+oA~!?j*aEGvM5 zn*|#_h;jNlq>H5k^$1MnnyxLO%;FP6~tlM^ugMg_!<8TPIfd^-8^BYC=bNel}q!* OIKu3v7wtRntq}m8QB0@+ From c27bf7c13d071c9ea986b4b0a22f3181ded6d872 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 14:48:46 +0300 Subject: [PATCH 025/127] Commited dump.rdb file --- dump.rdb | Bin 48160 -> 48163 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index c298d740ebe5cbd22ce96a456adbe1e24a40895c..2a15802f7406173a19acef151f7fa3dcd93e877b 100644 GIT binary patch delta 77 zcmV-T0J8s}_yVK&0+28QidC^PJqrP*lW+?s19ua)lbQ=E4VB;lHDDTmI{+5o0Xvi3 j3n32xli&d#fMy`O0u=Okz|^z;3mUKpU(wzNFYWD(MGPJC delta 73 zcmV-P0Ji_5_yVB#0+28QT~x6$JqrP&lW+?s1C)QUlbQ=E8I#}vHDDS*Q~(s<0XYDb f;0GRHS^yT{0U(pn3n8-s3>vTqRVOv$4#ec4wPqPk From 8115438bf5f0ad2d7b1cb8a9032d1aeba42adb33 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 14:55:12 +0300 Subject: [PATCH 026/127] Sdded the modal HTML for the Bug comment form in bug-feedback-modal.tpl --- dump.rdb | Bin 48163 -> 48178 bytes src/views/partials/bug-feedback-modal.tpl | 34 ++++++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/dump.rdb b/dump.rdb index 2a15802f7406173a19acef151f7fa3dcd93e877b..24716c727768e3d4d6a28f6411599376fec7658d 100644 GIT binary patch delta 307 zcmZ4dgK5(brU?du+rvJl{o*JsPEFCxP0c;DVAV!PJ#NOulMA@jnWc+&O`gTAB{}&4 zqiKSaLkNS&14c`RsSnuY5~3Ky9xy6QzR0b(nUP0Hfz^`nzktrH?P!AMnzGr?iH*mMR428qdXuKw%~7`PcvcP`kR=jv&}H%EE9+$2T@2G0L~B#kd@ zK3eO|#5_}Z`)1*Wk7Ar@4&7qiKz(A9d8aF@Go9{~1L-}`(IC#iq+rd&@KiQIT!EXZ z;hl7YG6S;$H>1zRhTzSC(>F14=EAMynW5xUrsf`+Ahpp^kDGDXj@lJif zXqq6^V9g-*fYEyLU2a8whRF{Yzf-HBuGg zjB@A}>td)A)xzN?qf^WuqX}L*^3=EwA{~S^}u=zx-HxqM5fb?duhL2*L z2@dsQ^*|jWlLe+LD>5GFXy9gGQqX5&cq*G9uE5RQ@J?DTft!I@ft%6iVuSnUsOg&+ zIn&|Rh|W~dKETb)u*Y8%sESEJ8Ds)T9|O>U2Mpp&Fzw19?ZKPVW(M*wcLFWnwX{Ht NBmUw&cKx?+djWoUTK@n5 diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl index 1eaf9c15d5..059f6a3e2f 100644 --- a/src/views/partials/bug-feedback-modal.tpl +++ b/src/views/partials/bug-feedback-modal.tpl @@ -1,10 +1,26 @@ - - + +
+ +
From a57b55e2c26ae5737e77b8184465528a5236b83f Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 15:13:06 +0300 Subject: [PATCH 030/127] Editied the index.tpl file --- dump.rdb | Bin 48178 -> 48199 bytes src/views/install/index.tpl | 23 +++++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/dump.rdb b/dump.rdb index d00da2e1431fe89e7de1efa638614294eff5ed32..385ef4acc2a8dfe321bcd4055f721bee22d9be54 100644 GIT binary patch delta 263 zcmdn=gX#DWrU?cDc2OVGesPo*r>5xUrsf{{u+br$oB2!9iOsXP+Y}gWHY@6!W@9wp z{MJZSh%?<`vDjh;1_r6g(ypQG4;Z+a7xA{b^ zHxu&&_k)|o8a|3~<~mFln-0_`Ff!iuN(?JJ^?ra8Lblpt+lNyyKPtfI>d|!rZ^M;x1JYW~? RT3R5+QJd4d@#ECS&j3k@TSou@ delta 283 zcmX^9gK5(brU?cDPr^T@{o*JsPEFCxP0c-YV537gH?yhr{>`(v+Y}hBHY@6!W@9wn z{MJZSh%>=qy4Z9E1_p`A4m-pq8@k%FFW_cm{4bz1xsXwA^Bh-I3%)tZ+vO%PGB9xd z|Fik*<;~}7y_uM2DsSH`+wf70GtHq}tQ)9bY_j-tOU(xi+>Gy}8@L&m6~q~RE;a-+ za4B#z<|hM1_!X=f*Y9s|XX0o4FK9e@qLk`nZ4ZITdfKs*Z(B-DwwuK>Ibf&q~yKg&NCI1kxbVInI6x;i*EYn-kJ71VAq{rS|G-;C-BG}r|T)_ E0Xa)wqyPW_ diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index c57922a545..f6d06fa77f 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -128,6 +128,17 @@ + + +
+ +
+ + + + + + {{{ end }}} @@ -158,15 +169,7 @@ {{{ end }}} - -
- -
- - - - - - + + \ No newline at end of file From 7f1e7152ce0d34bd467b534929d77a1f6fd9de08 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 15:18:37 +0300 Subject: [PATCH 031/127] Editied the index.tpl file --- dump.rdb | Bin 48199 -> 48199 bytes src/views/install/index.tpl | 25 ++++++++++++------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/dump.rdb b/dump.rdb index 385ef4acc2a8dfe321bcd4055f721bee22d9be54..c0bdeb5f978784255ef88cc81323f001467709cb 100644 GIT binary patch delta 33 rcmV++0N(${_yWiH0+28QYg@50WeWq=_RO=I3#G6Ks}wIJwqQ^W1*#4- delta 33 rcmV++0N(${_yWiH0+28QK3cIdWeWrJV#u?a3#G6KeQb@f@s)w|0-O*h diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index f6d06fa77f..ac91879a93 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -28,6 +28,16 @@ + + + +
+ +
+ + + + {{{ if !installing }}}

@@ -128,17 +138,6 @@

- - -
- -
- - - - - - {{{ end }}} @@ -169,7 +168,7 @@ {{{ end }}} - - + + \ No newline at end of file From 912ced8c2989115fdc63c37ec0c4e31b63205c10 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 15:21:34 +0300 Subject: [PATCH 032/127] Editied the index.tpl file --- dump.rdb | Bin 48199 -> 48281 bytes src/views/install/index.tpl | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dump.rdb b/dump.rdb index c0bdeb5f978784255ef88cc81323f001467709cb..16927d63fb85dd1a3ed81df40859d8deb748e22d 100644 GIT binary patch delta 755 zcmZ{gO-K|`0LN!`ba!)=Tq#SX_U(ih-F4r4^YLajl3julGZM58ePC~9-sFQI*u0)wDKMNxX|(&-QX!w-JHSKlK`KOze- zxp@Ao{WD(mnUyWG@=N&oaq&z-7+&0HE+^&zf1;VryovJ1np^n8sPMdJGhDA_qN~Nt z;@1A~cde%mlC20sU4;cMl@ZyTTk@DM=0yy#oJBAT$t1#gBXlUOte6p}gTOsi znYk+F1Fy<5qDzBmfVdp!jrz3ACQ1P~-6@XIIkA=zP2aO8oy)8Ox>5uhiebG%aUYMC%THTYNt%YkStpzrX)jEqe#;Y zreQ-hiKJs>nklRiO@cBq6)Y1&GF6G_x*;)*%GA)Q0`3a-4E4bS?iyH%$u9MM*YN_- z(IReF^wPV)UZKnaT1fIG7d+w+_{KrNZ?7&?t0k+@l?q4dpdNvW4YE;-1}rF*)A1N0 zm_URuc*5%%s77aKU^`wJjK+(uJHx<9YJ!|#c+QoJH(JD_)1CuJEF;b`&o4Pe57nMi#WrInr8RFa9ckZjX|CUQyW^kM K-1_JEui3wX^yWkW delta 569 zcmbRFlj-;mrU?du+0h@5xUrsf{{AhppkjGOt|w=0 zfTk+>BvvTZ>L?`_7o~;dXQ$=?h0G0-OjA-!Qc_dRk}Ql(j8aV}&#dE{yrNEF@<||m zRj1$zG$So1u^4DxHBfUwVsUXneo+aKrv&t05zw(f(cILMM36{k0nkiCBXd0iAT$K( zEG^AU0SQg^saL2sFiisrr6iW5mSpCFylHM^ZeVC=WMW`uX#q4kC$S_gzbF@|-m#z{ zCsn~WF&U^nsVKi3Y>|?4Mo~UcpN>*lYEf}!KFIxsMiyYZ43uhX1=v6ivNAmEXzCa$ z8Oq4OAj8lB63PPx0cS_zWcCJQ<_YcxC)+kWXJ+PNocwU6(&Piu?31hIv?edGFx&j7 z@qnn#0d6LST?Za8a5FW$lWyQH}^tsp&&%gy_FeR*UGXY)c5>0{|J{x5fYf diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index ac91879a93..9a50ffe80b 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -35,9 +35,6 @@ - - - {{{ if !installing }}}

@@ -153,6 +150,9 @@

{{{ end }}} + + +
{{{ each databases }}}
From 34addbc92785e5795762dfe766b14195067b5650 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 15:26:02 +0300 Subject: [PATCH 033/127] Editied the bug-feedback.js file for handling the click in public/scripts --- dump.rdb | Bin 48281 -> 48281 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index 16927d63fb85dd1a3ed81df40859d8deb748e22d..a3a0cdae549be338d7df8dc90dd554a0d45bc627 100644 GIT binary patch delta 104 zcmbRFlWFEprU?c@M`J&x{o*JsPEFCxP0c-|Ag8d=DU_RevFo+Xv$)$77=1S@>YQd{ z^w|8?=)MnDZsBZnkZhAkHYf`P_6NCLr~2rY#RxSaDf_7{@|p77ttY Gj;{c*(kN5_ delta 104 zcmbRFlWFEprU?c@Gh#lb{o*JsPEFCxP0c-Ia7uooQz$pH-HeNyXK}YFFnVuR)H%(@ z=(hQ-(S0xGJ(ABipRdhkVpf`bcC&561aU^e&F7{IF#)NEGi`am!iviZ#5kUwEvSFR H@uv&``7SHD From 6a5921b2e7e7fc9c2b8bdd2b1562ed8f3dbfb7e9 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 22:40:41 +0300 Subject: [PATCH 034/127] Editied public/scripts/bug-feedback.js --- dump.rdb | Bin 48281 -> 48321 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dump.rdb b/dump.rdb index a3a0cdae549be338d7df8dc90dd554a0d45bc627..5e277bc8b9621044439a25d59a572f928ebf2068 100644 GIT binary patch delta 357 zcmbRFlj-13rU?du#fLwp{o*JsPEFCxP0c-YL35*H7&l8~X|lrR+1#xPj8U5vbxyM} zhHidqq$t6HvQa7&!m`naEp_vH3!678A=w!keOwOFH5Ojc>nE`0j z0dA%Sdq<$Tj0ZXzlo^;5l$jWw$|fi)a5FcY?v#7Lz|Hthx`CU4SwWo9=VC)P1D66f zV}3GFgkQm$asB=VcL#39T?ZQUndCN~n?8?`zX|4GhA#|)lUXL`PnQB(f@~K9khjNQ zG(j9_n>ff?{mIK`%E^>7@ZvW5;Y?c|o@sFZ3204TI7e>s0crNl{>z-iIR2#`tmEI4 Gt^fcTgK+== delta 278 zcmX^3lWFEprU?duM`J&x{o*JsPEFCxP0c-|Ah*#mjGJY#>ovK}v$YQd{ z^w|8?NL7e4-C?oVVg?2Vsmao=G3*Pt85#czC`~S8l-s=0Rn>xjlKVlqNsJ5(od5p> zsJ~0we781>i6vj+s@!Jp1|@OMT!-mm(}B7rCYMcD(0RbX&3K@rft!IzL7$1?sceF{ z0ylHR=}tM2#5-xA1haxTqtC^LU Date: Mon, 23 Sep 2024 23:37:45 +0300 Subject: [PATCH 035/127] Edited code in public/scripts/bug-feedback.js this code handles the button click --- dump.rdb | Bin 48321 -> 48347 bytes public/scripts/bug-feedback.js | 95 +++++++++++++++++++++------------ 2 files changed, 60 insertions(+), 35 deletions(-) diff --git a/dump.rdb b/dump.rdb index 5e277bc8b9621044439a25d59a572f928ebf2068..bd6f545ca3ca376d8375d129caaa2ef9cd1c86e9 100644 GIT binary patch delta 378 zcmX^3lj-(PrU?duNf$n*{o*JsPEFCxP0c;@KzpNO7&kN9_ost{+j!*Q|W3=9kklcilV`5rKEGco8@EZ}Bj{4bz1xsXwA^Ga7$3%>UF3WZ6G z3=EwA{{*Qo+kB@sn~9lOtar0lgR(ehi^FcQ-9RJcCYMdu4n5G(AkM&~AkM__R5n3e zft$JEbf+B9Tt<7x27L!{#&^;{d1eJ=MxTof*$i9?){J@;4ay9>3gV3U$v`Q7AY=Xh zhIj{V#$5**teNB({|g#Vo+za{dA*y!WIgTJ&2=+47&*J)?(Uzd9uIQ&9)HmUZlKNj zj6f$S11)9%y5IqWI1|EtYXxPd2B-tLK@KPf+6!@j0yk3wPWvZ2nyOB|EyK6jeil0q U*yEnd3dA@>85CFlT*$Qv0BK-!7ytkO delta 364 zcmccplj-13rU?du#fLwp{o*JsPEFCxP0c-YL35*H7&midY4YY-+-(YsQJWQYPO~wF zZhmW|D#Tghuv=_50|SHHWNFvT&E2kE7JRdQ$0lzYIy&G=5b zft!I@L7dU&Vna3qmjX9qelk#mU%{Gj{r(1b2X4k)2O9L51sx_J4MSQZpg6L#x7qQ7v3fz;eBt$058M1BuyX=}M N$G_Brb^LqM6#%^Rc1!>O diff --git a/public/scripts/bug-feedback.js b/public/scripts/bug-feedback.js index 69e93db768..bc982dac4d 100644 --- a/public/scripts/bug-feedback.js +++ b/public/scripts/bug-feedback.js @@ -1,38 +1,63 @@ // public/scripts/bug-feedback.js document.addEventListener('DOMContentLoaded', function () { - const feedbackButton = document.getElementById('submit-bug-feedback'); - const feedbackModal = document.getElementById('bug-feedback-modal'); - const feedbackForm = document.getElementById('bug-feedback-form'); - - feedbackButton.addEventListener('click', function () { - feedbackModal.style.display = 'block'; + console.log('DOM fully loaded and parsed'); + + const feedbackButton = document.getElementById('submit-bug-feedback'); + const feedbackModal = document.getElementById('bug-feedback-modal'); + const feedbackForm = document.getElementById('bug-feedback-form'); + + if (!feedbackButton) { + console.error('Feedback button not found'); + } else { + console.log('Feedback button found'); + } + + if (!feedbackModal) { + console.error('Feedback modal not found'); + } else { + console.log('Feedback modal found'); + } + + if (!feedbackForm) { + console.error('Feedback form not found'); + } else { + console.log('Feedback form found'); + } + + feedbackButton.addEventListener('click', function () { + console.log('Feedback button clicked'); + feedbackModal.style.display = 'block'; + }); + + feedbackForm.addEventListener('submit', async function (event) { + event.preventDefault(); + console.log('Feedback form submitted'); + const title = document.getElementById('title').value; + const description = document.getElementById('description').value; + + console.log('Title:', title); + console.log('Description:', description); + + const response = await fetch('/api/bugs', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ title, description }), }); - - feedbackForm.addEventListener('submit', async function (event) { - event.preventDefault(); - const title = document.getElementById('title').value; - const description = document.getElementById('description').value; - - const response = await fetch('/api/bugs', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ title, description }), - }); - - if (response.ok) { - alert('Thank you for your feedback!'); - feedbackModal.style.display = 'none'; - } else { - alert('Failed to submit feedback. Please try again.'); - } - }); - - // Close modal when clicking outside of it - window.addEventListener('click', function (event) { - if (event.target === feedbackModal) { - feedbackModal.style.display = 'none'; - } - }); - }); \ No newline at end of file + + if (response.ok) { + alert('Thank you for your feedback!'); + feedbackModal.style.display = 'none'; + } else { + alert('Failed to submit feedback. Please try again.'); + } + }); + + // Close modal when clicking outside of it + window.addEventListener('click', function (event) { + if (event.target === feedbackModal) { + feedbackModal.style.display = 'none'; + } + }); +}); \ No newline at end of file From dba4399cf3efb3a321d15fae66316f3c2ac7cae8 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Mon, 23 Sep 2024 23:51:38 +0300 Subject: [PATCH 036/127] Edited the spacing in index.tpl --- dump.rdb | Bin 48347 -> 48344 bytes src/views/install/index.tpl | 3 --- 2 files changed, 3 deletions(-) diff --git a/dump.rdb b/dump.rdb index bd6f545ca3ca376d8375d129caaa2ef9cd1c86e9..9a007944e809af8e894ea0b7dd6754c80327f219 100644 GIT binary patch delta 195 zcmccplj+7!rU?c@FE4*g`^8aOoSLGWo0@y*!%O*%PNCe)D>p6PJd3+cfiY{dqRweH z#?;MkjXrxZPnfe~^W)lVCT89C`I`e9l*JjFCYMf67UO2jPj295;8$>GT))2|*nyi- zucEh($ delta 161 zcmccdlj-(PrU?c@Nf$n*{o*JsPEFCxP0c;@KwDv>Qz$nx+xMxPXK}YFFlKC4)H%(@ zn7sL|(PuB_AoXRNAJ=9xF*A$xZVqfv7H4dkTsl2j!kSU9qCuH~S3#UHKe<7ifgi|N xzrP`V^SkNG85z4LPn(%74pF1P&D4OZM0}PT57@kfWd&j!q6~_we=g+O1OTjBInMw9 diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index 9a50ffe80b..e12859de35 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -29,7 +29,6 @@
-
@@ -94,8 +93,6 @@
- - {{{ if !skipDatabaseSetup }}}

From dc8e5a34bfb72786fd3fe358acf70b7b756fb743 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 00:20:16 +0300 Subject: [PATCH 037/127] Added the bug modal HTML code in the index.tpl --- dump.rdb | Bin 48344 -> 48368 bytes src/views/install/index.tpl | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/dump.rdb b/dump.rdb index 9a007944e809af8e894ea0b7dd6754c80327f219..22ea544c4a5cf750336aa24cf19c0c6360c7fd54 100644 GIT binary patch delta 248 zcmccdlj*}xrU?c@-*0_P`^8aOoSLGWo0@w_Ku2MtQz$p{*MR+-XK}YFFy?Gl)H%(@ zn7;X~k*W}9lfz}P%M1(*N|P_{5Swi18pZyAft#s8X8q=FS1$`bDZLE}lNcEoIRF3o zY8f08k8BB6qK15p2{XD zPu@0Nj=7wHYtk%n76t(Y@y#EmFJJ|qXqd)oj lOf|;l$^T|bLi9?`a^YeA2edq4S%DZwh{x@R>)+241^_A8S#p6PJd3+cfiY{dqRweH z#?;MkjZ}p=s~wJu9cN%*P?#+3TEM=5o00LqfYRhbM!C(~T~#gk+T$w}CNVNFaQ^=@ zVa|@tuWGZIn04FdZ;ohC7Uyho*e$jjs8?=s%XDpz104nn&(Ue_wN`R%gbq8w_m`yw@Wt4#s`Nycl^ diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index e12859de35..cf9ad0edfd 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -34,6 +34,36 @@

+ + + + + + {{{ if !installing }}}

From 0fc0c1102029726f429c7d63ab419980316d983d Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 01:08:51 +0300 Subject: [PATCH 038/127] adding consolelog statments in bug-feedback.js to find the error --- dump.rdb | Bin 48368 -> 48406 bytes public/scripts/bug-feedback.js | 33 +++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/dump.rdb b/dump.rdb index 22ea544c4a5cf750336aa24cf19c0c6360c7fd54..276d5231b09768e0ed1d201ab5c5cf4fe8e08f29 100644 GIT binary patch delta 364 zcmezHlWE#7rU?duJD+__`^8aOoSLGWo0@yb!EmEv7&r4-ySJNXai>Xg_Bc$DpTfYv zATXIzHJnj?a-yn~a9>h>en~M;d16U&MsRj!9)APl=4#cYY>auE6?IOtF=lRlYosc~ z+39d!>^@Md%4BKRa=r%)+)NDI&lYeqGX57(nq0^zw|Tp(ss+D(+e?K>j0_B%|Nm4> zW6Iq8x;Bf6S*Pvg=77b43quWJ44%b$l6=tPLSCqE2UoP0oXgRys7vH!(0U z@J;4a4QG^^oTw_bxleT|8*2{Ze*vAzfe~_(PYd&HPSKgo#+bgzSXGF#$>FltWuOkF z$^1LTCcC&MZeHW+Wx+3{w?SbNBLf5H|39DYPG)Rot;=F!{-(QOb5Vn`IA@o`ak1k- zO$w9eO;_hSz|GVkv;F}iH{;|B(-q|3NjHcyFe@lC`dn-%XW&xcX3S4+;AY@gaA#b< zzaeb-VE`9hW$6F_ diff --git a/public/scripts/bug-feedback.js b/public/scripts/bug-feedback.js index bc982dac4d..d2be26e927 100644 --- a/public/scripts/bug-feedback.js +++ b/public/scripts/bug-feedback.js @@ -26,7 +26,9 @@ document.addEventListener('DOMContentLoaded', function () { feedbackButton.addEventListener('click', function () { console.log('Feedback button clicked'); + console.log('Attempting to display modal'); feedbackModal.style.display = 'block'; + console.log('Modal display style set to block'); }); feedbackForm.addEventListener('submit', async function (event) { @@ -38,19 +40,25 @@ document.addEventListener('DOMContentLoaded', function () { console.log('Title:', title); console.log('Description:', description); - const response = await fetch('/api/bugs', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ title, description }), - }); + try { + const response = await fetch('/api/bugs', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ title, description }), + }); - if (response.ok) { - alert('Thank you for your feedback!'); - feedbackModal.style.display = 'none'; - } else { - alert('Failed to submit feedback. Please try again.'); + if (response.ok) { + alert('Thank you for your feedback!'); + feedbackModal.style.display = 'none'; + console.log('Modal display style set to none'); + } else { + alert('Failed to submit feedback. Please try again.'); + console.error('Failed to submit feedback:', response.statusText); + } + } catch (error) { + console.error('Error submitting feedback:', error); } }); @@ -58,6 +66,7 @@ document.addEventListener('DOMContentLoaded', function () { window.addEventListener('click', function (event) { if (event.target === feedbackModal) { feedbackModal.style.display = 'none'; + console.log('Modal display style set to none (clicked outside)'); } }); }); \ No newline at end of file From 281fbeab6199c45bf91c5b754dc9b1d1ff776a14 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 01:14:59 +0300 Subject: [PATCH 039/127] deleted a line in the index.tpl file --- dump.rdb | Bin 48406 -> 48409 bytes src/views/install/index.tpl | 1 - 2 files changed, 1 deletion(-) diff --git a/dump.rdb b/dump.rdb index 276d5231b09768e0ed1d201ab5c5cf4fe8e08f29..17f4836f854a491d84f060ec352e204f74656626 100644 GIT binary patch delta 266 zcmbRCi)rRBrU?cD&z^rw`^8aOoSLGWo0@y*!A6I0Zsz5eK5m}HJyU@-pYgwd&g8%d zxyh%6`8KEM%w}WE+GNb=&AgYNb2Cd_HWM?;|M#1V8kEHuCrzF~rU?cDJD+__`^8aOoSLGWo0@ybVWUGhH}hG$x0`2i&s1Q|WBf0mGdVCq zZt`hizRf8*v)LFkHyJZ}GgnMw+RRdy&BUzJ_HuJkgR(f|#L3g9>jykw;AZ501|*pp z4s3bcWlsi5NDKG|A3L3@trhK6|;gqqtC^LW(F<= zZpQrN25ts^gN~njj7|+?o++i~eMe nS+Yt9v&2DW^)v9Io3+`0mOl^J!3&oah;dAiUC-`(KCl!3fhJel diff --git a/src/views/install/index.tpl b/src/views/install/index.tpl index cf9ad0edfd..91471d1c22 100644 --- a/src/views/install/index.tpl +++ b/src/views/install/index.tpl @@ -177,7 +177,6 @@

{{{ end }}} -
From 3bb5d6fdf963948c3d872bbc8579a470b2847f90 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 12:58:40 +0300 Subject: [PATCH 040/127] deleted empty lines in bug-feedback-modal.tpl --- dump.rdb | Bin 48409 -> 48495 bytes src/views/partials/bug-feedback-modal.tpl | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dump.rdb b/dump.rdb index 17f4836f854a491d84f060ec352e204f74656626..0f4c1a2442b364e12f932888d91531e6f1cf980c 100644 GIT binary patch delta 518 zcmbRFi|PF@rU?e>+j~Bx{o*JsPEFCxP0c;D;DbEFFOJ0gG~J}c;?x5S{}_Hdyk`{9 zoqTbM+~fn&?2`>_I3{Pxif^2Kh09^Pqp`3tBLjmNLt9RMdS+fR`xo8xCz6vCgakRe zQj3c6i;AsG4UD`cX(C5r3}oB4QD z6c!`|_?Ik7 zQU;6v|C7F;GkY^@T^19ItVDtG=Hdn=an4x|_r>l5O;DLUZ@QlcBR3P!!Uqh>jPIly z^ck2H+!?u_H7GN%0vSFR8~Pcz6u24llN-1h_!X2H*Y9sAci?8!s{kq$P!MO_b)dnW zNsjTqpz-91QmT^^JOn0N`2=m=JVTg~a}nHY=VyjF;kHK~WY25{UPAV4j-O@E!y^au h2gGwgFM}d)LaXv*eFf1?%LT&z^rw`^8aOoSLGWo0@y*fuRD!FOJ0gG~J}c;?x5S{}_Hdykiv5 zo!rPTH`!q#`{X=lj>)yM;u~jQ;nG>`C@U<>$iN`N(3X>*o|#w7{zW(aiR2^&Apy?L zg2eRHvdq--Vy-XCFMU*)yq-HpfUP*QB)_Pb{{e#}Bjuj#jna#$SwOPbiRfx0G;l9{?1_lO|$xg0yEDN|987KGK zC~ki1YNpF1paoQ}y1AtI1Q)-4+e?K>Ku2-@|Ff5$Gjp?dT^17y%m4QZn|C%SiE~bJ zxGZ)VXpGY2C)53G7`T}jxSu@$QVs8<8}u2N6}TCFE;ckXZ~+-RTg zJ8(1VRWw*L2q=g%?mEz5%_KLuutRh6{28T;oU`CglbsdjfWypw242EuGX57dnEY^} o%I5pCM0q$tt_FK$@_%_naOl5}VBM^>+*XW3HOKJ9vp=qy06@o@RsaA1 diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl index 059f6a3e2f..dd1cb4cee5 100644 --- a/src/views/partials/bug-feedback-modal.tpl +++ b/src/views/partials/bug-feedback-modal.tpl @@ -23,4 +23,5 @@
- \ No newline at end of file + + From 8abb3f4de8ae6f3be12901e378d7746fb631d5a7 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 13:42:20 +0300 Subject: [PATCH 041/127] Added code to trigger the button in bug-feedbacl.tpl --- dump.rdb | Bin 48495 -> 48515 bytes src/views/partials/bug-feedback-modal.tpl | 4 ++++ 2 files changed, 4 insertions(+) diff --git a/dump.rdb b/dump.rdb index 0f4c1a2442b364e12f932888d91531e6f1cf980c..cc001309ff7ca4d7964550818ad1a559bf5c4cce 100644 GIT binary patch delta 301 zcmaF=i>diH(*y$n|LLF7esPo*r>5xUrsf{Hu+br#o7w5(yv^&lXDYCkG5#0OnS4-K zXLE(lY&OQi%_7FCLY&hbzKeZlU|`Ug?Bv?Ub-g50Oijy5CvQK^=!Ma&%xvdz7_JJ*%RF7WE0RWj?X;J_H delta 261 zcmZqv&Gh~k(*y&7?LD8;esPo*r>5xUrsf`6u+br#n>luR>E?CZGZk1%82=0COg<>A zv$;ZNHXCF9W)WjmA%n+s=bVB}l`w^D0X3|9U6ApNr$c+vGwE}S8{`P?ik X9%eb9W4M + + + + From 2e47d80f9796da5d0ecb13bf27673f57137e6ad4 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 13:45:31 +0300 Subject: [PATCH 042/127] Changed the bug-feedback.js to handle the button --- public/scripts/bug-feedback.js | 61 ++++++++++++---------------------- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/public/scripts/bug-feedback.js b/public/scripts/bug-feedback.js index d2be26e927..715ab6438a 100644 --- a/public/scripts/bug-feedback.js +++ b/public/scripts/bug-feedback.js @@ -1,45 +1,34 @@ -// public/scripts/bug-feedback.js -document.addEventListener('DOMContentLoaded', function () { - console.log('DOM fully loaded and parsed'); - - const feedbackButton = document.getElementById('submit-bug-feedback'); +// Ensure the DOM is fully loaded before attaching event listeners +document.addEventListener('DOMContentLoaded', function() { const feedbackModal = document.getElementById('bug-feedback-modal'); - const feedbackForm = document.getElementById('bug-feedback-form'); - - if (!feedbackButton) { - console.error('Feedback button not found'); - } else { - console.log('Feedback button found'); - } + const openModalButton = document.getElementById('openModalButton'); + const closeModalButton = document.querySelector('.close'); - if (!feedbackModal) { - console.error('Feedback modal not found'); - } else { - console.log('Feedback modal found'); - } + // Show the modal when the button is clicked + openModalButton.addEventListener('click', function() { + feedbackModal.style.display = 'block'; + }); - if (!feedbackForm) { - console.error('Feedback form not found'); - } else { - console.log('Feedback form found'); - } + // Hide the modal when the close button is clicked + closeModalButton.addEventListener('click', function() { + feedbackModal.style.display = 'none'; + }); - feedbackButton.addEventListener('click', function () { - console.log('Feedback button clicked'); - console.log('Attempting to display modal'); - feedbackModal.style.display = 'block'; - console.log('Modal display style set to block'); + // Hide the modal when clicking outside of it + window.addEventListener('click', function(event) { + if (event.target === feedbackModal) { + feedbackModal.style.display = 'none'; + console.log('Modal display style set to none (clicked outside)'); + } }); - feedbackForm.addEventListener('submit', async function (event) { + // Existing code for form submission + document.getElementById('bug-feedback-form').addEventListener('submit', async function(event) { event.preventDefault(); - console.log('Feedback form submitted'); + const title = document.getElementById('title').value; const description = document.getElementById('description').value; - console.log('Title:', title); - console.log('Description:', description); - try { const response = await fetch('/api/bugs', { method: 'POST', @@ -61,12 +50,4 @@ document.addEventListener('DOMContentLoaded', function () { console.error('Error submitting feedback:', error); } }); - - // Close modal when clicking outside of it - window.addEventListener('click', function (event) { - if (event.target === feedbackModal) { - feedbackModal.style.display = 'none'; - console.log('Modal display style set to none (clicked outside)'); - } - }); }); \ No newline at end of file From dd78a68e50e0d6d54ca38e51c988958a107226e9 Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 13:54:49 +0300 Subject: [PATCH 043/127] Added JavaScript code for opening and closing the modal and handling the form submission --- dump.rdb | Bin 48515 -> 48519 bytes src/views/partials/bug-feedback-modal.tpl | 49 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/dump.rdb b/dump.rdb index cc001309ff7ca4d7964550818ad1a559bf5c4cce..f93246db4372ab89cbc3c73f5a84459284a81b86 100644 GIT binary patch delta 221 zcmZqv&D8#zX@UXM%9$IDD!G|iC0A@-$30VlwVLt2fX?KD!aAEPbY`w)AG! zytZd^KwUNy^TYIooA)&+i!&~s{AhZN+ye$>#&^;U`V7np?u^{e8k8AW6}TBKD}fAl zh2Y6iGi14}83Yu>8Fw9M2;ST{V*w-M>d8v8QdIG3v}W|V*sz>|cXHwkF#&{rCOO9c of(DZ>M957x(Bhh$AE>@rZuTo~u$#D-7l?7NP0O92+ASpx03pXmivR!s delta 230 zcmZqw&D8vxX@UWh|MZPUmE6ouALnge$30VlwT$t|lKwUNy^T*wDHt%at7H3>I`O)+knFGp943?D-7`T}l-bpuDGcYTNGjcy`&}U#( z5T6_~LzYLMK>#SU>p+7$licL + + + + + + + \ No newline at end of file From 43d4fea59d457634d2e6369471a8d5e3641544df Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Tue, 24 Sep 2024 14:06:37 +0300 Subject: [PATCH 044/127] Added console logs in the js file and added the bugg js script in the tpl file --- dump.rdb | Bin 48519 -> 48519 bytes public/scripts/bug-feedback.js | 2 ++ src/views/partials/bug-feedback-modal.tpl | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dump.rdb b/dump.rdb index f93246db4372ab89cbc3c73f5a84459284a81b86..fe7b693eb7afff43d923dae1dd62cf4fcc581706 100644 GIT binary patch delta 112 zcmV-$0FVEN`vQmi0+28g1Dx_^`UrJ%Wn?XFWo^R1G9a-+X$u3>XR))c3z;AVd;$Lu zER(?#EVFnln+5@QvlKHqO9T97#j{X;YXSpxSFE$XfSVTq2(wz4Ndf@~v!t4635xUrsf{H@Iii~QzkbvtK^E!>$qnsuvRnv7ton} zP*`Vkh0bg?# - -
- -
- - - - - - - {{{ if !installing }}}

@@ -177,8 +142,6 @@

{{{ end }}} - -
\ No newline at end of file diff --git a/node_modules/nodebb-theme-harmony/templates/partials/account/header.tpl b/node_modules/nodebb-theme-harmony/templates/partials/account/header.tpl new file mode 100644 index 0000000000..5499f49df6 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/partials/account/header.tpl @@ -0,0 +1,98 @@ +
{{{ each databases }}}
@@ -194,7 +157,5 @@ {{{ end }}}
- - \ No newline at end of file From b70af9681cadae08ece2b5fc48ec61d4edc73daa Mon Sep 17 00:00:00 2001 From: AlAnoud2003 Date: Wed, 25 Sep 2024 11:28:54 +0300 Subject: [PATCH 069/127] editing bug-feedback-modal.tpl --- dump.rdb | Bin 48948 -> 48981 bytes src/views/partials/bug-feedback-modal.tpl | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dump.rdb b/dump.rdb index b5216e4f90340ad6abb87658ad34cd70c5e7efc0..98c0a75edfadcdd4eff11848910a19844d42a551 100644 GIT binary patch delta 374 zcmdn;kLl_^rU?cD!Y4kb{o*JsPEFCxP0c-2u+gELTQFpgjYfhIL+1kqe-^GUkMmqN z-{GFAz{54N&zp0Bf*jgfh?v$3iW=OIUXZhJ-s29wE!t{eCsFo-kl zFw|(^W@P*?pftIVQEu`Z2kFVbY(yu^IPz_7adWcZ+c?ukV-ipY=l?&4H->J$QkTud zynd$5W~aswan2i##@xn0Nu$a0XM|`SP-bQT8h3!3so|Y;gEa%Qf;c1hvj%+zRt0WG z%Ss@FLqVC*=VHV1$zn5=8JBOint6ti^C8?x{Ig^Hi8DieLjyMhmx4Ic=Ma?yYX)wh zML=UuGw=c}%1;K$@dGVdzrSJm=FPLanT6%$85kH?7`}j92lfji<7U_S%$#74c(2G3 VW@OsDZFd(4rU?cDJx4yL{o*JsPEFCxP0c;ju+gELTd<{DPb0yIq4NQQKMU8Fn9b&! z?{LplU}acRLz$8#6L67)>s8-N4=;&dB&*KxuLz zqugd+w+0J7w+u#&NkD1N|9>WzyKlZ-m(9d{FFqo&&&yST+WIt VVW9u6?=EBJNSkGJsaat*696rtU`zl2 diff --git a/src/views/partials/bug-feedback-modal.tpl b/src/views/partials/bug-feedback-modal.tpl index 090d6c49bc..e5c97bfd06 100644 --- a/src/views/partials/bug-feedback-modal.tpl +++ b/src/views/partials/bug-feedback-modal.tpl @@ -1,8 +1,8 @@ - + -
+ + + +
+ + {{{ if !isSpider }}} +
+
+ +
+
+ {{{ end }}} + + + + diff --git a/node_modules/nodebb-theme-harmony/templates/groups/details.tpl b/node_modules/nodebb-theme-harmony/templates/groups/details.tpl new file mode 100644 index 0000000000..9290af34d1 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/groups/details.tpl @@ -0,0 +1,86 @@ +
+
+
+ {{{ if group.isOwner }}} +
+ + + +
+
[[groups:cover-save]]
+
[[groups:cover-saving]]
+ {{{ end }}} +
+
+ +
+
+
+

{group.displayName}

+
+
+ {group.descriptionParsed} +
+ {{{ if group.private }}}[[groups:details.private]]{{{ end }}} + {{{ if group.hidden }}}[[groups:details.hidden]]{{{ end }}} +
+
+
+
+ {{{ if loggedIn }}} + {function.membershipBtn, group} + {{{ end }}} + {{{ if isAdmin }}} + [[user:edit]] + {{{ end }}} +
+
+ +
+
+ {{{each widgets.left}}} + {{widgets.left.html}} + {{{end}}} +
+ + +
+
+
+

[[global:posts]]

+ {{{ if !posts.length }}} +
[[groups:details.has-no-posts]]
+ {{{ end }}} + +
+
+

[[groups:details.members]]

+ + +
+ {{{ if group.isOwner }}} +
+

[[groups:details.pending]]

+ +
+ +
+

[[groups:details.invited]]

+ +
+ +
+

[[groups:details.owner-options]]

+ +
+ {{{ end }}} +
+
+ +
+ {{{each widgets.right}}} + {{widgets.right.html}} + {{{end}}} +
+
+
diff --git a/node_modules/nodebb-theme-harmony/templates/groups/list.tpl b/node_modules/nodebb-theme-harmony/templates/groups/list.tpl new file mode 100644 index 0000000000..d69f80c2dc --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/groups/list.tpl @@ -0,0 +1,56 @@ +
+ {{{each widgets.header}}} + {{widgets.header.html}} + {{{end}}} +
+
+

[[pages:groups]]

+
+ +
+
+
+ {{{ if allowGroupCreation }}} + + {{{ end }}} + +
+
+
+ + +
+
+
+
+
+ +
+ +
+ {{{ if groups.length }}} + + {{{ else }}} +
+
+ [[groups:no-groups-found]] +
+
+ {{{ end }}} +
+
diff --git a/node_modules/nodebb-theme-harmony/templates/groups/members.tpl b/node_modules/nodebb-theme-harmony/templates/groups/members.tpl new file mode 100644 index 0000000000..e5cb1c41d7 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/groups/members.tpl @@ -0,0 +1,10 @@ + +
+
+ {{{ each users }}} + + {{{ end }}} +
+ + +
\ No newline at end of file diff --git a/node_modules/nodebb-theme-harmony/templates/header.tpl b/node_modules/nodebb-theme-harmony/templates/header.tpl new file mode 100644 index 0000000000..309ca8b7d4 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/header.tpl @@ -0,0 +1,47 @@ + + + + {browserTitle} + {{{each metaTags}}}{function.buildMetaTag}{{{end}}} + + {{{each linkTags}}}{function.buildLinkTag}{{{end}}} + + + + {{{if useCustomHTML}}} + {{customHTML}} + {{{end}}} + {{{if useCustomCSS}}} + + {{{end}}} + + + + [[global:skip-to-content]] +
+ + +
+ + +
+ + + +{{{ \render 'src/views/partials/bug-feedback-modal.tpl' }}} \ No newline at end of file diff --git a/node_modules/nodebb-theme-harmony/templates/login.tpl b/node_modules/nodebb-theme-harmony/templates/login.tpl new file mode 100644 index 0000000000..13ca55b8fa --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/login.tpl @@ -0,0 +1,101 @@ +
+ {{{each widgets.header}}} + {{widgets.header.html}} + {{{end}}} +
+ +
+ {{{each widgets.footer}}} + {{widgets.footer.html}} + {{{end}}} +
\ No newline at end of file diff --git a/node_modules/nodebb-theme-harmony/templates/notifications.tpl b/node_modules/nodebb-theme-harmony/templates/notifications.tpl new file mode 100644 index 0000000000..ee5d6fb235 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/notifications.tpl @@ -0,0 +1,32 @@ +
+ + +
+ +
+
+ +
+
+
    + +
+ +
+
+
+ + diff --git a/node_modules/nodebb-theme-harmony/templates/partials/account/admin-menu.tpl b/node_modules/nodebb-theme-harmony/templates/partials/account/admin-menu.tpl new file mode 100644 index 0000000000..2941c91505 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/partials/account/admin-menu.tpl @@ -0,0 +1,36 @@ +
+ + +
diff --git a/node_modules/nodebb-theme-harmony/templates/partials/account/category-item.tpl b/node_modules/nodebb-theme-harmony/templates/partials/account/category-item.tpl new file mode 100644 index 0000000000..e7f9568a44 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/partials/account/category-item.tpl @@ -0,0 +1,22 @@ +
  • + +
    +
    +
    + {buildCategoryIcon(@value, "24px", "rounded-1")} +
    +
    +
    + +
    + {{{ if ./descriptionParsed }}} +
    {./descriptionParsed}
    + {{{ end }}} +
    +
    +
    + +
    +
    +
    +
  • diff --git a/node_modules/nodebb-theme-harmony/templates/partials/account/footer.tpl b/node_modules/nodebb-theme-harmony/templates/partials/account/footer.tpl new file mode 100644 index 0000000000..e3c5167c91 --- /dev/null +++ b/node_modules/nodebb-theme-harmony/templates/partials/account/footer.tpl @@ -0,0 +1,3 @@ +
    +
    +