From e4c54cc6550bce7a7fddc0753322673dfb42b26f Mon Sep 17 00:00:00 2001 From: Michael Teeuw Date: Fri, 1 Apr 2016 17:35:29 +0200 Subject: [PATCH] Add module subfolder support. --- .gitignore | 10 ++------- README.md | 14 ++++++------ index.html | 1 + js/electron.js | 16 +++++++++++--- js/loader.js | 14 +++++++++--- modules/{ => default}/calendar/README.md | 0 modules/{ => default}/calendar/calendar.css | 0 modules/{ => default}/calendar/calendar.js | 0 modules/{ => default}/calendar/node_helper.js | 0 modules/{ => default}/clock/README.md | 0 modules/{ => default}/clock/clock.js | 0 modules/{ => default}/compliments/README.md | 0 .../{ => default}/compliments/compliments.js | 0 .../{ => default}/currentweather/README.md | 0 .../currentweather/currentweather.css | 0 .../currentweather/currentweather.js | 0 modules/default/defaultmodules.js | 22 +++++++++++++++++++ modules/{ => default}/helloworld/README.md | 0 .../{ => default}/helloworld/helloworld.js | 0 modules/{ => default}/newsfeed/README.md | 0 modules/{ => default}/newsfeed/fetcher.js | 0 modules/{ => default}/newsfeed/newsfeed.js | 0 modules/{ => default}/newsfeed/newsfetcher.js | 0 modules/{ => default}/newsfeed/node_helper.js | 0 .../{ => default}/weatherforecast/README.md | 0 .../weatherforecast/weatherforecast.css | 0 .../weatherforecast/weatherforecast.js | 0 27 files changed, 56 insertions(+), 21 deletions(-) rename modules/{ => default}/calendar/README.md (100%) rename modules/{ => default}/calendar/calendar.css (100%) rename modules/{ => default}/calendar/calendar.js (100%) rename modules/{ => default}/calendar/node_helper.js (100%) rename modules/{ => default}/clock/README.md (100%) rename modules/{ => default}/clock/clock.js (100%) rename modules/{ => default}/compliments/README.md (100%) rename modules/{ => default}/compliments/compliments.js (100%) rename modules/{ => default}/currentweather/README.md (100%) rename modules/{ => default}/currentweather/currentweather.css (100%) rename modules/{ => default}/currentweather/currentweather.js (100%) create mode 100644 modules/default/defaultmodules.js rename modules/{ => default}/helloworld/README.md (100%) rename modules/{ => default}/helloworld/helloworld.js (100%) rename modules/{ => default}/newsfeed/README.md (100%) rename modules/{ => default}/newsfeed/fetcher.js (100%) rename modules/{ => default}/newsfeed/newsfeed.js (100%) rename modules/{ => default}/newsfeed/newsfetcher.js (100%) rename modules/{ => default}/newsfeed/node_helper.js (100%) rename modules/{ => default}/weatherforecast/README.md (100%) rename modules/{ => default}/weatherforecast/weatherforecast.css (100%) rename modules/{ => default}/weatherforecast/weatherforecast.js (100%) diff --git a/.gitignore b/.gitignore index fbe259c4..708870ec 100644 --- a/.gitignore +++ b/.gitignore @@ -3,11 +3,5 @@ !/modules/node_helper !/modules/node_helper/** -/modules/* -!/modules/calendar -!/modules/clock -!/modules/compliments -!/modules/currentweather -!/modules/helloworld -!/modules/newsfeed -!/modules/weatherforecast +/modules/** +!/modules/default/** diff --git a/README.md b/README.md index e952ca02..3df3738a 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,13 @@ Things that still have to be implemented or changed. ##Modules ### Default modules: -- [**Clock**](modules/clock) -- [**Calendar**](modules/calendar) -- [**Current Weather**](modules/currentweather) -- [**Weather Forecast**](modules/weatherforecast) -- [**News Feed**](modules/newsfeed) -- [**Compliments**](modules/compliments) -- [**Hello World**](modules/helloworld) +- [**Clock**](modules/default/clock) +- [**Calendar**](modules/default/calendar) +- [**Current Weather**](modules/default/currentweather) +- [**Weather Forecast**](modules/default/weatherforecast) +- [**News Feed**](modules/default/newsfeed) +- [**Compliments**](modules/default/compliments) +- [**Hello World**](modules/default/helloworld) ### 3rd Party Modules: diff --git a/index.html b/index.html index 70b73040..18eb65e9 100644 --- a/index.html +++ b/index.html @@ -31,6 +31,7 @@ + diff --git a/js/electron.js b/js/electron.js index fc05c10e..74192f6c 100755 --- a/js/electron.js +++ b/js/electron.js @@ -6,7 +6,7 @@ const fs = require('fs'); const Server = require(__dirname + '/server.js'); const spawn = require('child_process').spawn; const electron = require('electron'); - +const defaultModules = require(__dirname + '/../modules/default/defaultmodules.js'); // Config var config = {}; @@ -56,8 +56,18 @@ function loadConfig (callback) { } } -function loadModule(moduleName) { - var helperPath = __dirname + '/../modules/' + moduleName + '/node_helper.js'; +function loadModule(module) { + + var elements = module.split('/'); + var moduleName = elements[elements.length - 1]; + var moduleFolder = __dirname + '/../modules/' + module; + + if (defaultModules.indexOf(moduleName) !== -1) { + moduleFolder = __dirname + '/../modules/default/' + module; + } + + var helperPath = moduleFolder + '/node_helper.js'; + var loadModule = true; try { fs.accessSync(helperPath, fs.R_OK); diff --git a/js/loader.js b/js/loader.js index a35c013c..0c6f661c 100644 --- a/js/loader.js +++ b/js/loader.js @@ -79,12 +79,20 @@ var Loader = (function() { var moduleData = modules[m]; var module = moduleData.module; + var elements = module.split('/'); + var moduleName = elements[elements.length - 1]; + var moduleFolder = config.paths.modules + '/' + module; + + if (defaultModules.indexOf(moduleName) !== -1) { + moduleFolder = config.paths.modules + '/default/' + module; + } + moduleFiles.push({ index: m, identifier: 'module_' + m + '_' + module, - name: module, - path: config.paths.modules + '/' + module, - file: module + '.js', + name: moduleName, + path: moduleFolder + '/' , + file: moduleName + '.js', position: moduleData.position, header: moduleData.header, config: moduleData.config, diff --git a/modules/calendar/README.md b/modules/default/calendar/README.md similarity index 100% rename from modules/calendar/README.md rename to modules/default/calendar/README.md diff --git a/modules/calendar/calendar.css b/modules/default/calendar/calendar.css similarity index 100% rename from modules/calendar/calendar.css rename to modules/default/calendar/calendar.css diff --git a/modules/calendar/calendar.js b/modules/default/calendar/calendar.js similarity index 100% rename from modules/calendar/calendar.js rename to modules/default/calendar/calendar.js diff --git a/modules/calendar/node_helper.js b/modules/default/calendar/node_helper.js similarity index 100% rename from modules/calendar/node_helper.js rename to modules/default/calendar/node_helper.js diff --git a/modules/clock/README.md b/modules/default/clock/README.md similarity index 100% rename from modules/clock/README.md rename to modules/default/clock/README.md diff --git a/modules/clock/clock.js b/modules/default/clock/clock.js similarity index 100% rename from modules/clock/clock.js rename to modules/default/clock/clock.js diff --git a/modules/compliments/README.md b/modules/default/compliments/README.md similarity index 100% rename from modules/compliments/README.md rename to modules/default/compliments/README.md diff --git a/modules/compliments/compliments.js b/modules/default/compliments/compliments.js similarity index 100% rename from modules/compliments/compliments.js rename to modules/default/compliments/compliments.js diff --git a/modules/currentweather/README.md b/modules/default/currentweather/README.md similarity index 100% rename from modules/currentweather/README.md rename to modules/default/currentweather/README.md diff --git a/modules/currentweather/currentweather.css b/modules/default/currentweather/currentweather.css similarity index 100% rename from modules/currentweather/currentweather.css rename to modules/default/currentweather/currentweather.css diff --git a/modules/currentweather/currentweather.js b/modules/default/currentweather/currentweather.js similarity index 100% rename from modules/currentweather/currentweather.js rename to modules/default/currentweather/currentweather.js diff --git a/modules/default/defaultmodules.js b/modules/default/defaultmodules.js new file mode 100644 index 00000000..a6b81c88 --- /dev/null +++ b/modules/default/defaultmodules.js @@ -0,0 +1,22 @@ +/* Magic Mirror + * Default Modules List + * + * By Michael Teeuw http://michaelteeuw.nl + * MIT Licensed. + */ + +// Modules listed below can be loaded without the 'default/' prefix. Omitting the default folder name. + +var defaultModules = [ + 'calendar', + 'clock', + 'compliments', + 'currentweather', + 'helloworld', + 'newsfeed', + 'weatherforecast' +]; + + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== 'undefined') {module.exports = defaultModules;} \ No newline at end of file diff --git a/modules/helloworld/README.md b/modules/default/helloworld/README.md similarity index 100% rename from modules/helloworld/README.md rename to modules/default/helloworld/README.md diff --git a/modules/helloworld/helloworld.js b/modules/default/helloworld/helloworld.js similarity index 100% rename from modules/helloworld/helloworld.js rename to modules/default/helloworld/helloworld.js diff --git a/modules/newsfeed/README.md b/modules/default/newsfeed/README.md similarity index 100% rename from modules/newsfeed/README.md rename to modules/default/newsfeed/README.md diff --git a/modules/newsfeed/fetcher.js b/modules/default/newsfeed/fetcher.js similarity index 100% rename from modules/newsfeed/fetcher.js rename to modules/default/newsfeed/fetcher.js diff --git a/modules/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js similarity index 100% rename from modules/newsfeed/newsfeed.js rename to modules/default/newsfeed/newsfeed.js diff --git a/modules/newsfeed/newsfetcher.js b/modules/default/newsfeed/newsfetcher.js similarity index 100% rename from modules/newsfeed/newsfetcher.js rename to modules/default/newsfeed/newsfetcher.js diff --git a/modules/newsfeed/node_helper.js b/modules/default/newsfeed/node_helper.js similarity index 100% rename from modules/newsfeed/node_helper.js rename to modules/default/newsfeed/node_helper.js diff --git a/modules/weatherforecast/README.md b/modules/default/weatherforecast/README.md similarity index 100% rename from modules/weatherforecast/README.md rename to modules/default/weatherforecast/README.md diff --git a/modules/weatherforecast/weatherforecast.css b/modules/default/weatherforecast/weatherforecast.css similarity index 100% rename from modules/weatherforecast/weatherforecast.css rename to modules/default/weatherforecast/weatherforecast.css diff --git a/modules/weatherforecast/weatherforecast.js b/modules/default/weatherforecast/weatherforecast.js similarity index 100% rename from modules/weatherforecast/weatherforecast.js rename to modules/default/weatherforecast/weatherforecast.js