Add module subfolder support.

This commit is contained in:
Michael Teeuw 2016-04-01 17:35:29 +02:00
parent 671338425a
commit e4c54cc655
27 changed files with 56 additions and 21 deletions

10
.gitignore vendored
View File

@ -3,11 +3,5 @@
!/modules/node_helper !/modules/node_helper
!/modules/node_helper/** !/modules/node_helper/**
/modules/* /modules/**
!/modules/calendar !/modules/default/**
!/modules/clock
!/modules/compliments
!/modules/currentweather
!/modules/helloworld
!/modules/newsfeed
!/modules/weatherforecast

View File

@ -24,13 +24,13 @@ Things that still have to be implemented or changed.
##Modules ##Modules
### Default modules: ### Default modules:
- [**Clock**](modules/clock) - [**Clock**](modules/default/clock)
- [**Calendar**](modules/calendar) - [**Calendar**](modules/default/calendar)
- [**Current Weather**](modules/currentweather) - [**Current Weather**](modules/default/currentweather)
- [**Weather Forecast**](modules/weatherforecast) - [**Weather Forecast**](modules/default/weatherforecast)
- [**News Feed**](modules/newsfeed) - [**News Feed**](modules/default/newsfeed)
- [**Compliments**](modules/compliments) - [**Compliments**](modules/default/compliments)
- [**Hello World**](modules/helloworld) - [**Hello World**](modules/default/helloworld)
### 3rd Party Modules: ### 3rd Party Modules:

View File

@ -31,6 +31,7 @@
<script type="text/javascript" src="js/defaults.js"></script> <script type="text/javascript" src="js/defaults.js"></script>
<script type="text/javascript" src="config/config.js"></script> <script type="text/javascript" src="config/config.js"></script>
<script type="text/javascript" src="vendor/vendor.js"></script> <script type="text/javascript" src="vendor/vendor.js"></script>
<script type="text/javascript" src="modules/default/defaultmodules.js"></script>
<script type="text/javascript" src="js/logger.js"></script> <script type="text/javascript" src="js/logger.js"></script>
<script type="text/javascript" src="js/class.js"></script> <script type="text/javascript" src="js/class.js"></script>
<script type="text/javascript" src="js/module.js"></script> <script type="text/javascript" src="js/module.js"></script>

View File

@ -6,7 +6,7 @@ const fs = require('fs');
const Server = require(__dirname + '/server.js'); const Server = require(__dirname + '/server.js');
const spawn = require('child_process').spawn; const spawn = require('child_process').spawn;
const electron = require('electron'); const electron = require('electron');
const defaultModules = require(__dirname + '/../modules/default/defaultmodules.js');
// Config // Config
var config = {}; var config = {};
@ -56,8 +56,18 @@ function loadConfig (callback) {
} }
} }
function loadModule(moduleName) { function loadModule(module) {
var helperPath = __dirname + '/../modules/' + moduleName + '/node_helper.js';
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; var loadModule = true;
try { try {
fs.accessSync(helperPath, fs.R_OK); fs.accessSync(helperPath, fs.R_OK);

View File

@ -79,12 +79,20 @@ var Loader = (function() {
var moduleData = modules[m]; var moduleData = modules[m];
var module = moduleData.module; 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({ moduleFiles.push({
index: m, index: m,
identifier: 'module_' + m + '_' + module, identifier: 'module_' + m + '_' + module,
name: module, name: moduleName,
path: config.paths.modules + '/' + module, path: moduleFolder + '/' ,
file: module + '.js', file: moduleName + '.js',
position: moduleData.position, position: moduleData.position,
header: moduleData.header, header: moduleData.header,
config: moduleData.config, config: moduleData.config,

View File

@ -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;}