forked from projects/fipamo
added page removal and poste page status update from navigation area
This commit is contained in:
parent
27a1e670e3
commit
0021782037
11 changed files with 161 additions and 14 deletions
|
@ -2,6 +2,7 @@ const express = require('express');
|
|||
const router = express.Router();
|
||||
const Models = require('../../models');
|
||||
const fs = require("fs-extra");
|
||||
const _ = require('lodash');
|
||||
var settings = [];
|
||||
//--------------------------
|
||||
// SETTINGS
|
||||
|
@ -35,6 +36,8 @@ router.get('/', function(req, res)
|
|||
let item = posts[index].post;
|
||||
if (item.page == true || item.page == "true") pages.push(
|
||||
{
|
||||
id: posts[index].id,
|
||||
uuid: posts[index].post.uuid,
|
||||
title: posts[index].post.title,
|
||||
slug: posts[index].post.slug
|
||||
});
|
||||
|
@ -42,7 +45,39 @@ router.get('/', function(req, res)
|
|||
}
|
||||
else
|
||||
{
|
||||
pages = settings.menu
|
||||
let newpages = []
|
||||
pages = settings.menu;
|
||||
for (let index = 0; index < posts.length; index++)
|
||||
{
|
||||
let item = posts[index].post;
|
||||
if (item.page == true || item.page == "true") newpages.push(
|
||||
{
|
||||
id: posts[index].id,
|
||||
uuid: posts[index].post.uuid,
|
||||
title: posts[index].post.title,
|
||||
slug: posts[index].post.slug
|
||||
});
|
||||
}
|
||||
for (let i = 0; i < newpages.length; i++)
|
||||
{
|
||||
if (_.findIndex(pages, function(o)
|
||||
{
|
||||
return o.id == newpages[i].id;
|
||||
}) != -1)
|
||||
{
|
||||
//console.log("FOUND")
|
||||
}
|
||||
else
|
||||
{
|
||||
pages.push(
|
||||
{
|
||||
id: newpages[i].id,
|
||||
uuid: newpages[i].uuid,
|
||||
title: newpages[i].title,
|
||||
slug: newpages[i].slug
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
res.render('dash/navigation',
|
||||
{
|
||||
|
|
|
@ -20,6 +20,10 @@ export default class DBUtils
|
|||
//--------------------------
|
||||
constructor()
|
||||
{
|
||||
/**
|
||||
* NOTE: DB ERRORS REPLICATE.
|
||||
* WHEN FIXING A BUG, FIX DATA WITH JSON BACKUP
|
||||
*/
|
||||
this.dataUtils = new DataUtils();
|
||||
this.db = new Dexie("fipamo_posts");
|
||||
this.db.version(1).stores(
|
||||
|
@ -56,6 +60,7 @@ export default class DBUtils
|
|||
}
|
||||
else
|
||||
{
|
||||
//console.log("UPDATED", postData);
|
||||
self.db.postList.update(Number(id),
|
||||
{
|
||||
post: postData
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
"repository": "https://code.playvicio.us/Are0h/Fipamo",
|
||||
"theme": "default-light",
|
||||
"scripts": {
|
||||
"start": "forever start -r esm init.js",
|
||||
"stop": "forever stop -r esm init.js",
|
||||
"start": "pm2 --node-args='-r esm --inspect' start init.js",
|
||||
"stop": "pm2 stop init.js",
|
||||
"dev": "nodemon -r esm init.js",
|
||||
"watch-front-scripts": "parcel watch themes/$npm_package_theme/src/com/Start.jsx --out-dir themes/$npm_package_theme/assets/js --out-file start.min.js --public-url /$npm_package_theme/assets/js",
|
||||
"watch-front-styles": "stylus -w -m -o themes/$npm_package_theme/assets/css themes/$npm_package_theme/src/styles/base.styl",
|
||||
|
|
|
@ -2051,7 +2051,7 @@ svg.icons {
|
|||
#nav-index #nav-index-wrapper {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
#nav-index #nav-index-wrapper #nav-pages div {
|
||||
#nav-index #nav-index-wrapper #nav-pages div.nav-item {
|
||||
display: block;
|
||||
width: 100%;
|
||||
background: #161d23;
|
||||
|
@ -2070,6 +2070,13 @@ svg.icons {
|
|||
margin: -15px 0 0 10px;
|
||||
cursor: move;
|
||||
}
|
||||
#nav-index #nav-index-wrapper #nav-pages #nav-btns {
|
||||
float: right;
|
||||
}
|
||||
#nav-index #nav-index-wrapper #nav-pages #nav-btns button {
|
||||
font-size: 0.8em;
|
||||
margin: 0 0 0 10px;
|
||||
}
|
||||
/**
|
||||
-------------------------------
|
||||
-- Forms
|
||||
|
|
File diff suppressed because one or more lines are too long
56
themes/dash/assets/js/dash.min.js
vendored
56
themes/dash/assets/js/dash.min.js
vendored
|
@ -5615,6 +5615,10 @@ function () {
|
|||
function DBUtils() {
|
||||
_classCallCheck(this, DBUtils);
|
||||
|
||||
/**
|
||||
* NOTE: DB ERRORS REPLICATE.
|
||||
* WHEN FIXING A BUG, FIX DATA WITH JSON BACKUP
|
||||
*/
|
||||
this.dataUtils = new _DataUtils.default();
|
||||
this.db = new _dexie.default("fipamo_posts");
|
||||
this.db.version(1).stores({
|
||||
|
@ -5645,6 +5649,7 @@ function () {
|
|||
};
|
||||
});
|
||||
} else {
|
||||
//console.log("UPDATED", postData);
|
||||
self.db.postList.update(Number(id), {
|
||||
post: postData
|
||||
}).then(function (updated) {}).catch(function (e) {
|
||||
|
@ -8604,6 +8609,8 @@ var _DateUtils = _interopRequireDefault(require("../../../../../brain/tools/util
|
|||
|
||||
var DataEvent = _interopRequireWildcard(require("../../../../../brain/tools/events/DataEvent"));
|
||||
|
||||
var _DBUtils = _interopRequireDefault(require("../../../../../brain/tools/utilities/DBUtils"));
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
||||
|
@ -8625,6 +8632,7 @@ function () {
|
|||
|
||||
this.dataUtils = new _DataUtils.default();
|
||||
this.dateUtils = new _DateUtils.default();
|
||||
this.dbutils = new _DBUtils.default();
|
||||
} //--------------------------
|
||||
// methods
|
||||
//--------------------------
|
||||
|
@ -8640,7 +8648,9 @@ function () {
|
|||
for (var index = 0; index < items.length; index++) {
|
||||
navData.push({
|
||||
title: items[index].getElementsByTagName('label')[0].innerHTML,
|
||||
slug: items[index].id
|
||||
id: items[index].id,
|
||||
slug: items[index].getAttribute('data-slug'),
|
||||
uuid: items[index].getAttribute('data-uuid')
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -8652,6 +8662,18 @@ function () {
|
|||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "removeItem",
|
||||
value: function removeItem(id) {
|
||||
var self = this;
|
||||
this.dbutils.getPost(id).then(function (post) {
|
||||
post.post.page = "false";
|
||||
self.dbutils.modify(id, post.post).then(function (r) {
|
||||
document.getElementById('nav-pages').removeChild(document.getElementById(id));
|
||||
self.save();
|
||||
});
|
||||
});
|
||||
} //--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
|
@ -8662,7 +8684,7 @@ function () {
|
|||
}();
|
||||
|
||||
exports.default = NavActions;
|
||||
},{"../../../../../brain//tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain//tools/utilities/StringUtils":"../../../../brain/tools/utilities/StringUtils.js","../../../../../brain/tools/utilities/DateUtils":"../../../../brain/tools/utilities/DateUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js"}],"controllers/NavIndex.js":[function(require,module,exports) {
|
||||
},{"../../../../../brain//tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain//tools/utilities/StringUtils":"../../../../brain/tools/utilities/StringUtils.js","../../../../../brain/tools/utilities/DateUtils":"../../../../brain/tools/utilities/DateUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js","../../../../../brain/tools/utilities/DBUtils":"../../../../brain/tools/utilities/DBUtils.js"}],"controllers/NavIndex.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
|
@ -8676,6 +8698,8 @@ var _DataUtils = _interopRequireWildcard(require("../../../../../brain/tools/uti
|
|||
|
||||
var DataEvent = _interopRequireWildcard(require("../../../../../brain/tools/events/DataEvent"));
|
||||
|
||||
var _DBUtils = _interopRequireDefault(require("../../../../../brain/tools/utilities/DBUtils"));
|
||||
|
||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
@ -8697,6 +8721,7 @@ function () {
|
|||
|
||||
this.start();
|
||||
this.dataUtils = new _DataUtils.default();
|
||||
this.dbutils = new _DBUtils.default();
|
||||
} //--------------------------
|
||||
// methods
|
||||
//--------------------------
|
||||
|
@ -8705,6 +8730,8 @@ function () {
|
|||
_createClass(NavIndex, [{
|
||||
key: "start",
|
||||
value: function start() {
|
||||
var _this = this;
|
||||
|
||||
var self = this;
|
||||
var menu = Sortable.create(document.getElementById("nav-pages"), {
|
||||
onUpdate: function onUpdate(e) {
|
||||
|
@ -8715,17 +8742,40 @@ function () {
|
|||
});
|
||||
}
|
||||
});
|
||||
var nav = document.querySelectorAll('.nav-btn');
|
||||
|
||||
for (var i = 0, length = nav.length; i < length; i++) {
|
||||
nav[i].addEventListener('click', function (e) {
|
||||
return _this.handleNavButton(e);
|
||||
}, false);
|
||||
}
|
||||
} //--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
|
||||
}, {
|
||||
key: "handleNavButton",
|
||||
value: function handleNavButton(e) {
|
||||
var self = this;
|
||||
|
||||
switch (e.target.id) {
|
||||
case "remove-item":
|
||||
var id = e.target.getAttribute('data-id');
|
||||
new _NavActions.default().removeItem(id);
|
||||
break;
|
||||
|
||||
case "edit-item":
|
||||
console.log("EDIT STUFF");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}]);
|
||||
|
||||
return NavIndex;
|
||||
}();
|
||||
|
||||
exports.default = NavIndex;
|
||||
},{"../actions/NavActions":"actions/NavActions.js","../../../../../brain/tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js"}],"controllers/DashManager.js":[function(require,module,exports) {
|
||||
},{"../actions/NavActions":"actions/NavActions.js","../../../../../brain/tools/utilities/DataUtils":"../../../../brain/tools/utilities/DataUtils.js","../../../../../brain/tools/events/DataEvent":"../../../../brain/tools/events/DataEvent.js","../../../../../brain/tools/utilities/DBUtils":"../../../../brain/tools/utilities/DBUtils.js"}],"controllers/DashManager.js":[function(require,module,exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,9 +5,12 @@ block main-content
|
|||
#nav-pages
|
||||
- var index = 0;
|
||||
- for ( index; index < pages.length; index++)
|
||||
.nav-item(id=pages[index].slug)
|
||||
.nav-item(id=pages[index].id, data-slug=pages[index].slug, data-uuid=pages[index].uuid)
|
||||
svg#item-arrows(viewBox="0 0 20 20" class="icons")
|
||||
use(xlink:href='/dash/assets/images/sprite.svg#entypo-select-arrows')
|
||||
label
|
||||
= pages[index].title
|
||||
#nav-btns
|
||||
button.nav-btn#edit-item(data-id=pages[index].uuid) EDIT
|
||||
button.nav-btn#remove-item(data-id=pages[index].id) REMOVE
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ from '../../../../../brain//tools/utilities/DataUtils';
|
|||
import StringUtils from '../../../../../brain//tools/utilities/StringUtils';
|
||||
import DateUtils from '../../../../../brain/tools/utilities/DateUtils';
|
||||
import * as DataEvent from '../../../../../brain/tools/events/DataEvent';
|
||||
import DBUtils from '../../../../../brain/tools/utilities/DBUtils';
|
||||
export default class NavActions
|
||||
{
|
||||
//--------------------------
|
||||
|
@ -20,6 +21,7 @@ export default class NavActions
|
|||
{
|
||||
this.dataUtils = new DataUtils();
|
||||
this.dateUtils = new DateUtils();
|
||||
this.dbutils = new DBUtils();
|
||||
}
|
||||
//--------------------------
|
||||
// methods
|
||||
|
@ -29,10 +31,16 @@ export default class NavActions
|
|||
let self = this;
|
||||
let navData = [];
|
||||
let items = document.getElementById('nav-pages').children;
|
||||
for (let index = 0; index < items.length; index++) {
|
||||
navData.push({title:items[index].getElementsByTagName('label')[0].innerHTML, slug:items[index].id})
|
||||
for (let index = 0; index < items.length; index++)
|
||||
{
|
||||
navData.push(
|
||||
{
|
||||
title: items[index].getElementsByTagName('label')[0].innerHTML,
|
||||
id: items[index].id,
|
||||
slug: items[index].getAttribute('data-slug'),
|
||||
uuid: items[index].getAttribute('data-uuid')
|
||||
})
|
||||
}
|
||||
|
||||
return new Promise(function(resolve, reject)
|
||||
{
|
||||
self.dataUtils.request('/api/settings/nav-sync', DataEvent.SETTINGS_UPDATED, REQUEST_TYPE_POST, CONTENT_TYPE_JSON, navData).then((response) =>
|
||||
|
@ -45,6 +53,19 @@ export default class NavActions
|
|||
})
|
||||
})
|
||||
}
|
||||
removeItem(id)
|
||||
{
|
||||
let self = this;
|
||||
this.dbutils.getPost(id).then(post =>
|
||||
{
|
||||
post.post.page = "false";
|
||||
self.dbutils.modify(id, post.post).then(r =>
|
||||
{
|
||||
document.getElementById('nav-pages').removeChild(document.getElementById(id));
|
||||
self.save()
|
||||
})
|
||||
})
|
||||
}
|
||||
//--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
|
|
|
@ -10,6 +10,7 @@ import DataUtils,
|
|||
}
|
||||
from "../../../../../brain/tools/utilities/DataUtils";
|
||||
import * as DataEvent from '../../../../../brain/tools/events/DataEvent';
|
||||
import DBUtils from "../../../../../brain/tools/utilities/DBUtils";
|
||||
export default class NavIndex
|
||||
{
|
||||
//--------------------------
|
||||
|
@ -19,6 +20,7 @@ export default class NavIndex
|
|||
{
|
||||
this.start();
|
||||
this.dataUtils = new DataUtils();
|
||||
this.dbutils = new DBUtils();
|
||||
}
|
||||
//--------------------------
|
||||
// methods
|
||||
|
@ -38,8 +40,27 @@ export default class NavIndex
|
|||
})
|
||||
}
|
||||
});
|
||||
var nav = document.querySelectorAll('.nav-btn');
|
||||
for (var i = 0, length = nav.length; i < length; i++)
|
||||
{
|
||||
nav[i].addEventListener('click', e => this.handleNavButton(e), false);
|
||||
}
|
||||
}
|
||||
//--------------------------
|
||||
// event handlers
|
||||
//--------------------------
|
||||
handleNavButton(e)
|
||||
{
|
||||
let self = this;
|
||||
switch (e.target.id)
|
||||
{
|
||||
case "remove-item":
|
||||
let id = e.target.getAttribute('data-id');
|
||||
new NavActions().removeItem(id);
|
||||
break
|
||||
case "edit-item":
|
||||
console.log("EDIT STUFF");
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
#nav-index-wrapper
|
||||
padding 0.75rem
|
||||
#nav-pages
|
||||
div
|
||||
div.nav-item
|
||||
display: block
|
||||
width: 100%
|
||||
background: $primary - 60%
|
||||
|
@ -23,3 +23,8 @@
|
|||
padding: 0
|
||||
margin: -15px 0 0 10px
|
||||
cursor move
|
||||
#nav-btns
|
||||
float right
|
||||
button
|
||||
font-size: .8em
|
||||
margin: 0 0 0 10px
|
||||
|
|
Loading…
Reference in a new issue