Skip to content

Commit 2f608ea

Browse files
committed
Merge pull request totaljs#1 from totaljs/v1.1.0
v2.0.0
2 parents 6b0f006 + d1e6b34 commit 2f608ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+4525
-591
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ cms/databases/
22
cms/tmp/
33
eshop/databases/
44
eshop/tmp/
5-
*.pid
5+
*.pid
6+
eshop-postgresql/

changelog.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
======================== v2.0.0
2+
3+
- added OAuth2
4+
- added Users into the eshop
5+
- added banners into the eshop
6+
- added CodeMirror editor into the CMS
7+
- updated CMS editor
8+
- most of admin windows are centered to middle
9+
- some bug fixes
10+
111
======================== v1.0.3
212

313
- added support for galleries and one gallery widget for example (CMS)

cms/config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name : CMS
2-
version : 1.0.3
2+
version : 2.0.0
33
author : Peter Širka
44

55
// A relative URL address into the eshop management

cms/controllers/default.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ function view_page() {
4040
// FILES
4141
// ==========================================================================
4242

43-
// Reads specific file from database
44-
// For images (jpg, gif, png) supports percentual resize according "?s=NUMBER" argument in query string e.g.: .jpg?s=50, .jpg?s=80 (for image galleries)
43+
// Reads a specific file from database
44+
// For images (jpg, gif, png) supports percentual resizing according "?s=NUMBER" argument in query string e.g.: .jpg?s=50, .jpg?s=80 (for image galleries)
4545
// URL: /download/*.*
4646
function file_read(req, res, is) {
4747

cms/controllers/manager.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
exports.install = function() {
22
// Auto-localize static HTML templates
3-
F.localize('All templates', '/templates/');
3+
F.localize('All templates', '/templates/', true);
44

55
// COMMON
66
F.route(CONFIG('manager-url') + '/*', '~manager');
@@ -131,6 +131,7 @@ function upload_base64() {
131131
// Clears all uploaded files
132132
function json_files_clear() {
133133
var Fs = require('fs');
134+
134135
U.ls(DB('files').binary.directory, function(files) {
135136
files.wait(function(item, next) {
136137
Fs.unlink(item, next);

cms/databases/pages.nosql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{"id":"7409bcad98","parent":"","template":"default","language":"","url":"/","icon":"home","navigations":["mainmenu"],"widgets":[],"settings":[],"tags":[],"pictures":["/img/empty.png"],"name":"Home","perex":"","title":"You company title","priority":20,"ispartial":false,"body":"<div class=\"CMS_widgets\"><br /><div class=\"CMS_remove\"><h1 class=\"CMS_edit CMS_singleline\"><b>Node.js</b> Content Management System</h1></div><div class=\"CMS_remove\"><div class=\"row\"><div class=\"col-md-4 col-sm-4 m\"><a href=\"#\"><img src=\"/img/empty.png\" border=\"0\" alt=\"\" class=\"img-responsive CMS_edit\" data-width=\"400\" data-height=\"200\"></a></div><div class=\"col-md-4 col-sm-4 m\"><a href=\"#\"><img src=\"/img/empty.png\" border=\"0\" alt=\"\" class=\"img-responsive CMS_edit\" data-width=\"400\" data-height=\"200\"></a></div><div class=\"col-md-4 col-sm-4 m\"><a href=\"#\"><img src=\"/img/empty.png\" border=\"0\" alt=\"\" class=\"img-responsive CMS_edit\" data-width=\"400\" data-height=\"200\"></a></div></div><br /></div><div class=\"CMS_remove\"><hr></div><div class=\"CMS_remove\"><div class=\"row\"><div class=\"col-md-3 col-sm-3 m\"><h3 class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor</h3><p class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sit, eum.</p></div><div class=\"col-md-3 col-sm-3 m\"><h3 class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor</h3><p class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut, fugiat.</p></div><div class=\"col-md-3 col-sm-3 m\"><h3 class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor</h3><p class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero, alias.</p></div><div class=\"col-md-3 col-sm-3 m\"><h3 class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor</h3><p class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Labore, sunt.</p></div></div></div><div class=\"CMS_remove\"><hr></div><div class=\"CMS_remove\"><br /><div class=\"row\"><div class=\"col-md-3\"></div><div class=\"col-md-6 m\"><a href=\"http://www.totaljs.com/eshop/\" class=\"linkbutton CMS_edit\">DOWNLOAD CMS</a></div></div><br /></div></div>","datecreated":"2015-08-30T19:49:18.000Z"}
22
{"id":"ba8456d4e6","parent":"7409bcad98","template":"default","language":"","url":"/references/","icon":"","navigations":["mainmenu"],"widgets":[],"settings":[],"tags":[],"pictures":["/img/reference.png"],"name":"References","perex":"","title":"References","priority":2,"ispartial":false,"body":"<div class=\"CMS_widgets\"><div class=\"CMS_remove\"><h1 class=\"CMS_edit CMS_singleline\">Our work <b>is our hobby</b></h1></div><div class=\"CMS_remove\"><div class=\"row\"><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div><div class=\"col-md-3 col-sm-6 col-xs-6 reference CMS_repeat CMS_remove\"><a href=\"#\"><img src=\"/img/reference.png\" class=\"CMS_edit img-responsive\" data-width=\"400\" data-height=\"300\" alt=\"\" border=\"0\"><span class=\"reference-title\"><b class=\"CMS_edit\">Lorem Ipsum</b><span class=\"CMS_edit\">Lorem Ipsum Alias</span></span></a></div></div></div><div class=\"CMS_remove\"><br /><div class=\"row\"><div class=\"col-md-2\"></div><div class=\"col-md-8 m\"><p class=\"CMS_edit CMS_singleline\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Impedit atque omnis, rem deleniti, hic similique esse beatae excepturi. Voluptas temporibus sit molestias, ad maiores similique repellendus blanditiis dignissimos, quidem, culpa in excepturi facere architecto saepe. Doloribus impedit expedita vel voluptatum dignissimos natus, distinctio quasi voluptas libero accusantium praesentium quia temporibus quam est neque adipisci iste modi, repellat repudiandae possimus odio.</p></div></div><br /></div></div>","datecreated":"2015-08-30T19:54:35.000Z"}
3-
{"id":"1f6255726f","parent":"7409bcad98","template":"default","language":"","url":"/blogs/","icon":"","navigations":["mainmenu"],"widgets":["d5467a1697"],"settings":[""],"tags":[],"pictures":[],"name":"Blogs","perex":"","title":"Blogs","priority":1,"ispartial":false,"body":"<div class=\"CMS_widgets\"><div class=\"CMS_remove\"><h1 class=\"CMS_edit CMS_singleline\">Our blogs</h1></div><div class=\"CMS_widget CMS_remove\" data-id=\"d5467a1697\"></div><div class=\"CMS_remove\"><br /><div class=\"row\"><div class=\"col-md-3\"></div><div class=\"col-md-6 m\"><a href=\"http://www.totaljs.com/eshop/\" class=\"linkbutton CMS_edit\">DOWNLOAD CMS</a></div></div><br /></div></div>","datecreated":"2015-08-30T20:20:29.000Z"}
3+
{"id":"1f6255726f","parent":"7409bcad98","template":"default","language":"","url":"/blogs/","icon":"","navigations":["mainmenu"],"widgets":["d5467a1697"],"settings":["10"],"tags":[],"pictures":[],"name":"Blogs","perex":"","title":"Blogs","priority":1,"ispartial":false,"body":"<div class=\"CMS_widgets\"><div class=\"CMS_remove\"><h1 class=\"CMS_edit CMS_singleline\">Our blogs</h1></div><div class=\"CMS_widget CMS_remove\" data-id=\"d5467a1697\"></div></div>","datecreated":"2015-08-30T20:20:29.000Z"}
44
{"id":"8e5475eb2b","parent":"7409bcad98","template":"default","language":"","url":"/contact/","icon":"","navigations":["mainmenu"],"widgets":["23cee236ba"],"settings":[""],"tags":[],"pictures":[],"name":"Contact","perex":"","title":"Contact","priority":0,"ispartial":false,"body":"<div class=\"CMS_widgets\"><div class=\"CMS_remove\"><h1 class=\"CMS_edit CMS_singleline\">Contact us</h1></div><div class=\"CMS_widget CMS_remove\" data-id=\"23cee236ba\"></div></div>","datecreated":"2015-08-30T20:22:03.000Z"}
55
{"id":"11aafb95ab","parent":"1f6255726f","template":"blog","language":"","url":"/blogs/our-first-blog/","icon":"","navigations":["blogs"],"widgets":[],"settings":[],"tags":[],"pictures":["/img/empty.png"],"name":"Our first blog","perex":"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem minus cumque placeat quisquam, eligendi adipisci vero temporibus alias consectetur aperiam rem obcaecati, blanditiis eaque dicta accusantium veniam architecto est tempore. Minus aspernatur quibusdam blanditiis neque ut totam iusto. Ullam ex dicta alias tempora ea earum harum error accusantium provident atque?","title":"Our first blog","priority":0,"ispartial":false,"body":"<br /><div class=\"row\"><div class=\"col-md-2\"></div><div class=\"col-md-8\"><div class=\"CMS_remove\"><div><img src=\"/img/empty.png\" class=\"CMS_edit img-responsive\" data-width=\"800\" data-height=\"400\" alt=\"\"></div><br /></div><h1 class=\"CMS_edit CMS_singleline\">Our first blog</h1><hr><p class=\"CMS_edit CMS_singleline CMS_perex\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem minus cumque placeat quisquam, eligendi adipisci vero temporibus alias consectetur aperiam rem obcaecati, blanditiis eaque dicta accusantium veniam architecto est tempore. Minus aspernatur quibusdam blanditiis neque ut totam iusto. Ullam ex dicta alias tempora ea earum harum error accusantium provident atque?</p><hr><div><div class=\"CMS_repeat\"><div class=\"CMS_edit\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa quos corporis porro doloremque repudiandae adipisci architecto illum veritatis sint blanditiis eveniet, aliquam quo nesciunt molestiae vitae, cum excepturi voluptate. Aliquid, impedit. Ad hic perspiciatis iure eveniet adipisci autem ex esse quidem quis debitis unde natus sequi distinctio, officiis, harum! A!</div><br /></div></div><div class=\"CMS_widgets\"></div><br /><div>Author: <b class=\"CMS_edit CMS_singleline\">Peter Širka</b></div></div></div>","datecreated":"2015-08-30T21:39:01.000Z"}
66
{"id":"dbf4165bf2","parent":"1f6255726f","template":"blog","language":"","url":"/blogs/our-second-blog/","icon":"","navigations":["blogs"],"widgets":[],"settings":[],"tags":[],"pictures":["/img/empty.png"],"name":"Our second blog","perex":"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem minus cumque placeat quisquam, eligendi adipisci vero temporibus alias consectetur aperiam rem obcaecati, blanditiis eaque dicta accusantium veniam architecto est tempore. Minus aspernatur quibusdam blanditiis neque ut totam iusto. Ullam ex dicta alias tempora ea earum harum error accusantium provident atque?","title":"Our second blog","priority":0,"ispartial":false,"body":"<br /><div class=\"row\"><div class=\"col-md-2\"></div><div class=\"col-md-8\"><div class=\"CMS_remove\"><div><img src=\"/img/empty.png\" class=\"CMS_edit img-responsive\" data-width=\"800\" data-height=\"400\" alt=\"\"></div><br /></div><h1 class=\"CMS_edit CMS_singleline\">Our second blog</h1><hr><p class=\"CMS_edit CMS_singleline CMS_perex\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem minus cumque placeat quisquam, eligendi adipisci vero temporibus alias consectetur aperiam rem obcaecati, blanditiis eaque dicta accusantium veniam architecto est tempore. Minus aspernatur quibusdam blanditiis neque ut totam iusto. Ullam ex dicta alias tempora ea earum harum error accusantium provident atque?</p><hr><div><div class=\"CMS_repeat\"><div class=\"CMS_edit\">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa quos corporis porro doloremque repudiandae adipisci architecto illum veritatis sint blanditiis eveniet, aliquam quo nesciunt molestiae vitae, cum excepturi voluptate. Aliquid, impedit. Ad hic perspiciatis iure eveniet adipisci autem ex esse quidem quis debitis unde natus sequi distinctio, officiis, harum! A!</div><br /></div></div><div class=\"CMS_widgets\"><div class=\"CMS_remove\"><div class=\"row\"><div class=\"col-md-2\"></div><div class=\"col-md-8\"><div class=\"newsletter\" data-component=\"newsletter\" data-success=\"Thanks, you have been added.\"><div class=\"newsletter-button\"><button><span class=\"fa fa-envelope\"></span>SUBMIT</button></div><div class=\"newsletter-input\"><input type=\"text\" placeholder=\"Join to our mailing list\"></div></div></div></div></div><div class=\"CMS_remove\"><hr></div></div><br /><div>Author: <b class=\"CMS_edit CMS_singleline\">Peter Širka</b></div></div></div>","datecreated":"2015-08-30T22:13:50.000Z"}

cms/definitions/widgets.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
GETSCHEMA('Widget').addTransform('Blogs', function(error, model, data, callback) {
66

7+
// data.settings
8+
// data.page
9+
// data.controller
10+
711
var prepare = function(doc) {
812
if (!doc.navigations)
913
return;
@@ -21,10 +25,19 @@ GETSCHEMA('Widget').addTransform('Blogs', function(error, model, data, callback)
2125
DB('pages').sort(prepare, sort, function(err, docs) {
2226
if (err)
2327
return callback('');
24-
callback(F.view('~widgets/blogs', docs));
28+
29+
var model = {};
30+
model.max = U.parseInt(data.settings, 5);
31+
model.items = docs;
32+
callback(F.view('~widgets/blogs', model));
2533
});
2634
});
2735

2836
GETSCHEMA('Widget').addTransform('Contact form', function(error, model, data, callback) {
37+
38+
// data.settings
39+
// data.page
40+
// data.controller
41+
2942
callback(F.view('~widgets/contactform'));
3043
});

cms/models/contact.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var Contact = NEWSCHEMA('Contact');
2-
Contact.define('id', String);
2+
Contact.define('id', 'String(10)');
33
Contact.define('firstname', 'String(40)', true);
44
Contact.define('lastname', 'String(40)', true);
55
Contact.define('email', 'String(200)', true);
@@ -13,7 +13,7 @@ Contact.define('datecreated', Date);
1313
Contact.setSave(function(error, model, options, callback) {
1414

1515
// Default values
16-
model.id = U.GUID(8);
16+
model.id = U.GUID(10);
1717
model.datecreated = (new Date()).format();
1818

1919
// Saves to database

cms/models/pages.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@
88
// "create-url"
99

1010
var Page = NEWSCHEMA('Page');
11-
Page.define('id', String);
12-
Page.define('parent', String);
13-
Page.define('template', String, true);
11+
Page.define('id', 'String(10)');
12+
Page.define('parent', 'String(10)');
13+
Page.define('template', 'String(30)', true);
1414
Page.define('language', 'String(3)');
15-
Page.define('url', String);
15+
Page.define('url', 'String(200)');
1616
Page.define('icon', 'String(20)');
1717
Page.define('navigations', '[String]');
1818
Page.define('widgets', '[String]'); // Widgets lists, contains Array of ID widget
1919
Page.define('settings', '[String]'); // Widget settings (according to widgets array index)
2020
Page.define('tags', '[String]');
2121
Page.define('pictures', '[String]') // URL address to first 5 pictures
22-
Page.define('name', String);
22+
Page.define('name', 'String(50)');
2323
Page.define('perex', 'String(500)');
24-
Page.define('title', String, true);
24+
Page.define('title', 'String(100)', true);
2525
Page.define('priority', Number);
2626
Page.define('ispartial', Boolean);
2727
Page.define('body', String);
@@ -269,17 +269,17 @@ Page.addOperation('render', function(error, model, options, callback) {
269269
if (!response.widgets)
270270
return callback(response);
271271

272-
273272
var Widget = GETSCHEMA('Widget');
274273

275274
// Loads widgets
276275
Widget.workflow('load', null, response.widgets, function(err, widgets) {
277276
var index = 0;
278277
response.widgets.wait(function(key, next) {
279-
278+
// INIT WIDGET
280279
var custom = {};
281280
custom.settings = response.settings[index++];
282281
custom.page = response;
282+
custom.controller = options.controller;
283283

284284
if (!widgets[key]) {
285285
F.error(new Error('Widget # ' + key + ' not found'), 'Page: ' + response.name, response.url);
@@ -299,7 +299,7 @@ Page.addOperation('render', function(error, model, options, callback) {
299299
}, true);
300300

301301
}, function() {
302-
302+
// DONE
303303
if (response.language)
304304
response.body = F.translator(response.language, response.body);
305305

@@ -490,7 +490,13 @@ F.eval(function() {
490490
}
491491

492492
self.memorize('cache.' + url, '1 minute', DEBUG || cache !== true, function() {
493-
GETSCHEMA('Page').operation('render', url, function(err, response) {
493+
494+
var options = {};
495+
496+
options.url = url;
497+
options.controller = self;
498+
499+
GETSCHEMA('Page').operation('render', options, function(err, response) {
494500

495501
if (err) {
496502
self.status = 404;

cms/models/widgets.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var Widget = NEWSCHEMA('Widget')
2-
Widget.define('id', String);
3-
Widget.define('name', String, true);
2+
Widget.define('id', 'String(10)');
3+
Widget.define('name', 'String(50)', true);
44
Widget.define('body', String);
55
Widget.define('icon', 'String(20)');
66
Widget.define('istemplate', Boolean);

0 commit comments

Comments
 (0)