From c2fb57eb184486f055edf7de1f7892864ea59652 Mon Sep 17 00:00:00 2001 From: Anthony Talarico Date: Tue, 12 Jun 2018 14:26:57 -0400 Subject: [PATCH] redoing the logic for the modules settings and storage --- dev/app.scss | 2 +- .../{action-items.js.off => action-items.js} | 0 .../_glm-member-db-events.scss | 0 .../events-feed.php | 0 .../functions/glm-member-db-events.php} | 0 .../glm-member-db-events.js} | 0 dev/custom/glm-member-db/_glm-member-db.scss | 0 .../glm-member-db/functions/glm-member-db.php | 0 dev/custom/glm-member-db/glm-member-db.js | 0 .../glm-members-only-login-form.php | 0 .../glm-members-only-lostpass-form.php | 0 .../glm-members-only-top-bar.php | 0 dev/custom/nextgen/nextgen.js | 0 dev/custom/svg-map/functions/svg-map.php | 0 dev/custom/weather/functions/weather.php | 0 dev/custom/weather/weather.js | 0 dev/custom/woocommerce/woocommerce.js | 0 package-lock.json | 25 ++- package.json | 3 +- setup/index.html | 1 - setup/renderer.js | 194 +++++++----------- setup/setup.css | 10 +- 22 files changed, 107 insertions(+), 128 deletions(-) rename dev/custom/action-items/{action-items.js.off => action-items.js} (100%) rename dev/custom/{glma => glm-member-db-events}/_glm-member-db-events.scss (100%) rename dev/custom/{glma => glm-member-db-events}/events-feed.php (100%) rename dev/custom/{glma/_glm-member-db.scss => glm-member-db-events/functions/glm-member-db-events.php} (100%) rename dev/custom/{glma/functions/glma.php => glm-member-db-events/glm-member-db-events.js} (100%) create mode 100644 dev/custom/glm-member-db/_glm-member-db.scss create mode 100644 dev/custom/glm-member-db/functions/glm-member-db.php create mode 100644 dev/custom/glm-member-db/glm-member-db.js rename dev/custom/{glma => glm-member-db}/glm-members-only-login-form.php (100%) rename dev/custom/{glma => glm-member-db}/glm-members-only-lostpass-form.php (100%) rename dev/custom/{glma => glm-member-db}/glm-members-only-top-bar.php (100%) create mode 100644 dev/custom/nextgen/nextgen.js create mode 100644 dev/custom/svg-map/functions/svg-map.php create mode 100644 dev/custom/weather/functions/weather.php create mode 100644 dev/custom/weather/weather.js create mode 100644 dev/custom/woocommerce/woocommerce.js diff --git a/dev/app.scss b/dev/app.scss index c447ceb..06ac902 100644 --- a/dev/app.scss +++ b/dev/app.scss @@ -19,7 +19,7 @@ @import "custom/weather/weather"; @import "custom/nextgen/nextgen"; @import "custom/glma/glm-member-db"; -//@import "custom/glma/glm-member-db-events"; +@import "custom/glma/glm-member-db-events"; @import "custom/blocks/glm-blocks"; @import "custom/action-items/action-items"; @import "custom/svg-map/svg-map"; diff --git a/dev/custom/action-items/action-items.js.off b/dev/custom/action-items/action-items.js similarity index 100% rename from dev/custom/action-items/action-items.js.off rename to dev/custom/action-items/action-items.js diff --git a/dev/custom/glma/_glm-member-db-events.scss b/dev/custom/glm-member-db-events/_glm-member-db-events.scss similarity index 100% rename from dev/custom/glma/_glm-member-db-events.scss rename to dev/custom/glm-member-db-events/_glm-member-db-events.scss diff --git a/dev/custom/glma/events-feed.php b/dev/custom/glm-member-db-events/events-feed.php similarity index 100% rename from dev/custom/glma/events-feed.php rename to dev/custom/glm-member-db-events/events-feed.php diff --git a/dev/custom/glma/_glm-member-db.scss b/dev/custom/glm-member-db-events/functions/glm-member-db-events.php similarity index 100% rename from dev/custom/glma/_glm-member-db.scss rename to dev/custom/glm-member-db-events/functions/glm-member-db-events.php diff --git a/dev/custom/glma/functions/glma.php b/dev/custom/glm-member-db-events/glm-member-db-events.js similarity index 100% rename from dev/custom/glma/functions/glma.php rename to dev/custom/glm-member-db-events/glm-member-db-events.js diff --git a/dev/custom/glm-member-db/_glm-member-db.scss b/dev/custom/glm-member-db/_glm-member-db.scss new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/glm-member-db/functions/glm-member-db.php b/dev/custom/glm-member-db/functions/glm-member-db.php new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/glm-member-db/glm-member-db.js b/dev/custom/glm-member-db/glm-member-db.js new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/glma/glm-members-only-login-form.php b/dev/custom/glm-member-db/glm-members-only-login-form.php similarity index 100% rename from dev/custom/glma/glm-members-only-login-form.php rename to dev/custom/glm-member-db/glm-members-only-login-form.php diff --git a/dev/custom/glma/glm-members-only-lostpass-form.php b/dev/custom/glm-member-db/glm-members-only-lostpass-form.php similarity index 100% rename from dev/custom/glma/glm-members-only-lostpass-form.php rename to dev/custom/glm-member-db/glm-members-only-lostpass-form.php diff --git a/dev/custom/glma/glm-members-only-top-bar.php b/dev/custom/glm-member-db/glm-members-only-top-bar.php similarity index 100% rename from dev/custom/glma/glm-members-only-top-bar.php rename to dev/custom/glm-member-db/glm-members-only-top-bar.php diff --git a/dev/custom/nextgen/nextgen.js b/dev/custom/nextgen/nextgen.js new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/svg-map/functions/svg-map.php b/dev/custom/svg-map/functions/svg-map.php new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/weather/functions/weather.php b/dev/custom/weather/functions/weather.php new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/weather/weather.js b/dev/custom/weather/weather.js new file mode 100644 index 0000000..e69de29 diff --git a/dev/custom/woocommerce/woocommerce.js b/dev/custom/woocommerce/woocommerce.js new file mode 100644 index 0000000..e69de29 diff --git a/package-lock.json b/package-lock.json index 6e67150..5dfcea9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -284,8 +284,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -371,7 +370,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -672,8 +670,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -3435,6 +3432,24 @@ "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", "dev": true }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "requires": { + "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + } + } + }, "node-gyp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", diff --git a/package.json b/package.json index 175820f..9657015 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "node-sass": "^3.8.0" }, "dependencies": { - "merge-stream": "^1.0.1" + "merge-stream": "^1.0.1", + "node-dir": "^0.1.17" } } diff --git a/setup/index.html b/setup/index.html index 071da17..6cd61ee 100644 --- a/setup/index.html +++ b/setup/index.html @@ -11,7 +11,6 @@

GLM Origin Theme Setup

-
diff --git a/setup/renderer.js b/setup/renderer.js index f33d4c9..259bfa7 100644 --- a/setup/renderer.js +++ b/setup/renderer.js @@ -1,134 +1,98 @@ const path = require('path'); const fs = require('fs'); const merge = require('merge-stream'); - +const dir = require('node-dir'); +const appState = {}; +// PHP Functions File Libraries index file var functionsFileReader = require('readline').createInterface({ input: require('fs').createReadStream('dev/modules.php') }); - +// Sass File Imports index file var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('dev/app.scss') }); - +String.prototype.stringFromToken = function(position, token, lastToken = false){ + if(lastToken && position === 'before'){ + return this.substr(0, this.lastIndexOf(token)) + }else if(lastToken && !postition === 'before'){ + return this.substr(this.lastIndexOf(token) + 1); + }else { + if(position === 'before'){ + return this.substr(0, this.indexOf(token)) + }else{ + return this.substr(this.indexOf(token)+1) + } + } +} String.prototype.stripSlashes = function(){ return this.replace(/\\(.)/mg, "$1"); } - -// Display Active and In-Active Modules -let modName = ''; -function readLines(mode, state){ - if(mode === 'parse'){ - lineReader.on('line', function (line) { - parseModules(this, line); - }); - // activate or deactivate the JS files for each module - functionsFileReader.on('line', function (line) { - parsePhpLibs(this, line) - }); - - // functionsFileReader.on('line', function (line) { - // parseModules(this, line); - // }); - }else if( mode === "edit"){ - fs.readFile(state.path, 'utf8', function (err,data) { - var result; - if (err) { - return console.log(err); - } - if(state.active){ - var newLine = state.line.substr(2); - }else{ - var newLine = "//" + state.line; - } - result = data.replace(state.line, newLine); - state.line = newLine; - localStorage.setItem(state.name, JSON.stringify(state)); - - fs.writeFile(state.path, result, 'utf8', function (err) { - if (err) return console.log(err); - }); - }); - } +function setModules(modType,modName){ + appState[modType] = modName; + return appState; } -let modList = $("#module-list"); -function parseModules(reader,line){ - let active = true; - if(!line.match(/[^ ]/) || line.startsWith('/*') || line.startsWith('')){ - // nothing - }else{ - if(line.startsWith('//')){ - modName = line.substr(line.lastIndexOf('/') + 1); - modName = modName.replace(/[^\w\s\-]/gi, '') - active = false; - }else if(!line.startsWith('//')){ - if(line.indexOf("/") > -1){ - modName = line.substr(line.lastIndexOf('/') + 1); - modName = modName.replace(/[^\w\s\-]/gi, '') - }else if(line.indexOf(" ") > -1){ - modName = line.match( /"(.*?)"/ )[1]; - } - active = true; - } - - localStorage.setItem(modName, JSON.stringify({path: reader.input.path, line: line, modName: modName, active: active})) - $('
  • ', { - class: `module-item module-active-${active}`, - id: `${modName}`, - text: `${modName}` - }).appendTo(modList) - } +function storeModules(appState){ + localStorage.setItem("app", JSON.stringify(appState)); } -// true is used for init parsing of theme modules, edit is to activate or de-activate modules -// true is called initially when scanning the app.scss file for commented modules -// edit is called when selectively activating and de-activating modules from the GUI -// last param is the path to the file to be editted since we can't use the readLine Stream again (idk how yet) -function scanModules(parse, edit, state){ - if(parse) { - readLines("parse"); - }else if(edit){ - readLines("edit", state) - } +function getModuleTypes(modules){ + return Object.keys(modules) } - -scanModules(true, false, false); - - -// On Click Set Mod State -$(document).on("click", ".module-item", function(){ - let _ = $(this); - let modName = _.attr("id"); - let thisMod = JSON.parse(localStorage.getItem(modName)) - - let moduleLocation = `dev/${thisMod.line.split("import ").pop().replace(/[;'"]+/g, '')}`; - let state = {path: thisMod.path, line: thisMod.line, name: modName} - - if( _.hasClass("module-active-true") ){ - state.active = false; - _.removeClass("module-active-true"); - _.addClass("module-active-false"); - }else if( _.hasClass("module-active-false") ){ - state.active = true; - _.removeClass("module-active-false"); - _.addClass("module-active-true"); +function getModules(){ + return JSON.parse(localStorage.getItem("app")); +} +function getModuleByName(modName){ + let mods = JSON.parse(localStorage.getItem("app")), newMods = []; + for(modType in mods){ + newMods.push(getModulesByType(modType).filter(function(mod){ + return mod.name == modName; + })) } + return newMods[0].concat(newMods[1])[0]; +} - scanModules(false, true , state) - - // Activate or De-Activate JS Files - let jsFile = path.join(__dirname, `../${moduleLocation}.js`); - let newJsFile = jsFile+'.off'; - fs.exists(jsFile, function(exists) { - if(exists){ - fs.rename(jsFile, newJsFile, function(err){ - if (err) throw err; - }); - } +// Returns an array of Modules +function getModulesByType(moduleType){ + let appState = JSON.parse(localStorage.getItem("app")); + return appState[moduleType]; +} +function getDevDirs(){ + let fullPath = path.join(__dirname, `../dev`); + fs.readdir(fullPath, function(err, item) { + console.log(item) }); - fs.exists(newJsFile, function(exists) { - if(exists){ - fs.rename(newJsFile, jsFile, function(err){ - if (err) throw err; +} +function buildList(){ + getModuleTypes(getModules()).forEach(function(modType){ + $(`

    ${modType}

    `).appendTo( $("#module-list-container")); + $(`