From b3bbdc0c2a64d464cb365a2f2cf22c85665b0abd Mon Sep 17 00:00:00 2001 From: Wynne Crisman Date: Wed, 17 Aug 2016 17:54:59 -0700 Subject: [PATCH] Large set of changes - building the GUI for the data tracking app. --- app/routes.js | 443 +++++- migrations/20160602030145-Measure.js | 13 +- migrations/20160602030146-Venue.js | 13 +- migrations/20160602030147-Category.js | 13 +- migrations/20160602030148-Subcategory.js | 13 +- migrations/20160602030149-Item.js | 13 +- migrations/20160602030150-Sale.js | 8 +- models/category.js | 16 +- models/item.js | 16 +- models/measure.js | 8 +- models/sale.js | 13 + models/subcategory.js | 16 +- models/venue.js | 18 +- public/admin/Venues.html | 184 +++ public/admin/categories.css | 0 public/admin/categories.html | 183 +++ public/admin/categories.styl | 2 + public/admin/css/bootstrap-switch.css | 195 +++ public/admin/css/bootstrap-switch.min.css | 22 + .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin public/admin/css/titatoggle-dist-min.css | 1 + public/admin/css/titatoggle-dist.css | 1233 +++++++++++++++++ public/admin/index.ejs | 21 +- public/admin/items.css | 0 public/admin/items.html | 207 +++ public/admin/items.styl | 2 + public/admin/js/LinkedTreeTable.js | 149 ++ public/admin/js/bootstrap-switch.js | 744 ++++++++++ public/admin/js/bootstrap-switch.min.js | 22 + public/admin/js/framework_lite.js | 92 +- public/admin/js/linkedTable.js | 48 +- public/admin/js/main.js | 23 +- public/admin/main.css | 8 +- public/admin/main.styl | 15 +- public/admin/measures.css | 3 + public/admin/measures.html | 195 +++ public/admin/measures.styl | 2 + public/admin/subcategories.css | 0 public/admin/subcategories.html | 183 +++ public/admin/subcategories.styl | 2 + public/admin/users.html | 201 ++- public/admin/users.styl | 2 +- public/admin/venues.styl | 2 + 47 files changed, 4186 insertions(+), 158 deletions(-) create mode 100644 public/admin/Venues.html create mode 100644 public/admin/categories.css create mode 100644 public/admin/categories.html create mode 100644 public/admin/categories.styl create mode 100644 public/admin/css/bootstrap-switch.css create mode 100644 public/admin/css/bootstrap-switch.min.css rename public/admin/css/{bootstrap => }/fonts/glyphicons-halflings-regular.eot (100%) rename public/admin/css/{bootstrap => }/fonts/glyphicons-halflings-regular.svg (100%) rename public/admin/css/{bootstrap => }/fonts/glyphicons-halflings-regular.ttf (100%) rename public/admin/css/{bootstrap => }/fonts/glyphicons-halflings-regular.woff (100%) rename public/admin/css/{bootstrap => }/fonts/glyphicons-halflings-regular.woff2 (100%) create mode 100644 public/admin/css/titatoggle-dist-min.css create mode 100644 public/admin/css/titatoggle-dist.css create mode 100644 public/admin/items.css create mode 100644 public/admin/items.html create mode 100644 public/admin/items.styl create mode 100644 public/admin/js/LinkedTreeTable.js create mode 100644 public/admin/js/bootstrap-switch.js create mode 100644 public/admin/js/bootstrap-switch.min.js create mode 100644 public/admin/measures.css create mode 100644 public/admin/measures.html create mode 100644 public/admin/measures.styl create mode 100644 public/admin/subcategories.css create mode 100644 public/admin/subcategories.html create mode 100644 public/admin/subcategories.styl create mode 100644 public/admin/venues.styl diff --git a/app/routes.js b/app/routes.js index 3442625..7577a10 100644 --- a/app/routes.js +++ b/app/routes.js @@ -182,7 +182,7 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) { }); }); - app.get('/admin/user-data', isLoggedIn, function(req, res) { + app.get('/admin/user/list', isLoggedIn, function(req, res) { try { if(req.user.admin) { sequelize.models.User.findAll().then(function(values) { @@ -190,15 +190,450 @@ module.exports = function(app, rootPath, passport, smtpTransport, sequelize) { }); } else { - + //TODO: Return some kind of error. + res.status(400).end(); } } catch(e) {console.log(e);} }); - app.post('/admin/createUser', isLoggedIn, function(req, res) { + app.post('/admin/user/create', isLoggedIn, function(req, res) { try { - res.json({status: 'success'}); + if(req.user.admin) { + var login = req.body.login; + var password = req.body.password; + + sequelize.models.User.create({ + login: login, + password: sequelize.models.User.generateHash(password), + admin: true + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/user/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var userId = req.body.id; + + /* This isn't quite right.. the return of user.destroy() causes problems if the user is not found. Regardless, it is cleaner code to user the class method to destroy the instance rather than load it just to destroy it. + sequelize.models.User.findById(userId, {}).then(function(user) { + if(user) { + return user.destroy(); + } + else { + res.json({result: 'failure'}); + } + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + */ + sequelize.models.User.destroy({where: {id: userId}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/user/changeLogin', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var userId = req.body.id; + var login = req.body.login; + + sequelize.models.User.findById(userId, {}).then(function(user) { + user.login = login; + return user.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/user/resetPassword', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var userId = req.body.id; + var password = req.body.password; + + sequelize.models.User.findById(userId, {}).then(function(user) { + user.password = sequelize.models.User.generateHash(password); + return user.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.get('/admin/venues/list', isLoggedIn, function(req, res) { + try { + var showDeleted = req.query.showDeleted == 'true'; + + sequelize.models.Venue.findAll({paranoid: !showDeleted}).then(function(values) { + res.json(values); + }); + } + catch(e) {console.log(e);} + }); + + app.post('/admin/venues/create', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var name = req.body.name; + + sequelize.models.Venue.create({ + name: name + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/venues/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + + sequelize.models.Venue.destroy({where: {id: id}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/venues/edit', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + var name = req.body.name; + + sequelize.models.Venue.findById(id, {}).then(function(venue) { + venue.name = name; + return venue.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.get('/admin/measures/list', isLoggedIn, function(req, res) { + try { + var showDeleted = req.query.showDeleted == 'true'; + + sequelize.models.Measure.findAll({paranoid: !showDeleted}).then(function(values) { + res.json(values); + }); + } + catch(e) {console.log(e);} + }); + + app.post('/admin/measures/create', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var name = req.body.name; + var postfix = req.body.postfix; + + sequelize.models.Measure.create({ + name: name, + postfix: postfix + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/measures/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + + sequelize.models.Measure.destroy({where: {id: id}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/measures/edit', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + var name = req.body.name; + var postfix = req.body.postfix; + + sequelize.models.Measure.findById(id, {}).then(function(measure) { + measure.name = name; + measure.postfix = postfix; + return measure.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.get('/admin/categories/list', isLoggedIn, function(req, res) { + try { + var showDeleted = req.query.showDeleted == 'true'; + + sequelize.models.Category.findAll({paranoid: !showDeleted}).then(function(values) { + res.json(values); + }); + } + catch(e) {console.log(e);} + }); + + app.post('/admin/categories/create', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var name = req.body.name; + + sequelize.models.Category.create({ + name: name + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/categories/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + + sequelize.models.Category.destroy({where: {id: id}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/categories/edit', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + var name = req.body.name; + + sequelize.models.Category.findById(id, {}).then(function(category) { + category.name = name; + return category.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.get('/admin/subcategories/list', isLoggedIn, function(req, res) { + try { + var showDeleted = req.query.showDeleted == 'true'; + + sequelize.models.Subcategory.findAll({paranoid: !showDeleted}).then(function(values) { + res.json(values); + }); + } + catch(e) {console.log(e);} + }); + + app.post('/admin/subcategories/create', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var name = req.body.name; + + sequelize.models.Subcategory.create({ + name: name + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/subcategories/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + + sequelize.models.Subcategory.destroy({where: {id: id}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/subcategories/edit', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + var name = req.body.name; + + sequelize.models.Subcategory.findById(id, {}).then(function(subcategory) { + subcategory.name = name; + return subcategory.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.get('/admin/items/list', isLoggedIn, function(req, res) { + try { + var showDeleted = req.query.showDeleted == 'true'; + + sequelize.models.Item.findAll({paranoid: !showDeleted}).then(function(values) { + res.json(values); + }); + } + catch(e) {console.log(e);} + }); + + app.post('/admin/items/create', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var name = req.body.name; + var defaultPrice = req.body.defaultPrice; + var measures = req.body.measures; + + sequelize.models.Item.create({ + name: name, + defaultPrice: defaultPrice, + measures: measures + }).then(function(user) { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'duplicate'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/items/delete', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + + sequelize.models.Item.destroy({where: {id: id}}).then(function(count) { + if(count == 1) { + res.json({result: 'success'}); + } + else { + res.json({result: 'failure'}); + } + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } + } catch(e) {console.log(e);} + }); + + app.post('/admin/items/edit', isLoggedIn, function(req, res) { + try { + if(req.user.admin) { + var id = req.body.id; + var name = req.body.name; + var defaultPrice = req.body.defaultPrice; + var measures = req.body.measures; + + sequelize.models.Item.findById(id, {}).then(function(item) { + item.name = name; + item.defaultPrice = defaultPrice; + item.measures = measures; + return item.save(); + }).then(function() { + res.json({result: 'success'}); + }).catch(function(err) { + console.log(err); + res.json({result: 'failure'}); + }); + } } catch(e) {console.log(e);} }); diff --git a/migrations/20160602030145-Measure.js b/migrations/20160602030145-Measure.js index 72cab5b..24bc0e6 100644 --- a/migrations/20160602030145-Measure.js +++ b/migrations/20160602030145-Measure.js @@ -23,11 +23,6 @@ module.exports = { type: DataTypes.STRING, allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true - }, createdAt: { type: DataTypes.DATE, allowNull: false @@ -35,9 +30,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/migrations/20160602030146-Venue.js b/migrations/20160602030146-Venue.js index b46d8da..efb0af2 100644 --- a/migrations/20160602030146-Venue.js +++ b/migrations/20160602030146-Venue.js @@ -15,11 +15,6 @@ module.exports = { type: DataTypes.STRING, allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true - }, createdAt: { type: DataTypes.DATE, allowNull: false @@ -27,9 +22,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/migrations/20160602030147-Category.js b/migrations/20160602030147-Category.js index e566464..f33b1e5 100644 --- a/migrations/20160602030147-Category.js +++ b/migrations/20160602030147-Category.js @@ -15,11 +15,6 @@ module.exports = { type: DataTypes.STRING, allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true - }, createdAt: { type: DataTypes.DATE, allowNull: false @@ -27,9 +22,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/migrations/20160602030148-Subcategory.js b/migrations/20160602030148-Subcategory.js index 0b6e551..65a9ff2 100644 --- a/migrations/20160602030148-Subcategory.js +++ b/migrations/20160602030148-Subcategory.js @@ -17,11 +17,6 @@ module.exports = { field: 'name', allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true - }, categoryId: { type: Sequelize.INTEGER, references: { @@ -38,9 +33,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/migrations/20160602030149-Item.js b/migrations/20160602030149-Item.js index 270a92f..d5fbd95 100644 --- a/migrations/20160602030149-Item.js +++ b/migrations/20160602030149-Item.js @@ -23,11 +23,6 @@ module.exports = { type: DataTypes.DECIMAL(9,2), allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true - }, subcategoryId: { type: Sequelize.INTEGER, references: { @@ -44,9 +39,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/migrations/20160602030150-Sale.js b/migrations/20160602030150-Sale.js index d7f459f..944b0c5 100644 --- a/migrations/20160602030150-Sale.js +++ b/migrations/20160602030150-Sale.js @@ -58,9 +58,15 @@ module.exports = { updatedAt: { type: DataTypes.DATE, allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - charset: 'utf8' + charset: 'utf8', + timestamps: true, + paranoid: true }); }, diff --git a/models/category.js b/models/category.js index e82fb85..765e0f7 100644 --- a/models/category.js +++ b/models/category.js @@ -13,13 +13,21 @@ module.exports = function(sequelize, DataTypes) { type: DataTypes.STRING, allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true + createdAt: { + type: DataTypes.DATE, + allowNull: false + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { freezeTableName: true, // Model tableName will be the same as the model name + paranoid: true, classMethods: { associate: function(models) { Category.hasMany(models.Subcategory, {as: 'subcategories', foreignKey: {name: 'categoryId', field: 'categoryId'}}); diff --git a/models/item.js b/models/item.js index e6847ba..81779d0 100644 --- a/models/item.js +++ b/models/item.js @@ -22,13 +22,21 @@ module.exports = function(sequelize, DataTypes) { type: DataTypes.DECIMAL(9,2), allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true + createdAt: { + type: DataTypes.DATE, + allowNull: false + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { freezeTableName: true, // Model tableName will be the same as the model name + paranoid: true, classMethods: { associate: function(models) { Item.belongsTo(models.Subcategory, {as: 'subcategory', foreignKey: {name: 'subcategoryId', field: 'subcategoryId'}}); diff --git a/models/measure.js b/models/measure.js index a3d2270..e4a5783 100644 --- a/models/measure.js +++ b/models/measure.js @@ -20,13 +20,9 @@ module.exports = function(sequelize, DataTypes) { postfix: { type: DataTypes.STRING, allowNull: false - }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true } }, { - freezeTableName: true // Model tableName will be the same as the model name + freezeTableName: true, // Model tableName will be the same as the model + paranoid: true }); }; diff --git a/models/sale.js b/models/sale.js index 1c7b5dd..cc67bd3 100644 --- a/models/sale.js +++ b/models/sale.js @@ -21,9 +21,22 @@ module.exports = function(sequelize, DataTypes) { //GAAP standard is to use DECIMAL(13,4) for precision when dealing with money. 13 digits before the decimal, and 4 after it. type: DataTypes.DECIMAL(13,4), allowNull: false + }, + createdAt: { + type: DataTypes.DATE, + allowNull: false + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { freezeTableName: true, // Model tableName will be the same as the model name + paranoid: true, classMethods: { associate: function(models) { Sale.belongsTo(models.Item, {as: 'item', foreignKey: {name: 'itemId', field: 'itemId'}}); diff --git a/models/subcategory.js b/models/subcategory.js index e2b4636..91d6024 100644 --- a/models/subcategory.js +++ b/models/subcategory.js @@ -15,13 +15,21 @@ module.exports = function(sequelize, DataTypes) { field: 'name', allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true + createdAt: { + type: DataTypes.DATE, + allowNull: false + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { freezeTableName: true, // Model tableName will be the same as the model name + paranoid: true, classMethods: { associate: function(models) { Subcategory.belongsTo(models.Category, {as: 'category', foreignKey: {name: 'categoryId', field: 'categoryId'}}); diff --git a/models/venue.js b/models/venue.js index c83e4fb..8e76fd9 100644 --- a/models/venue.js +++ b/models/venue.js @@ -13,12 +13,20 @@ module.exports = function(sequelize, DataTypes) { type: DataTypes.STRING, allowNull: false }, - visible: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: true + createdAt: { + type: DataTypes.DATE, + allowNull: false + }, + updatedAt: { + type: DataTypes.DATE, + allowNull: false + }, + deletedAt: { + type: DataTypes.DATE, + allowNull: true } }, { - freezeTableName: true // Model tableName will be the same as the model name + freezeTableName: true, // Model tableName will be the same as the model name, + paranoid: true }); }; diff --git a/public/admin/Venues.html b/public/admin/Venues.html new file mode 100644 index 0000000..20e90d4 --- /dev/null +++ b/public/admin/Venues.html @@ -0,0 +1,184 @@ +
+
+

Manage Venues

+ +
+
+ New + Edit + Delete +
+
+ +
+
+ + + + + + + +
Name
+ + + + + + + + +
+
\ No newline at end of file diff --git a/public/admin/categories.css b/public/admin/categories.css new file mode 100644 index 0000000..e69de29 diff --git a/public/admin/categories.html b/public/admin/categories.html new file mode 100644 index 0000000..c57b552 --- /dev/null +++ b/public/admin/categories.html @@ -0,0 +1,183 @@ +
+
+

Manage Categories

+ +
+
+ New + Edit + Delete +
+
+ +
+
+ + + + + + +
Name
+ + + + + + + + +
+
\ No newline at end of file diff --git a/public/admin/categories.styl b/public/admin/categories.styl new file mode 100644 index 0000000..984ea84 --- /dev/null +++ b/public/admin/categories.styl @@ -0,0 +1,2 @@ +#categories { +} \ No newline at end of file diff --git a/public/admin/css/bootstrap-switch.css b/public/admin/css/bootstrap-switch.css new file mode 100644 index 0000000..6c0cc1d --- /dev/null +++ b/public/admin/css/bootstrap-switch.css @@ -0,0 +1,195 @@ +/* ======================================================================== + * bootstrap-switch - v3.3.2 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * + * ======================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== + */ + +.bootstrap-switch { + display: inline-block; + direction: ltr; + cursor: pointer; + border-radius: 4px; + border: 1px solid; + border-color: #cccccc; + position: relative; + text-align: left; + overflow: hidden; + line-height: 8px; + z-index: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.bootstrap-switch .bootstrap-switch-container { + display: inline-block; + top: 0; + border-radius: 4px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + padding: 6px 12px; + font-size: 14px; + line-height: 20px; +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { + color: #fff; + background: #337ab7; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { + color: #fff; + background: #5bc0de; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { + color: #fff; + background: #5cb85c; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { + background: #f0ad4e; + color: #fff; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { + color: #fff; + background: #d9534f; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { + color: #000; + background: #eeeeee; +} +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + margin-top: -1px; + margin-bottom: -1px; + z-index: 100; + color: #333333; + background: #ffffff; +} +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.bootstrap-switch .bootstrap-switch-handle-off { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + margin: 0; + z-index: -1; + opacity: 0; + filter: alpha(opacity=0); +} +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { + padding: 6px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.bootstrap-switch.bootstrap-switch-disabled, +.bootstrap-switch.bootstrap-switch-readonly, +.bootstrap-switch.bootstrap-switch-indeterminate { + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + -webkit-transition: margin-left 0.5s; + -o-transition: margin-left 0.5s; + transition: margin-left 0.5s; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.bootstrap-switch.bootstrap-switch-focused { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} diff --git a/public/admin/css/bootstrap-switch.min.css b/public/admin/css/bootstrap-switch.min.css new file mode 100644 index 0000000..c63cfe2 --- /dev/null +++ b/public/admin/css/bootstrap-switch.min.css @@ -0,0 +1,22 @@ +/* ======================================================================== + * bootstrap-switch - v3.3.2 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * + * ======================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== + */ + +.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0;filter:alpha(opacity=0)}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px} \ No newline at end of file diff --git a/public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.eot b/public/admin/css/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.eot rename to public/admin/css/fonts/glyphicons-halflings-regular.eot diff --git a/public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.svg b/public/admin/css/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.svg rename to public/admin/css/fonts/glyphicons-halflings-regular.svg diff --git a/public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.ttf b/public/admin/css/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to public/admin/css/fonts/glyphicons-halflings-regular.ttf diff --git a/public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.woff b/public/admin/css/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.woff rename to public/admin/css/fonts/glyphicons-halflings-regular.woff diff --git a/public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/public/admin/css/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from public/admin/css/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to public/admin/css/fonts/glyphicons-halflings-regular.woff2 diff --git a/public/admin/css/titatoggle-dist-min.css b/public/admin/css/titatoggle-dist-min.css new file mode 100644 index 0000000..b0acce6 --- /dev/null +++ b/public/admin/css/titatoggle-dist-min.css @@ -0,0 +1 @@ +@keyframes popIn{0%{transform:scale(1,1)}25%{transform:scale(1.2,1)}50%{transform:scale(1.4,1)}100%{transform:scale(1,1)}}@keyframes popOut{0%{transform:scale(1,1)}25%{transform:scale(1.2,1)}50%{transform:scale(1.4,1)}100%{transform:scale(1,1)}}@keyframes splashIn{0%{transform:scale(1);opacity:1}25%{transform:scale(1.1);opacity:.8}50%{transform:scale(1.1);opacity:.9}100%{transform:scale(1);opacity:1}}@keyframes splashOut{0%{transform:scale(1);opacity:1}25%{transform:scale(1);opacity:.8}50%{transform:scale(1);opacity:.9}100%{transform:scale(0.5);opacity:1}}.checkbox-toggle{position:relative}.checkbox-toggle input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-toggle input+span{cursor:pointer;user-select:none}.checkbox-toggle input+span:before{position:absolute;left:0;display:inline-block}.checkbox-toggle input+span>h4{display:inline}.checkbox-slider{position:relative}.checkbox-slider input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider input+span{cursor:pointer;user-select:none}.checkbox-slider input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider input+span>h4{display:inline}.checkbox-slider input+span{padding-left:40px}.checkbox-slider input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider input:checked+span:after{margin-left:20px;content:""}.checkbox-slider input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--default{position:relative}.checkbox-slider--default input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--default input+span{cursor:pointer;user-select:none}.checkbox-slider--default input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--default input+span>h4{display:inline}.checkbox-slider--default input+span{padding-left:40px}.checkbox-slider--default input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--default input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--default input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--default input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--default input+span:after{background:#fff;border:solid transparent 1px;background-clip:content-box}.checkbox-slider--default input:checked+span:after{background:#5cb85c;border:solid transparent 1px;background-clip:content-box}.checkbox-slider--a-rounded{position:relative}.checkbox-slider--a-rounded input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--a-rounded input+span{cursor:pointer;user-select:none}.checkbox-slider--a-rounded input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--a-rounded input+span>h4{display:inline}.checkbox-slider--a-rounded input+span{padding-left:40px}.checkbox-slider--a-rounded input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--a-rounded input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--a-rounded input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--a-rounded input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--a-rounded input+span:after{background:#fff;border:solid transparent 1px;background-clip:content-box}.checkbox-slider--a-rounded input:checked+span:after{background:#5cb85c;border:solid transparent 1px;background-clip:content-box}.checkbox-slider--a-rounded input+span:after,.checkbox-slider--a-rounded input+span:before{border-radius:4px}.checkbox-slider--a-rounded input+span:after,.checkbox-slider--a-rounded input:checked+span:after{border:solid transparent 2px;background-clip:content-box}.checkbox-slider--a-rounded.checkbox-slider-sm input+span:before,.checkbox-slider--a-rounded.checkbox-slider-sm input+span:after{border-radius:3px}.checkbox-slider--a-rounded.checkbox-slider-md input+span:before,.checkbox-slider--a-rounded.checkbox-slider-md input+span:after{border-radius:4px}.checkbox-slider--a-rounded.checkbox-slider-lg input+span:before,.checkbox-slider--a-rounded.checkbox-slider-lg input+span:after{border-radius:6px}.checkbox-slider--a{position:relative}.checkbox-slider--a input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--a input+span{cursor:pointer;user-select:none}.checkbox-slider--a input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--a input+span>h4{display:inline}.checkbox-slider--a input+span{padding-left:40px}.checkbox-slider--a input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--a input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--a input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--a input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--a input+span{padding-left:60px}.checkbox-slider--a input+span:before{content:"";width:60px}.checkbox-slider--a input+span:after{width:40px;font-size:10px;color:#000;content:"Off";border:solid transparent 1px;background-clip:content-box}.checkbox-slider--a input:checked+span:after{content:"On";color:#fff;background:#5cb85c;border:solid transparent 1px;background-clip:content-box}.checkbox-slider--a.checkbox-slider-sm input+span{padding-left:30px}.checkbox-slider--a.checkbox-slider-sm input+span:before{width:30px}.checkbox-slider--a.checkbox-slider-sm input+span:after{width:20px;font-size:5px}.checkbox-slider--a.checkbox-slider-sm input:checked+span:after{margin-left:10px}.checkbox-slider--a.checkbox-slider-md input+span{padding-left:90px}.checkbox-slider--a.checkbox-slider-md input+span:before{width:90px}.checkbox-slider--a.checkbox-slider-md input+span:after{width:60px;font-size:15px}.checkbox-slider--a.checkbox-slider-md input:checked+span:after{margin-left:30px}.checkbox-slider--a.checkbox-slider-lg input+span{padding-left:120px}.checkbox-slider--a.checkbox-slider-lg input+span:before{width:120px}.checkbox-slider--a.checkbox-slider-lg input+span:after{width:80px;font-size:20px}.checkbox-slider--a.checkbox-slider-lg input:checked+span:after{margin-left:40px}.checkbox-slider--b{position:relative}.checkbox-slider--b input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--b input+span{cursor:pointer;user-select:none}.checkbox-slider--b input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--b input+span>h4{display:inline}.checkbox-slider--b input+span{padding-left:40px}.checkbox-slider--b input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--b input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--b input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--b input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--b input+span{padding-left:40px}.checkbox-slider--b input+span:before{border-radius:20px;width:40px}.checkbox-slider--b input+span:after{background:#fff;content:"";width:20px;border:solid transparent 2px;background-clip:padding-box;border-radius:20px}.checkbox-slider--b input:not(:checked)+span:after{animation:popOut ease-in .3s normal}.checkbox-slider--b input:checked+span:after{content:"";margin-left:20px;border:solid transparent 2px;background-clip:padding-box;animation:popIn ease-in .3s normal}.checkbox-slider--b input:checked+span:before{background:#5cb85c}.checkbox-slider--b.checkbox-slider-md input+span:before{border-radius:30px}.checkbox-slider--b.checkbox-slider-md input+span:after{border-radius:30px}.checkbox-slider--b.checkbox-slider-lg input+span:before{border-radius:40px}.checkbox-slider--b.checkbox-slider-lg input+span:after{border-radius:40px}.checkbox-slider--b-flat{position:relative}.checkbox-slider--b-flat input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--b-flat input+span{cursor:pointer;user-select:none}.checkbox-slider--b-flat input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--b-flat input+span>h4{display:inline}.checkbox-slider--b-flat input+span{padding-left:40px}.checkbox-slider--b-flat input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--b-flat input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--b-flat input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--b-flat input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--b-flat input+span{padding-left:40px}.checkbox-slider--b-flat input+span:before{border-radius:20px;width:40px}.checkbox-slider--b-flat input+span:after{background:#fff;content:"";width:20px;border:solid transparent 2px;background-clip:padding-box;border-radius:20px}.checkbox-slider--b-flat input:not(:checked)+span:after{animation:popOut ease-in .3s normal}.checkbox-slider--b-flat input:checked+span:after{content:"";margin-left:20px;border:solid transparent 2px;background-clip:padding-box;animation:popIn ease-in .3s normal}.checkbox-slider--b-flat input:checked+span:before{background:#5cb85c}.checkbox-slider--b-flat.checkbox-slider-md input+span:before{border-radius:30px}.checkbox-slider--b-flat.checkbox-slider-md input+span:after{border-radius:30px}.checkbox-slider--b-flat.checkbox-slider-lg input+span:before{border-radius:40px}.checkbox-slider--b-flat.checkbox-slider-lg input+span:after{border-radius:40px}.checkbox-slider--b-flat input+span:before{box-shadow:none}.checkbox-slider--c{position:relative}.checkbox-slider--c input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--c input+span{cursor:pointer;user-select:none}.checkbox-slider--c input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--c input+span>h4{display:inline}.checkbox-slider--c input+span{padding-left:40px}.checkbox-slider--c input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--c input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--c input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--c input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--c input+span{padding-left:40px}.checkbox-slider--c input+span:before{height:2px!important;top:10px;box-shadow:none;width:40px;background:#555}.checkbox-slider--c input+span:after{box-shadow:none;width:20px;border:solid #555 2px;border-radius:20px}.checkbox-slider--c input:checked+span:after{background:#5cb85c;margin-left:20px;border:solid #5cb85c 2px;animation:splashIn ease-in .3s normal}.checkbox-slider--c input:checked+span:before{background:#5cb85c}.checkbox-slider--c.checkbox-slider-sm input+span:before{top:4px}.checkbox-slider--c.checkbox-slider-md input+span:before{top:14px}.checkbox-slider--c.checkbox-slider-md input+span:after{width:30px;border-radius:30px}.checkbox-slider--c.checkbox-slider-lg input+span:before{top:19px}.checkbox-slider--c.checkbox-slider-lg input+span:after{width:40px;border-radius:40px}.checkbox-slider--c-weight{position:relative}.checkbox-slider--c-weight input{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;margin:0 0;cursor:pointer;zoom:1;-webkit-opacity:0;-moz-opacity:0;opacity:0;filter:alpha(opacity=0)}.checkbox-slider--c-weight input+span{cursor:pointer;user-select:none}.checkbox-slider--c-weight input+span:before{position:absolute;left:0;display:inline-block}.checkbox-slider--c-weight input+span>h4{display:inline}.checkbox-slider--c-weight input+span{padding-left:40px}.checkbox-slider--c-weight input+span:before{content:"";height:20px;width:40px;background:rgba(100,100,100,.2);box-shadow:inset 0 0 5px rgba(0,0,0,.8);transition:background .2s ease-out}.checkbox-slider--c-weight input+span:after{width:20px;height:20px;position:absolute;left:0;top:0;display:block;background:#fff;transition:margin-left .1s ease-in-out;text-align:center;font-weight:700;content:""}.checkbox-slider--c-weight input:checked+span:after{margin-left:20px;content:""}.checkbox-slider--c-weight input:checked+span:before{transition:background .2s ease-in}.checkbox-slider--c-weight input+span{padding-left:40px}.checkbox-slider--c-weight input+span:before{height:2px!important;top:10px;box-shadow:none;width:40px;background:#555}.checkbox-slider--c-weight input+span:after{box-shadow:none;width:20px;border:solid #555 2px;border-radius:20px}.checkbox-slider--c-weight input:checked+span:after{background:#5cb85c;margin-left:20px;border:solid #5cb85c 2px;animation:splashIn ease-in .3s normal}.checkbox-slider--c-weight input:checked+span:before{background:#5cb85c}.checkbox-slider--c-weight.checkbox-slider-sm input+span:before{top:4px}.checkbox-slider--c-weight.checkbox-slider-md input+span:before{top:14px}.checkbox-slider--c-weight.checkbox-slider-md input+span:after{width:30px;border-radius:30px}.checkbox-slider--c-weight.checkbox-slider-lg input+span:before{top:19px}.checkbox-slider--c-weight.checkbox-slider-lg input+span:after{width:40px;border-radius:40px}.checkbox-slider--c-weight input+span:before{height:1px!important}.checkbox-slider--c-weight input:checked+span:before{height:2px!important}.checkbox-slider--c-weight input:not(:checked)+span:after{transform:scale(0.7);left:-6px}.checkbox-slider--default input:disabled+span:after{background:#777}.checkbox-slider--default input:disabled+span:before{box-shadow:0 0 0 #000}.checkbox-slider--default input:disabled+span{color:#777}.checkbox-slider--a input:disabled+span:after{background:#777;color:#fff}.checkbox-slider--a input:disabled+span:before{box-shadow:0 0 0 #000}.checkbox-slider--a input:disabled+span{color:#777}.checkbox-slider--b input:disabled+span:after{border:solid transparent 2px;border-radius:40px}.checkbox-slider--b input:disabled+span:before{box-shadow:0 0 0 #000}.checkbox-slider--b input:disabled+span{color:#777}.checkbox-slider--c input:disabled:checked+span:after{background:#777}.checkbox-slider--c input:disabled+span:after{border-color:#777}.checkbox-slider--c input:disabled+span:before{background:#777}.checkbox-slider--c input:disabled+span{color:#777}input:checked+.indicator-success{color:#5cb85c}input:checked+.indicator-info{color:#5bc0de}input:checked+.indicator-warning{color:#f0ad4e}input:checked+.indicator-danger{color:#d9534f}.checkbox-slider-sm{line-height:10px}.checkbox-slider-sm input+span{padding-left:20px}.checkbox-slider-sm input+span:before{width:20px}.checkbox-slider-sm input+span:after,.checkbox-slider-sm input+span:before{height:10px;line-height:10px}.checkbox-slider-sm input+span:after{width:10px;vertical-align:middle}.checkbox-slider-sm input:checked+span:after{margin-left:10px}.checkbox-slider-md{line-height:30px}.checkbox-slider-md input+span{padding-left:60px}.checkbox-slider-md input+span:before{width:60px}.checkbox-slider-md input+span:after,.checkbox-slider-md input+span:before{height:30px;line-height:30px}.checkbox-slider-md input+span:after{width:30px;vertical-align:middle}.checkbox-slider-md input:checked+span:after{margin-left:30px}.checkbox-slider-lg{line-height:40px}.checkbox-slider-lg input+span{padding-left:80px}.checkbox-slider-lg input+span:before{width:80px}.checkbox-slider-lg input+span:after,.checkbox-slider-lg input+span:before{height:40px;line-height:40px}.checkbox-slider-lg input+span:after{width:40px;vertical-align:middle}.checkbox-slider-lg input:checked+span:after{margin-left:40px}.checkbox-slider-info.checkbox-slider--default input:checked+span:after,.checkbox-slider-info.checkbox-slider--a input:checked+span:after,.checkbox-slider-info.checkbox-slider--c input:checked+span:after,.checkbox-slider-info.checkbox-slider--c-weight input:checked+span:after{background:#5bc0de;background-clip:content-box}.checkbox-slider-info.checkbox-slider--c input:checked+span:after,.checkbox-slider-info.checkbox-slider--c-weight input:checked+span:after{border-color:#5bc0de}.checkbox-slider-info.checkbox-slider--b input:checked+span:before,.checkbox-slider-info.checkbox-slider--b-flat input:checked+span:before,.checkbox-slider-info.checkbox-slider--c input:checked+span:before,.checkbox-slider-info.checkbox-slider--c-weight input:checked+span:before{background:#5bc0de}.checkbox-slider-warning.checkbox-slider--default input:checked+span:after,.checkbox-slider-warning.checkbox-slider--a input:checked+span:after,.checkbox-slider-warning.checkbox-slider--c input:checked+span:after,.checkbox-slider-warning.checkbox-slider--c-weight input:checked+span:after{background:#f0ad4e;background-clip:content-box}.checkbox-slider-warning.checkbox-slider--c input:checked+span:after,.checkbox-slider-warning.checkbox-slider--c-weight input:checked+span:after{border-color:#f0ad4e}.checkbox-slider-warning.checkbox-slider--b input:checked+span:before,.checkbox-slider-warning.checkbox-slider--b-flat input:checked+span:before,.checkbox-slider-warning.checkbox-slider--c input:checked+span:before,.checkbox-slider-warning.checkbox-slider--c-weight input:checked+span:before{background:#f0ad4e}.checkbox-slider-danger.checkbox-slider--default input:checked+span:after,.checkbox-slider-danger.checkbox-slider--a input:checked+span:after,.checkbox-slider-danger.checkbox-slider--c input:checked+span:after,.checkbox-slider-danger.checkbox-slider--c-weight input:checked+span:after{background:#d9534f;background-clip:content-box}.checkbox-slider-danger.checkbox-slider--c input:checked+span:after,.checkbox-slider-danger.checkbox-slider--c-weight input:checked+span:after{border-color:#d9534f}.checkbox-slider-danger.checkbox-slider--b input:checked+span:before,.checkbox-slider-danger.checkbox-slider--b-flat input:checked+span:before,.checkbox-slider-danger.checkbox-slider--c input:checked+span:before,.checkbox-slider-danger.checkbox-slider--c-weight input:checked+span:before{background:#d9534f} \ No newline at end of file diff --git a/public/admin/css/titatoggle-dist.css b/public/admin/css/titatoggle-dist.css new file mode 100644 index 0000000..800944c --- /dev/null +++ b/public/admin/css/titatoggle-dist.css @@ -0,0 +1,1233 @@ +/******************************************************* +Variables +*******************************************************/ +/******************************************************* +Animation +*******************************************************/ +@-webkit-keyframes popIn { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 25% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 50% { + -webkit-transform: scale(1.4, 1); + transform: scale(1.4, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@keyframes popIn { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 25% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 50% { + -webkit-transform: scale(1.4, 1); + transform: scale(1.4, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@-webkit-keyframes popOut { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 25% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 50% { + -webkit-transform: scale(1.4, 1); + transform: scale(1.4, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@keyframes popOut { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 25% { + -webkit-transform: scale(1.2, 1); + transform: scale(1.2, 1); + } + 50% { + -webkit-transform: scale(1.4, 1); + transform: scale(1.4, 1); + } + 100% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@-webkit-keyframes splashIn { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 25% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + opacity: 0.8; + } + 50% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + opacity: .9; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@keyframes splashIn { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 25% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + opacity: 0.8; + } + 50% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + opacity: .9; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes splashOut { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 25% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0.8; + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: .9; + } + 100% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 1; + } +} +@keyframes splashOut { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 25% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0.8; + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: .9; + } + 100% { + -webkit-transform: scale(0.5); + transform: scale(0.5); + opacity: 1; + } +} +/******************************************************* +Main Slider basics +*******************************************************/ +.checkbox-toggle { + position: relative; +} +.checkbox-toggle input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-toggle input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-toggle input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-toggle input + span > h4 { + display: inline; +} +/******************************************************* +Main Slider +*******************************************************/ +.checkbox-slider { + position: relative; +} +.checkbox-slider input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider input + span > h4 { + display: inline; +} +.checkbox-slider input + span { + padding-left: 40px; +} +.checkbox-slider input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider input:checked + span:before { + transition: background 0.2s ease-in; +} +/******************************************************* +Slider default +*******************************************************/ +.checkbox-slider--default { + position: relative; +} +.checkbox-slider--default input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--default input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--default input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--default input + span > h4 { + display: inline; +} +.checkbox-slider--default input + span { + padding-left: 40px; +} +.checkbox-slider--default input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--default input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--default input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--default input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--default input + span:after { + background: #ffffff; + border: solid transparent 1px; + background-clip: content-box; +} +.checkbox-slider--default input:checked + span:after { + background: #5cb85c; + border: solid transparent 1px; + background-clip: content-box; +} +/******************************************************* +Slider default rounded +*******************************************************/ +.checkbox-slider--a-rounded { + position: relative; +} +.checkbox-slider--a-rounded input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--a-rounded input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--a-rounded input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--a-rounded input + span > h4 { + display: inline; +} +.checkbox-slider--a-rounded input + span { + padding-left: 40px; +} +.checkbox-slider--a-rounded input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--a-rounded input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--a-rounded input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--a-rounded input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--a-rounded input + span:after { + background: #ffffff; + border: solid transparent 1px; + background-clip: content-box; +} +.checkbox-slider--a-rounded input:checked + span:after { + background: #5cb85c; + border: solid transparent 1px; + background-clip: content-box; +} +.checkbox-slider--a-rounded input + span:after, +.checkbox-slider--a-rounded input + span:before { + border-radius: 4px; +} +.checkbox-slider--a-rounded input + span:after, +.checkbox-slider--a-rounded input:checked + span:after { + border: solid transparent 2px; + background-clip: content-box; +} +/******************************************************* +Slider default rounded Sizes +*******************************************************/ +.checkbox-slider--a-rounded.checkbox-slider-sm input + span:before, +.checkbox-slider--a-rounded.checkbox-slider-sm input + span:after { + border-radius: 3px; +} +.checkbox-slider--a-rounded.checkbox-slider-md input + span:before, +.checkbox-slider--a-rounded.checkbox-slider-md input + span:after { + border-radius: 4px; +} +.checkbox-slider--a-rounded.checkbox-slider-lg input + span:before, +.checkbox-slider--a-rounded.checkbox-slider-lg input + span:after { + border-radius: 6px; +} +/******************************************************* +Slider A +*******************************************************/ +.checkbox-slider--a { + position: relative; +} +.checkbox-slider--a input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--a input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--a input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--a input + span > h4 { + display: inline; +} +.checkbox-slider--a input + span { + padding-left: 40px; +} +.checkbox-slider--a input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--a input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--a input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--a input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--a input + span { + padding-left: 60px; +} +.checkbox-slider--a input + span:before { + content: ""; + width: 60px; +} +.checkbox-slider--a input + span:after { + width: 40px; + font-size: 10px; + color: #000000; + content: "Off"; + border: solid transparent 1px; + background-clip: content-box; +} +.checkbox-slider--a input:checked + span:after { + content: "On"; + color: #ffffff; + background: #5cb85c; + border: solid transparent 1px; + background-clip: content-box; +} +/******************************************************* +Slider A SIZES +*******************************************************/ +.checkbox-slider--a.checkbox-slider-sm input + span { + padding-left: 30px; +} +.checkbox-slider--a.checkbox-slider-sm input + span:before { + width: 30px; +} +.checkbox-slider--a.checkbox-slider-sm input + span:after { + width: 20px; + font-size: 5px; +} +.checkbox-slider--a.checkbox-slider-sm input:checked + span:after { + margin-left: 10px; +} +.checkbox-slider--a.checkbox-slider-md input + span { + padding-left: 90px; +} +.checkbox-slider--a.checkbox-slider-md input + span:before { + width: 90px; +} +.checkbox-slider--a.checkbox-slider-md input + span:after { + width: 60px; + font-size: 15px; +} +.checkbox-slider--a.checkbox-slider-md input:checked + span:after { + margin-left: 30px; +} +.checkbox-slider--a.checkbox-slider-lg input + span { + padding-left: 120px; +} +.checkbox-slider--a.checkbox-slider-lg input + span:before { + width: 120px; +} +.checkbox-slider--a.checkbox-slider-lg input + span:after { + width: 80px; + font-size: 20px; +} +.checkbox-slider--a.checkbox-slider-lg input:checked + span:after { + margin-left: 40px; +} +/******************************************************* +Slider B +*******************************************************/ +.checkbox-slider--b { + position: relative; +} +.checkbox-slider--b input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--b input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--b input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--b input + span > h4 { + display: inline; +} +.checkbox-slider--b input + span { + padding-left: 40px; +} +.checkbox-slider--b input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--b input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--b input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--b input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--b input + span { + padding-left: 40px; +} +.checkbox-slider--b input + span:before { + border-radius: 20px; + width: 40px; +} +.checkbox-slider--b input + span:after { + background: #ffffff; + content: ""; + width: 20px; + border: solid transparent 2px; + background-clip: padding-box; + border-radius: 20px; +} +.checkbox-slider--b input:not(:checked) + span:after { + -webkit-animation: popOut ease-in 0.3s normal; + animation: popOut ease-in 0.3s normal; +} +.checkbox-slider--b input:checked + span:after { + content: ""; + margin-left: 20px; + border: solid transparent 2px; + background-clip: padding-box; + -webkit-animation: popIn ease-in 0.3s normal; + animation: popIn ease-in 0.3s normal; +} +.checkbox-slider--b input:checked + span:before { + background: #5cb85c; +} +/******************************************************* +Slider B Sizes +*******************************************************/ +.checkbox-slider--b.checkbox-slider-md input + span:before { + border-radius: 30px; +} +.checkbox-slider--b.checkbox-slider-md input + span:after { + border-radius: 30px; +} +.checkbox-slider--b.checkbox-slider-lg input + span:before { + border-radius: 40px; +} +.checkbox-slider--b.checkbox-slider-lg input + span:after { + border-radius: 40px; +} +/******************************************************* +Slider B-flat +*******************************************************/ +.checkbox-slider--b-flat { + position: relative; +} +.checkbox-slider--b-flat input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--b-flat input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--b-flat input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--b-flat input + span > h4 { + display: inline; +} +.checkbox-slider--b-flat input + span { + padding-left: 40px; +} +.checkbox-slider--b-flat input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--b-flat input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--b-flat input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--b-flat input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--b-flat input + span { + padding-left: 40px; +} +.checkbox-slider--b-flat input + span:before { + border-radius: 20px; + width: 40px; +} +.checkbox-slider--b-flat input + span:after { + background: #ffffff; + content: ""; + width: 20px; + border: solid transparent 2px; + background-clip: padding-box; + border-radius: 20px; +} +.checkbox-slider--b-flat input:not(:checked) + span:after { + -webkit-animation: popOut ease-in 0.3s normal; + animation: popOut ease-in 0.3s normal; +} +.checkbox-slider--b-flat input:checked + span:after { + content: ""; + margin-left: 20px; + border: solid transparent 2px; + background-clip: padding-box; + -webkit-animation: popIn ease-in 0.3s normal; + animation: popIn ease-in 0.3s normal; +} +.checkbox-slider--b-flat input:checked + span:before { + background: #5cb85c; +} +.checkbox-slider--b-flat.checkbox-slider-md input + span:before { + border-radius: 30px; +} +.checkbox-slider--b-flat.checkbox-slider-md input + span:after { + border-radius: 30px; +} +.checkbox-slider--b-flat.checkbox-slider-lg input + span:before { + border-radius: 40px; +} +.checkbox-slider--b-flat.checkbox-slider-lg input + span:after { + border-radius: 40px; +} +.checkbox-slider--b-flat input + span:before { + box-shadow: none; +} +/******************************************************* +Slider C +*******************************************************/ +.checkbox-slider--c { + position: relative; +} +.checkbox-slider--c input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--c input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--c input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--c input + span > h4 { + display: inline; +} +.checkbox-slider--c input + span { + padding-left: 40px; +} +.checkbox-slider--c input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--c input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--c input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--c input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--c input + span { + padding-left: 40px; +} +.checkbox-slider--c input + span:before { + height: 2px !important; + top: 10px; + box-shadow: none; + width: 40px; + background: #555555; +} +.checkbox-slider--c input + span:after { + box-shadow: none; + width: 20px; + border: solid #555555 2px; + border-radius: 20px; +} +.checkbox-slider--c input:checked + span:after { + background: #5cb85c; + margin-left: 20px; + border: solid #5cb85c 2px; + -webkit-animation: splashIn ease-in 0.3s normal; + animation: splashIn ease-in 0.3s normal; +} +.checkbox-slider--c input:checked + span:before { + background: #5cb85c; +} +/******************************************************* +Slider C Sizes +*******************************************************/ +.checkbox-slider--c.checkbox-slider-sm input + span:before { + top: 4px; +} +.checkbox-slider--c.checkbox-slider-md input + span:before { + top: 14px; +} +.checkbox-slider--c.checkbox-slider-md input + span:after { + width: 30px; + border-radius: 30px; +} +.checkbox-slider--c.checkbox-slider-lg input + span:before { + top: 19px; +} +.checkbox-slider--c.checkbox-slider-lg input + span:after { + width: 40px; + border-radius: 40px; +} +/******************************************************* +Slider C-weight +*******************************************************/ +.checkbox-slider--c-weight { + position: relative; +} +.checkbox-slider--c-weight input { + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 0%; + height: 0%; + margin: 0 0; + cursor: pointer; + zoom: 1; + -webkit-opacity: 0; + -moz-opacity: 0; + opacity: 0; + filter: alpha(opacity=0); +} +.checkbox-slider--c-weight input + span { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.checkbox-slider--c-weight input + span:before { + position: absolute; + left: 0px; + display: inline-block; +} +.checkbox-slider--c-weight input + span > h4 { + display: inline; +} +.checkbox-slider--c-weight input + span { + padding-left: 40px; +} +.checkbox-slider--c-weight input + span:before { + content: ""; + height: 20px; + width: 40px; + background: rgba(100, 100, 100, 0.2); + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.8); + transition: background 0.2s ease-out; +} +.checkbox-slider--c-weight input + span:after { + width: 20px; + height: 20px; + position: absolute; + left: 0px; + top: 0; + display: block; + background: #ffffff; + transition: margin-left 0.1s ease-in-out; + text-align: center; + font-weight: bold; + content: ""; +} +.checkbox-slider--c-weight input:checked + span:after { + margin-left: 20px; + content: ""; +} +.checkbox-slider--c-weight input:checked + span:before { + transition: background 0.2s ease-in; +} +.checkbox-slider--c-weight input + span { + padding-left: 40px; +} +.checkbox-slider--c-weight input + span:before { + height: 2px !important; + top: 10px; + box-shadow: none; + width: 40px; + background: #555555; +} +.checkbox-slider--c-weight input + span:after { + box-shadow: none; + width: 20px; + border: solid #555555 2px; + border-radius: 20px; +} +.checkbox-slider--c-weight input:checked + span:after { + background: #5cb85c; + margin-left: 20px; + border: solid #5cb85c 2px; + -webkit-animation: splashIn ease-in 0.3s normal; + animation: splashIn ease-in 0.3s normal; +} +.checkbox-slider--c-weight input:checked + span:before { + background: #5cb85c; +} +.checkbox-slider--c-weight.checkbox-slider-sm input + span:before { + top: 4px; +} +.checkbox-slider--c-weight.checkbox-slider-md input + span:before { + top: 14px; +} +.checkbox-slider--c-weight.checkbox-slider-md input + span:after { + width: 30px; + border-radius: 30px; +} +.checkbox-slider--c-weight.checkbox-slider-lg input + span:before { + top: 19px; +} +.checkbox-slider--c-weight.checkbox-slider-lg input + span:after { + width: 40px; + border-radius: 40px; +} +.checkbox-slider--c-weight input + span:before { + height: 1px !important; +} +.checkbox-slider--c-weight input:checked + span:before { + height: 2px !important; +} +.checkbox-slider--c-weight input:not(:checked) + span:after { + -webkit-transform: scale(0.7); + transform: scale(0.7); + left: -6px; +} +/****************************************************** +State Disabled +*******************************************************/ +.checkbox-slider--default input:disabled + span:after { + background: #777777; +} +.checkbox-slider--default input:disabled + span:before { + box-shadow: 0 0 0 black; +} +.checkbox-slider--default input:disabled + span { + color: #777777; +} +.checkbox-slider--a input:disabled + span:after { + background: #777777; + color: #ffffff; +} +.checkbox-slider--a input:disabled + span:before { + box-shadow: 0 0 0 black; +} +.checkbox-slider--a input:disabled + span { + color: #777777; +} +.checkbox-slider--b input:disabled + span:after { + border: solid transparent 2px; + border-radius: 40px; +} +.checkbox-slider--b input:disabled + span:before { + box-shadow: 0 0 0 black; +} +.checkbox-slider--b input:disabled + span { + color: #777777; +} +.checkbox-slider--c input:disabled:checked + span:after { + background: #777777; +} +.checkbox-slider--c input:disabled + span:after { + border-color: #777777; +} +.checkbox-slider--c input:disabled + span:before { + background: #777777; +} +.checkbox-slider--c input:disabled + span { + color: #777777; +} +/******************************************************* +Indicators +*******************************************************/ +input:checked + .indicator-success { + color: #5cb85c; +} +input:checked + .indicator-info { + color: #5bc0de; +} +input:checked + .indicator-warning { + color: #f0ad4e; +} +input:checked + .indicator-danger { + color: #d9534f; +} +/******************************************************* +Sizes +*******************************************************/ +.checkbox-slider-sm { + line-height: 10px; +} +.checkbox-slider-sm input + span { + padding-left: 20px; +} +.checkbox-slider-sm input + span:before { + width: 20px; +} +.checkbox-slider-sm input + span:after, +.checkbox-slider-sm input + span:before { + height: 10px; + line-height: 10px; +} +.checkbox-slider-sm input + span:after { + width: 10px; + vertical-align: middle; +} +.checkbox-slider-sm input:checked + span:after { + margin-left: 10px; +} +.checkbox-slider-md { + line-height: 30px; +} +.checkbox-slider-md input + span { + padding-left: 60px; +} +.checkbox-slider-md input + span:before { + width: 60px; +} +.checkbox-slider-md input + span:after, +.checkbox-slider-md input + span:before { + height: 30px; + line-height: 30px; +} +.checkbox-slider-md input + span:after { + width: 30px; + vertical-align: middle; +} +.checkbox-slider-md input:checked + span:after { + margin-left: 30px; +} +.checkbox-slider-lg { + line-height: 40px; +} +.checkbox-slider-lg input + span { + padding-left: 80px; +} +.checkbox-slider-lg input + span:before { + width: 80px; +} +.checkbox-slider-lg input + span:after, +.checkbox-slider-lg input + span:before { + height: 40px; + line-height: 40px; +} +.checkbox-slider-lg input + span:after { + width: 40px; + vertical-align: middle; +} +.checkbox-slider-lg input:checked + span:after { + margin-left: 40px; +} +/******************************************************* +Variations +*******************************************************/ +.checkbox-slider-info.checkbox-slider--default input:checked + span:after, +.checkbox-slider-info.checkbox-slider--a input:checked + span:after, +.checkbox-slider-info.checkbox-slider--c input:checked + span:after, +.checkbox-slider-info.checkbox-slider--c-weight input:checked + span:after { + background: #5bc0de; + background-clip: content-box; +} +.checkbox-slider-info.checkbox-slider--c input:checked + span:after, +.checkbox-slider-info.checkbox-slider--c-weight input:checked + span:after { + border-color: #5bc0de; +} +.checkbox-slider-info.checkbox-slider--b input:checked + span:before, +.checkbox-slider-info.checkbox-slider--b-flat input:checked + span:before, +.checkbox-slider-info.checkbox-slider--c input:checked + span:before, +.checkbox-slider-info.checkbox-slider--c-weight input:checked + span:before { + background: #5bc0de; +} +.checkbox-slider-warning.checkbox-slider--default input:checked + span:after, +.checkbox-slider-warning.checkbox-slider--a input:checked + span:after, +.checkbox-slider-warning.checkbox-slider--c input:checked + span:after, +.checkbox-slider-warning.checkbox-slider--c-weight input:checked + span:after { + background: #f0ad4e; + background-clip: content-box; +} +.checkbox-slider-warning.checkbox-slider--c input:checked + span:after, +.checkbox-slider-warning.checkbox-slider--c-weight input:checked + span:after { + border-color: #f0ad4e; +} +.checkbox-slider-warning.checkbox-slider--b input:checked + span:before, +.checkbox-slider-warning.checkbox-slider--b-flat input:checked + span:before, +.checkbox-slider-warning.checkbox-slider--c input:checked + span:before, +.checkbox-slider-warning.checkbox-slider--c-weight input:checked + span:before { + background: #f0ad4e; +} +.checkbox-slider-danger.checkbox-slider--default input:checked + span:after, +.checkbox-slider-danger.checkbox-slider--a input:checked + span:after, +.checkbox-slider-danger.checkbox-slider--c input:checked + span:after, +.checkbox-slider-danger.checkbox-slider--c-weight input:checked + span:after { + background: #d9534f; + background-clip: content-box; +} +.checkbox-slider-danger.checkbox-slider--c input:checked + span:after, +.checkbox-slider-danger.checkbox-slider--c-weight input:checked + span:after { + border-color: #d9534f; +} +.checkbox-slider-danger.checkbox-slider--b input:checked + span:before, +.checkbox-slider-danger.checkbox-slider--b-flat input:checked + span:before, +.checkbox-slider-danger.checkbox-slider--c input:checked + span:before, +.checkbox-slider-danger.checkbox-slider--c-weight input:checked + span:before { + background: #d9534f; +} diff --git a/public/admin/index.ejs b/public/admin/index.ejs index 3347d3a..642a3d1 100644 --- a/public/admin/index.ejs +++ b/public/admin/index.ejs @@ -21,10 +21,12 @@ + + @@ -32,27 +34,28 @@ - - - - - +