changed reference 'entry' to 'post'; implemented status states for posts (featured, page, published)

This commit is contained in:
Ro 2018-11-10 18:08:00 -05:00
parent e75b50d804
commit 625bab02e5
24 changed files with 470 additions and 325 deletions

View file

@ -57,7 +57,6 @@ var back = require('./routes/back/index');
//api
var folioLibrary = require('./api/content/folio');
var blogLibrary = require('./api/content/posts');
var projectLibrary = require('./api/content/project');
var bookmarkLibrary = require('./api/content/bookmarks');
var postLibrary = require('./api/content/posts');
@ -67,8 +66,7 @@ var mailer = require('./api/content/mailer');
app.use('/api/folio', folioLibrary);
app.use('/api/projects', projectLibrary);
app.use('/api/bookmarks', bookmarkLibrary);
app.use('/api/posts', postLibrary);
app.use('/api/blog', blogLibrary);
app.use('/api/post', postLibrary);
// PAGES
app.use('/', front);

View file

@ -19,12 +19,12 @@ module.exports = function (sequelize, DataTypes) {
unique: false,
allowNull: true
},
entry_html: {
html: {
type: DataTypes.TEXT,
unique: false,
allowNull: true
},
entry_plaintext: {
plaintext: {
type: DataTypes.TEXT,
unique: false,
allowNull: true

View file

@ -55,9 +55,9 @@ router.get('/settings/', function (req, res) {
//--------------------------
// ENTRIES
// POSTS
//--------------------------
router.get('/entries/:page?', function (req, res) {
router.get('/posts/:page?', function (req, res) {
var pageNum = req.params.page;
if (pageNum == "" || pageNum == null) pageNum = 1;
var offset = ((pageNum * 5) - 5);
@ -81,8 +81,8 @@ router.get('/entries/:page?', function (req, res) {
//console.log(e)
}
}
res.render('dash/entries-index', {
title: 'Dashbord Entries',
res.render('dash/posts-index', {
title: 'Dashbord | Posts',
mode: 'admin',
items: pageItems,
page_index: pageNum,
@ -102,10 +102,10 @@ router.get('/entries/:page?', function (req, res) {
//--------------------------
// BLOG POST ADD DISPLAY
//--------------------------
router.get('/entries/add/new', function (req, res) {
router.get('/posts/add/new', function (req, res) {
if (req.session.user) {
res.render('dash/entry-edit', {
title: 'Add New Entry',
res.render('dash/post-edit', {
title: 'Make New Post',
mode: 'admin',
date: DateUtils.getDate('year', new Date()) + "-" + DateUtils.getDate('month', new Date()) + "-" + DateUtils.getDate('day', new Date()),
edit: false
@ -117,32 +117,33 @@ router.get('/entries/add/new', function (req, res) {
//--------------------------
// BLOG POST EDIT DISPLAY
//--------------------------
router.get('/entries/edit/:id', function (req, res) {
router.get('/posts/edit/:id', function (req, res) {
if (req.session.user) {
Models.Post.findOne({
where: {
slug: req.params.id
}
}).then(entry => {
let featured_img = JSON.parse(entry.feature_image);
}).then(post => {
let featured_img = JSON.parse(post.feature_image);
let featured = 'null';
if (featured_img.length != 0)
featured = featured_img[0].substr(7, featured_img[0].length);
let pretty = hljs.highlight('markdown', entry.entry_plaintext).value;
let pretty = hljs.highlight('markdown', post.plaintext).value;
let sexydate
if (entry.origin_date == "" || entry.origin_date == null)
sexydate = DateUtils.getDate('year', entry.created_at) + "-" + DateUtils.getDate('month', entry.created_at) + "-" + DateUtils.getDate('day', entry.created_at)
if (post.origin_date == "" || post.origin_date == null)
sexydate = DateUtils.getDate('year', post.created_at) + "-" + DateUtils.getDate('month', post.created_at) + "-" + DateUtils.getDate('day', post.created_at)
else
sexydate = entry.origin_date
res.render('dash/entry-edit', {
title: 'Edit Entry',
sexydate = post.origin_date
res.render('dash/post-edit', {
title: 'Edit Post',
mode: 'admin',
post: entry,
post: post,
date: sexydate,
colored: pretty,
html: entry.entry_plaintext,
html: post.plaintext,
feature: featured,
status:[String(post.page), String(post.featured), String(post.published)],
edit: true
});
}).then(function (value) {

View file

@ -2138,45 +2138,46 @@ select {
-- Blog
-------------------------------
**/
#entries-index {
#post-index {
width: 100%;
max-width: 900px;
margin: 0 auto;
}
#entries-index #entries-index-wrapper {
#post-index #post-index-wrapper {
padding: 0.75rem;
}
#entries-index #entries-index-wrapper a {
#post-index #post-index-wrapper a {
display: inline-block;
vertical-align: top;
padding: 3px;
}
#entries-index #entries-index-wrapper a.add-new-post {
#post-index #post-index-wrapper a.add-new-post {
background: #fc6399;
border-radius: 3px;
padding: 3px;
color: #f2f1ef;
width: 110px;
width: 115px;
text-align: center;
margin-bottom: 10px;
}
#entries-index #entries-index-wrapper a.add-new-post svg {
#post-index #post-index-wrapper a.add-new-post svg {
display: inline-block;
vertical-align: top;
}
#entries-index #entries-index-wrapper a.add-new-post label {
#post-index #post-index-wrapper a.add-new-post label {
padding: 5px;
}
#entries-index #entries-index-wrapper a.add-new-post span {
#post-index #post-index-wrapper a.add-new-post span {
font-size: 0.8em;
color: #62809b;
}
#entries-index #entries-index-wrapper a.add-new-post:hover {
#post-index #post-index-wrapper a.add-new-post:hover {
background: #344453;
}
#entries-index #entries-index-wrapper #entries-list {
#post-index #post-index-wrapper #posts-list {
color: #f2f1ef;
}
#entries-index #entries-index-wrapper #entries-list a.entry-list-link {
#post-index #post-index-wrapper #posts-list a.post-list-link {
display: inline-block;
vertical-align: top;
padding: 3px;
@ -2186,31 +2187,31 @@ select {
line-height: 0.8em;
margin: 0 0 20px 0;
}
#entries-index #entries-index-wrapper #entries-list a.entry-list-link span {
#post-index #post-index-wrapper #posts-list a.post-list-link span {
font-size: 0.7em;
font-family: 'Apercu-Mono';
}
#entries-edit-index {
#post-edit-index {
width: 100%;
}
#entries-edit-index #entries-edit-index-wrapper {
#post-edit-index #post-edit-index-wrapper {
width: 100%;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header {
#post-edit-index #post-edit-index-wrapper #post-header {
max-width: 900px;
margin: 0 auto;
padding: 0.75rem;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-title #entry_title {
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post_title {
background: #354554;
font-family: 'Apercu';
width: 100%;
width: 97.6%;
height: 140px;
font-size: 1.5em;
color: #f2f1ef;
padding: 5px;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-title #entry-date {
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date {
background: #32414e;
border-radius: 0 3px 3px 0;
width: 105px;
@ -2220,7 +2221,7 @@ select {
vertical-align: top;
text-align: center;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-title label {
#post-edit-index #post-edit-index-wrapper #post-header #post-title label {
background: #2f3d4a;
border-radius: 3px 0 0 3px;
display: inline-block;
@ -2228,7 +2229,44 @@ select {
color: #b2cce5;
line-height: 30px;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-meta #entry_tags {
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options {
display: inline-block;
vertical-align: top;
width: 49%;
padding: 0 0 0 3px;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button:nth-child(1) {
border-radius: 3px 0 0 3px;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button:nth-child(4) {
border-radius: 0 3px 3px 0;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button {
width: 25%;
height: 39px;
-moz-transition: all 0.3s linear;
-webkit-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
transition: all 0.3s linear;
margin: 0;
border-radius: 0;
display: inline-block;
vertical-align: top;
text-align: center;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button[data-active='false'] {
background: #b2cce5;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button[data-active='false'] svg {
fill: #374857;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button[data-active='true'] {
background: #f5ab35;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options button[data-active='true'] svg {
fill: #553604;
}
#post-edit-index #post-edit-index-wrapper #post-header #post-meta #post_tags {
background: #354554;
font-family: 'Apercu';
width: 97.6%;
@ -2236,14 +2274,14 @@ select {
color: #b2cce5;
padding: 5px;
}
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-meta #featured-click,
#entries-edit-index #entries-edit-index-wrapper #entry-header #entry-meta #post-image {
#post-edit-index #post-edit-index-wrapper #post-header #post-meta #featured-click,
#post-edit-index #post-edit-index-wrapper #post-header #post-meta #post-image {
display: none;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature {
#post-edit-index #post-edit-index-wrapper #post-feature {
width: 100%;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-image-drop {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop {
display: flex;
align-items: center;
justify-content: center;
@ -2254,35 +2292,48 @@ select {
vertical-align: middle;
font-family: 'Apercu-Mono';
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-image-drop label {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop label {
cursor: pointer;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-image-drop img {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop img {
width: 100%;
margin: 0;
padding: 0;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-new-image-btn {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn {
position: absolute;
margin: 20px;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-new-image-btn #new-upload-link {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-upload-link {
padding-top: 4px;
background: #f2f1ef;
}
#entries-edit-index #entries-edit-index-wrapper #entry-feature #featured-new-image-btn #new-upload-link svg {
#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-upload-link svg {
fill: #fc6399;
}
#entries-edit-index #entries-edit-index-wrapper #edit-content {
#post-edit-index #post-edit-index-wrapper #edit-post {
width: 100%;
max-width: 900px;
margin: 0 auto;
}
#entries-edit-index #entries-edit-index-wrapper #edit-content #edit-content-wrapper pre code {
#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper {
width: 98%;
max-width: 900px;
margin: 0 auto;
border-radius: 5px;
background: #32414e;
}
#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper pre code {
padding: 5px;
border-radius: 5px;
line-height: 1.6em;
font-size: 1.25em;
color: #bebebe;
word-wrap: normal;
white-space: pre-wrap;
line-break: normal;
display: inline-block;
width: 100%;
}
.dp-modal {
position: fixed;
@ -2614,7 +2665,7 @@ select {
#edit-control button {
background: #b2cce5;
width: 10%;
height: 35px;
height: 39px;
-moz-transition: all 0.3s linear;
-webkit-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
@ -2691,15 +2742,6 @@ select {
text-decoration: line-through;
font-style: italic;
}
#edit-content-wrapper {
width: 98%;
max-width: 900px;
margin: 0 auto;
border-radius: 5px;
}
#edit-content-wrapper code {
border-radius: 5px;
}
.hljs {
display: block;
overflow-x: auto;

File diff suppressed because one or more lines are too long

View file

@ -591,7 +591,7 @@ function () {
var _default = StringUtils;
exports.default = _default;
},{}],"tasks/EntryTasks.jsx":[function(require,module,exports) {
},{}],"actions/PostActions.jsx":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
@ -615,14 +615,14 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var EntryTasks =
var PostActions =
/*#__PURE__*/
function () {
//--------------------------
// constructor
//--------------------------
function EntryTasks() {
_classCallCheck(this, EntryTasks);
function PostActions() {
_classCallCheck(this, PostActions);
var folio = [];
this.dataUtils = new _DataUtils.default();
@ -631,7 +631,7 @@ function () {
//--------------------------
_createClass(EntryTasks, [{
_createClass(PostActions, [{
key: "start",
value: function start() {}
}, {
@ -660,21 +660,24 @@ function () {
var txt = document.createElement("textarea");
txt.innerHTML = document.getElementById('edit-text-code').innerHTML;
postData.append("title", document.getElementById('entry_title').value);
postData.append('slug', new _StringUtils.default().cleanString(document.getElementById('entry_title').value));
postData.append("entry_plaintext", txt.value);
postData.append("origin_date", document.getElementById('entry-date').value);
postData.append("tags", document.getElementById('entry_tags').value);
txt.innerHTML = document.getElementById('edit-post-text').innerHTML;
postData.append("title", document.getElementById('post_title').value);
postData.append('slug', new _StringUtils.default().cleanString(document.getElementById('post_title').value));
postData.append("post_plaintext", txt.value);
postData.append("origin_date", document.getElementById('post-date').value);
postData.append("tags", document.getElementById('post_tags').value);
postData.append("status_page", document.getElementById('option-page').getAttribute('data-active'));
postData.append("status_feature", document.getElementById('option-feature').getAttribute('data-active'));
postData.append("status_published", document.getElementById('option-published').getAttribute('data-active'));
var postURL;
var postEventType;
if (edit) {
var postID = document.getElementById('option-update').getAttribute('data-id');
postURL = "/api/blog/update/" + postID;
var postID = document.getElementById('edit-update').getAttribute('data-id');
postURL = "/api/post/update/" + postID;
postEventType = DataEvent.POST_UPDATED;
} else {
postURL = "/api/blog/add";
postURL = "/api/post/add";
postEventType = DataEvent.POST_ADDED;
}
@ -693,9 +696,9 @@ function () {
key: "deletePost",
value: function deletePost() {
var self = this;
var postID = document.getElementById('option-update').getAttribute('data-id');
var postID = document.getElementById('edit-update').getAttribute('data-id');
return new Promise(function (resolve, reject) {
self.dataUtils.request("/api/blog/delete/" + postID, DataEvent.POST_DELETED, _DataUtils.REQUEST_TYPE_POST, _DataUtils.CONTENT_TYPE_FORM).then(function (response) {
self.dataUtils.request("/api/post/delete/" + postID, DataEvent.POST_DELETED, _DataUtils.REQUEST_TYPE_POST, _DataUtils.CONTENT_TYPE_FORM).then(function (response) {
resolve({
response: response
});
@ -704,30 +707,17 @@ function () {
err: err
});
});
});
this.dataUtils.re;
}
}, {
key: "validateForm",
value: function validateForm() {
var valid = false;
if (this.entry_form.title.value == "" || this.entry_form.price.value == "" || this.entry_form.description == "") {
return valid;
} else {
valid = true;
return valid;
}
}); //this.dataUtils.re
} //--------------------------
// event handlers
//--------------------------
}]);
return EntryTasks;
return PostActions;
}();
exports.default = EntryTasks;
exports.default = PostActions;
},{"../tools/utilities/DataUtils":"tools/utilities/DataUtils.jsx","../tools/events/DataEvent":"tools/events/DataEvent.jsx","../tools/utilities/StringUtils":"tools/utilities/StringUtils.jsx"}],"tools/events/EditorEvent.jsx":[function(require,module,exports) {
"use strict";
@ -1457,13 +1447,13 @@ function (_EventEmitter) {
case DataEvent.POST_UPDATED:
document.getElementById('submit-update').classList.add('icon-hide');
document.getElementById('submit-good').classList.remove('icon-hide');
document.getElementById('option-update').classList.remove('submit-start');
document.getElementById('option-update').classList.add('submit-cool');
document.getElementById('edit-update').classList.remove('submit-start');
document.getElementById('edit-update').classList.add('submit-cool');
setTimeout(function (f) {
document.getElementById('submit-update').classList.remove('icon-hide');
document.getElementById('submit-good').classList.add('icon-hide');
document.getElementById('option-update').classList.add('submit-start');
document.getElementById('option-update').classList.remove('submit-cool');
document.getElementById('edit-update').classList.add('submit-start');
document.getElementById('edit-update').classList.remove('submit-cool');
}, 2000);
break;
@ -1505,50 +1495,50 @@ function (_EventEmitter) {
range.deleteContents();
switch (e.target.id) {
case "option-bold":
case "edit-bold":
range.insertNode(document.createTextNode("**" + pulled + "**"));
break;
case "option-italic":
case "edit-italic":
range.insertNode(document.createTextNode("*" + pulled + "*"));
break;
case "option-strikethrough":
case "edit-strikethrough":
range.insertNode(document.createTextNode("<del>" + pulled + "</del>"));
break;
case "option-header1":
case "edit-header1":
range.insertNode(document.createTextNode("# " + pulled));
break;
case "option-header2":
case "edit-header2":
range.insertNode(document.createTextNode("## " + pulled));
break;
case "option-header3":
case "edit-header3":
range.insertNode(document.createTextNode("### " + pulled));
break;
case "option-image":
case "edit-image":
this.caretPos = (0, _caretPos.position)(this.textEditor).pos;
this.emitEvent(EditorEvent.EDITOR_UPLOAD_POST_IMAGE);
break;
case "submit-save":
case "option-save":
case "edit-save":
this.emitEvent(EditorEvent.EDITOR_SAVE);
break;
case "submit-update":
case "option-update":
case "edit-update":
this.emitEvent(EditorEvent.EDITOR_UPDATE);
break;
case "option-link":
case "edit-link":
range.insertNode(document.createTextNode("[" + pulled + "](PASTE URL HERE)"));
break;
case "option-delete":
case "edit-delete":
this.emitEvent(EditorEvent.EDITOR_DELETE);
break;
@ -2772,7 +2762,7 @@ var global = arguments[3];
})));
},{}],"controllers/DashEntry.jsx":[function(require,module,exports) {
},{}],"controllers/PostEditor.jsx":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
@ -2786,7 +2776,7 @@ var DataEvent = _interopRequireWildcard(require("../tools/events/DataEvent"));
var Ease = _interopRequireWildcard(require("../tools/effects/Animate"));
var _EntryTasks = _interopRequireDefault(require("../tasks/EntryTasks"));
var _PostActions = _interopRequireDefault(require("../actions/PostActions"));
var EditorEvent = _interopRequireWildcard(require("../tools/events/EditorEvent"));
@ -2806,16 +2796,16 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var Entry =
var PostEditor =
/*#__PURE__*/
function () {
//--------------------------
// constructor
//--------------------------
function Entry() {
function PostEditor() {
var _this = this;
_classCallCheck(this, Entry);
_classCallCheck(this, PostEditor);
reframe('iframe');
var self = this;
@ -2823,8 +2813,8 @@ function () {
this.dataUtils = new _DataUtils.default();
this.dateUtils = new _DateUtils.default();
if (document.getElementById('edit-text-code')) {
this.editor = new _TextEditor.default(document.getElementById('edit-text-code'), document.getElementById('header').offsetHeight + document.getElementById('entry-header').offsetHeight + document.getElementById('entry-feature').offsetHeight);
if (document.getElementById('edit-post-text')) {
this.editor = new _TextEditor.default(document.getElementById('edit-post-text'), document.getElementById('header').offsetHeight + document.getElementById('post-header').offsetHeight + document.getElementById('post-feature').offsetHeight);
this.editor.addListener(EditorEvent.EDITOR_DELETE, function (f) {
return _this.handleEditorOptions(EditorEvent.EDITOR_DELETE);
}, false);
@ -2840,7 +2830,7 @@ function () {
document.getElementById('post-image').addEventListener('change', function (e) {
return _this.handlePostImageAdd(e);
}, false);
(0, _tinyDatePicker.default)(document.getElementById('entry-date'), {
(0, _tinyDatePicker.default)(document.getElementById('post-date'), {
mode: 'dp-below',
format: function format(date) {
//return date;
@ -2855,9 +2845,11 @@ function () {
//--------------------------
_createClass(Entry, [{
_createClass(PostEditor, [{
key: "start",
value: function start() {
var _this2 = this;
var self = this;
new Ease.default().object({
targets: document.getElementById('loader'),
@ -2890,27 +2882,60 @@ function () {
document.getElementById('featured-click').click();
});
}
var optionButtons = document.querySelectorAll('.post-option-btn');
for (var i = 0, length = optionButtons.length; i < length; i++) {
optionButtons[i].addEventListener('click', function (e) {
return _this2.handlePostOptions(e);
}, false);
}
}
} //--------------------------
// event handlers
//--------------------------
}, {
key: "handlePostOptions",
value: function handlePostOptions(e) {
var currentOption;
switch (e.target.id) {
case "option-page-icon":
case "option-page":
currentOption = document.getElementById('option-page');
break;
case "option-feature-icon":
case "option-feature":
currentOption = document.getElementById('option-feature');
break;
case "option-published-icon":
case "option-published":
currentOption = document.getElementById('option-published');
break;
}
var active = currentOption.getAttribute('data-active');
active == 'false' ? currentOption.setAttribute('data-active', 'true') : currentOption.setAttribute('data-active', 'false');
}
}, {
key: "handleEditorOptions",
value: function handleEditorOptions(e) {
var _this2 = this;
var _this3 = this;
switch (e) {
case EditorEvent.EDITOR_SAVE:
case EditorEvent.EDITOR_UPDATE:
var edit = false;
if (e == EditorEvent.EDITOR_UPDATE) edit = true;
new _EntryTasks.default().submitPost(edit, Entry.uploadFiles).then(function (response) {
new _PostActions.default().submitPost(edit, PostEditor.uploadFiles).then(function (response) {
var note = JSON.parse(response['response']['request'].response);
_this2.editor.notify(note.message, note.postID);
_this3.editor.notify(note.message, note.postID);
if (note.message == DataEvent.POST_ADDED) window.location = "/@/dashboard/entries/edit/" + note.postID;
if (note.message == DataEvent.POST_ADDED) window.location = "/@/dashboard/posts/edit/" + note.postID;
}).catch(function (err) {
console.log(err);
});
@ -2918,9 +2943,9 @@ function () {
case EditorEvent.EDITOR_DELETE:
if (confirm('Aye! You know you\'re deleting this post, right?')) {
new _EntryTasks.default().deletePost().then(function (response) {
new _PostActions.default().deletePost().then(function (response) {
var note = JSON.parse(response['response']['request'].response);
window.location = "/@/dashboard/entries/"; //console.log(note);
window.location = "/@/dashboard/posts/"; //console.log(note);
}).catch(function (err) {
console.log(err);
});
@ -2947,9 +2972,9 @@ function () {
e.stopPropagation();
e.preventDefault(); //console.log("IMAGES " + e.target.files);
Entry.uploadFiles = e.target.files;
PostEditor.uploadFiles = e.target.files;
for (var i = 0, f; f = Entry.uploadFiles[i]; i++) {
for (var i = 0, f; f = PostEditor.uploadFiles[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
@ -2960,11 +2985,14 @@ function () {
reader.onload = function (theFile) {
return function (f) {
// Render thumbnail.
var span = document.createElement('span');
var image = document.createElement('img');
image.src = f.target.result;
image.title = escape(theFile.name);
var span = document.createElement('div');
span.innerHTML = ['<img src="', f.target.result, '" title="', escape(theFile.name), '"/>'].join(''); //document.getElementById('featured-image-drop').insertBefore(span, null);
document.getElementById('featured-image-drop').innerHTML = '';
document.getElementById('featured-image-drop').appendChild(span);
document.getElementById('featured-image-drop').appendChild(image);
};
}(f); // Read in the image file as a data URL.
@ -2977,9 +3005,9 @@ function () {
value: function handleDrop(e) {
e.stopPropagation();
e.preventDefault();
Entry.uploadFiles = e.dataTransfer.files; //console.log(MemberArea.uploadFiles.length);
PostEditor.uploadFiles = e.dataTransfer.files; //console.log(MemberArea.uploadFiles.length);
for (var i = 0, f; f = Entry.uploadFiles[i]; i++) {
for (var i = 0, f; f = PostEditor.uploadFiles[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
@ -3029,12 +3057,12 @@ function () {
}
}]);
return Entry;
return PostEditor;
}();
exports.default = Entry;
Entry.uploadFiles = [];
},{"../tools/utilities/DataUtils":"tools/utilities/DataUtils.jsx","../tools/events/DataEvent":"tools/events/DataEvent.jsx","../tools/effects/Animate":"tools/effects/Animate.jsx","../tasks/EntryTasks":"tasks/EntryTasks.jsx","../tools/events/EditorEvent":"tools/events/EditorEvent.jsx","../tools/utilities/TextEditor":"tools/utilities/TextEditor.jsx","tiny-date-picker":"../../../../node_modules/tiny-date-picker/dist/tiny-date-picker.js","../tools/utilities/DateUtils":"tools/utilities/DateUtils.jsx"}],"controllers/DisplayManager.jsx":[function(require,module,exports) {
exports.default = PostEditor;
PostEditor.uploadFiles = [];
},{"../tools/utilities/DataUtils":"tools/utilities/DataUtils.jsx","../tools/events/DataEvent":"tools/events/DataEvent.jsx","../tools/effects/Animate":"tools/effects/Animate.jsx","../actions/PostActions":"actions/PostActions.jsx","../tools/events/EditorEvent":"tools/events/EditorEvent.jsx","../tools/utilities/TextEditor":"tools/utilities/TextEditor.jsx","tiny-date-picker":"../../../../node_modules/tiny-date-picker/dist/tiny-date-picker.js","../tools/utilities/DateUtils":"tools/utilities/DateUtils.jsx"}],"controllers/DisplayManager.jsx":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
@ -3044,7 +3072,7 @@ exports.default = void 0;
var _DataUtils = _interopRequireWildcard(require("../tools/utilities/DataUtils.jsx"));
var _DashEntry = _interopRequireDefault(require("./DashEntry"));
var _PostEditor = _interopRequireDefault(require("./PostEditor"));
var _Animate = _interopRequireDefault(require("../tools/effects/Animate.jsx"));
@ -3108,9 +3136,8 @@ function () {
this.currentDisplay = ''; //console.log(section+" "+page)
switch (section) {
case 'entries':
this;
this.currentDisplay = new _DashEntry.default();
case 'posts':
this.currentDisplay = new _PostEditor.default();
break;
default:
@ -3129,7 +3156,7 @@ function () {
}();
exports.default = DisplayManager;
},{"../tools/utilities/DataUtils.jsx":"tools/utilities/DataUtils.jsx","./DashEntry":"controllers/DashEntry.jsx","../tools/effects/Animate.jsx":"tools/effects/Animate.jsx"}],"Base.jsx":[function(require,module,exports) {
},{"../tools/utilities/DataUtils.jsx":"tools/utilities/DataUtils.jsx","./PostEditor":"controllers/PostEditor.jsx","../tools/effects/Animate.jsx":"tools/effects/Animate.jsx"}],"Base.jsx":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
@ -3240,7 +3267,7 @@ var parent = module.bundle.parent;
if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
var hostname = "" || location.hostname;
var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
var ws = new WebSocket(protocol + '://' + hostname + ':' + "60962" + '/');
var ws = new WebSocket(protocol + '://' + hostname + ':' + "57869" + '/');
ws.onmessage = function (event) {
var data = JSON.parse(event.data);

File diff suppressed because one or more lines are too long

View file

@ -1,61 +0,0 @@
extends frame
block main-content
-var post_title = ''
-var post_plaintext = ''
-var post_feature = 'null'
-var post_tags = ''
-var post_id = ''
-var post_date = date
if(edit)
-post_title = post.title
-post_plaintext = post.entry_plaintext
-post_feature = feature
-post_tags = post.tags
-post_date = date
#entries-edit-index
#entries-edit-index-wrapper
//h2 EDIT
=post_title
#entry-feature
//label FEATURE IMAGE
if(post_feature == 'null')
#featured-image-drop
| DRAG AND DROP IMAGE OR
label(for="featured-click") CLICK TO CHOOSE
else
#featured-new-image-btn
button#new-upload-link
svg#new-upload-link(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-image-inverted')
#featured-image-drop
img(src=post_feature)
#entry-header.columns
#entry-title.column
textarea(id="entry_title" type='text', name='entry_title' class='post-edit', placeholder='title', required, autofocus)
=post_title
label Date Posted
input(id="entry-date" type="text" value=post_date)
br
#entry-meta.column
textarea(id='entry_tags' type='text', name='entry_tags' class='form-control', placeholder='tags [comma seperated]', autofocus)
=post_tags
include partials/editor
input(id="featured-click" type="file" name="featured-click")
input(id="post-image" type="file" name="post-image")
#edit-content
#edit-content-wrapper
pre
code#edit-text-code(contenteditable="true") !{colored}

View file

@ -1,36 +1,36 @@
#edit-control
button#option-bold.content-editor-btn-text.editor-button(title="bold")
button#edit-bold.content-editor-btn-text.editor-button(title="bold")
| B
button#option-italic.content-editor-btn-text.editor-button(title="italics")
button#edit-italic.content-editor-btn-text.editor-button(title="italics")
| I
button#option-strikethrough.content-editor-btn-text.editor-button(title="strikethrough")
button#edit-strikethrough.content-editor-btn-text.editor-button(title="strikethrough")
| S
button#option-link.content-editor-btn-icon.editor-button(title="insert link")
svg#option-link(viewBox="0 0 20 20" class="icons")
button#edit-link.content-editor-btn-icon.editor-button(title="insert link")
svg#edit-link(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-link')
button#option-header1.content-editor-btn-text.editor-button(title="header 1")
button#edit-header1.content-editor-btn-text.editor-button(title="header 1")
| H1
button#option-header2.content-editor-btn-text.editor-button(title="header 2")
button#edit-header2.content-editor-btn-text.editor-button(title="header 2")
| H2
button#option-header3.content-editor-btn-text.editor-button(title="header 3")
button#edit-header3.content-editor-btn-text.editor-button(title="header 3")
| H3
button#option-image.content-editor-btn-icon.editor-button(title='insert image')
svg#option-image(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-image')
button#edit-image.content-editor-btn-icon.editor-button(title='insert image')
svg#edit-image(viewBox="0 0 20 20" class="icons")
use#edit-image(xlink:href='/dash/assets/images/sprite.svg#entypo-image')
if(edit)
button#option-update.post-sumbit-btn.submit-start.editor-button(data-action='blog-update' data-id=post.id type='submit')
button#edit-update.post-sumbit-btn.submit-start.editor-button(data-action='blog-update' data-id=post.id type='submit')
svg#submit-update(viewBox="0 0 20 20" class="icons")
use#submit-update(xlink:href='/dash/assets/images/sprite.svg#entypo-save' data-action='blog-update' data-id=post.id)
svg#submit-good.icon-hide(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-thumbs-up')
svg#submit-error.icon-hide(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-thumbs-down')
button#option-delete.content-editor-btn-icon.editor-button.submit-delete(for="post-delete" title='delete post')
button#edit-delete.content-editor-btn-icon.editor-button.submit-delete(for="post-delete" title='delete post')
svg#option-delete(viewBox="0 0 20 20" class="icons")
use#option-delete(xlink:href='/dash/assets/images/sprite.svg#entypo-cross')
else
button#option-save.post-sumbit-btn.submit-start.editor-button(data-action='blog-add' type='submit')
button#edit-save.post-sumbit-btn.submit-start.editor-button(data-action='blog-add' type='submit')
svg#submit-save(viewBox="0 0 20 20" class="icons")
use#submit-save(xlink:href='/dash/assets/images/sprite.svg#entypo-plus' data-action='blog-add')

View file

@ -3,10 +3,10 @@
svg(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-cog')
label Settings
a#entries(href="/@/dashboard/entries")
a#entries(href="/@/dashboard/posts")
svg(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-book')
label Entries
label Posts
a#bookmarks(href="")
svg(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-bookmarks')
@ -25,7 +25,7 @@
br
- var index = 0;
- for ( index; index < items.length; index++)
a(href="/@/dashboard/entries/edit/"+items[index].slug id=items[index].uuid)
a(href="/@/dashboard/posts/edit/"+items[index].slug id=items[index].uuid)
= items[index].title
br
br

73
themes/dash/post-edit.pug Normal file
View file

@ -0,0 +1,73 @@
extends frame
block main-content
-var post_title = ''
-var post_plaintext = ''
-var post_feature = 'null'
-var post_tags = ''
-var post_id = ''
-var post_date = date
-var post_status = ['false', 'false', 'false', '']
if(edit)
-post_title = post.title
-post_plaintext = post.plaintext
-post_feature = feature
-post_tags = post.tags
-post_date = date
-post_status = status
#post-edit-index
#post-edit-index-wrapper
//h2 EDIT
=post_title
#post-feature
//label FEATURE IMAGE
if(post_feature == 'null')
#featured-image-drop
| DRAG AND DROP IMAGE OR
label(for="featured-click") CLICK TO CHOOSE
else
#featured-new-image-btn
button#new-upload-link
svg#new-upload-link(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-image-inverted')
#featured-image-drop
img(src=post_feature)
#post-header.columns
#post-title.column
textarea(id="post_title" type='text', name='post_title' class='post-edit', placeholder='title', required, autofocus)
=post_title
label Date Posted
input(id="post-date" type="text" value=post_date)
#post-options
button#option-page.option-inactive.post-option-btn(data-active= status[0])
svg#option-page-icon(viewBox="0 0 20 20" class="icons")
use#option-page-icon(xlink:href='/dash/assets/images/sprite.svg#entypo-pin')
button#option-feature.option-inactive.post-option-btn(data-active= status[1])
svg#option-feature-icon(viewBox="0 0 20 20" class="icons")
use#option-feature-icon(xlink:href='/dash/assets/images/sprite.svg#entypo-star')
button#option-published.option-inactive.post-option-btn(data-active= status[2])
svg#option-published-icon(viewBox="0 0 20 20" class="icons")
use#option-published-icon(xlink:href='/dash/assets/images/sprite.svg#entypo-globe')
button#option-preview.option-inactive(data-active="false")
svg#option-preview-icon(viewBox="0 0 20 20" class="icons")
use#option-preview-icon(xlink:href='/dash/assets/images/sprite.svg#entypo-eye')
#post-meta.column
textarea(id='post_tags' type='text', name='post_tags' class='form-control', placeholder='tags [comma seperated]', autofocus)
=post_tags
include partials/editor
input(id="featured-click" type="file" name="featured-click")
input(id="post-image" type="file" name="post-image")
#edit-post
#edit-post-wrapper
pre
code#edit-post-text(contenteditable="true") !{colored}

View file

@ -1,17 +1,17 @@
extends frame
block main-content
#entries-index
#entries-index-wrapper
#post-index
#post-index-wrapper
h2 Entries
a.add-new-post(href="/@/dashboard/entries/add/new")
a.add-new-post(href="/@/dashboard/posts/add/new")
svg#new-upload-link(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-new-message')
use(xlink:href='/dash/assets/images/sprite.svg#entypo-plus')
| NEW POST
#entries-list
#posts-list
- var index = 0;
- for ( index; index < items.length; index++)
- var date = new Date(items[index].created_at)
a.entry-list-link(href="/@/dashboard/entries/edit/"+items[index].slug id=items[index].uuid)
a.post-list-link(href="/@/dashboard/posts/edit/"+items[index].slug id=items[index].uuid)
= items[index].title
br
span= date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()
@ -21,13 +21,13 @@ block main-content
- if(prev <= 0) prev = page_count
br
a.page-btns(href="/@/dashboard/entries/"+prev)
a.page-btns(href="/@/dashboard/posts/"+prev)
svg(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-chevron-left')
span.paginate= "PAGE "+page_index+" OF "+page_count
a.page-btns(href="/@/dashboard/entries/"+next)
a.page-btns(href="/@/dashboard/posts/"+next)
svg(viewBox="0 0 20 20" class="icons")
use(xlink:href='/dash/assets/images/sprite.svg#entypo-chevron-right')

View file

@ -1,7 +1,7 @@
import DataUtils, { REQUEST_TYPE_GET, REQUEST_TYPE_PUT, REQUEST_TYPE_POST, REQUEST_TYPE_DELETE, CONTENT_TYPE_JSON, CONTENT_TYPE_FORM } from '../tools/utilities/DataUtils';
import * as DataEvent from '../tools/events/DataEvent';
import StringUtils from '../tools/utilities/StringUtils';
class EntryTasks {
class PostActions {
//--------------------------
// constructor
//--------------------------
@ -35,21 +35,25 @@ class EntryTasks {
//var category = document.getElementById("content_category");
//let project_form = document.forms.namedItem("folio-project");
var txt = document.createElement("textarea");
txt.innerHTML = document.getElementById('edit-text-code').innerHTML;
postData.append("title", document.getElementById('entry_title').value);
postData.append('slug', new StringUtils().cleanString(document.getElementById('entry_title').value));
postData.append("entry_plaintext", txt.value);
postData.append("origin_date", document.getElementById('entry-date').value);
postData.append("tags", document.getElementById('entry_tags').value);
txt.innerHTML = document.getElementById('edit-post-text').innerHTML;
postData.append("title", document.getElementById('post_title').value);
postData.append('slug', new StringUtils().cleanString(document.getElementById('post_title').value));
postData.append("post_plaintext", txt.value);
postData.append("origin_date", document.getElementById('post-date').value);
postData.append("tags", document.getElementById('post_tags').value);
postData.append("status_page", document.getElementById('option-page').getAttribute('data-active'));
postData.append("status_feature", document.getElementById('option-feature').getAttribute('data-active'));
postData.append("status_published", document.getElementById('option-published').getAttribute('data-active'));
let postURL;
let postEventType;
if (edit) {
let postID = document.getElementById('option-update').getAttribute('data-id');
postURL = "/api/blog/update/" + postID;
let postID = document.getElementById('edit-update').getAttribute('data-id');
postURL = "/api/post/update/" + postID;
postEventType = DataEvent.POST_UPDATED;
} else {
postURL = "/api/blog/add";
postURL = "/api/post/add";
postEventType = DataEvent.POST_ADDED;
}
self.dataUtils.request(postURL, postEventType, REQUEST_TYPE_POST, CONTENT_TYPE_FORM, postData)
@ -67,9 +71,9 @@ class EntryTasks {
deletePost(){
let self = this;
let postID = document.getElementById('option-update').getAttribute('data-id');
let postID = document.getElementById('edit-update').getAttribute('data-id');
return new Promise(function(resolve, reject){
self.dataUtils.request("/api/blog/delete/" + postID, DataEvent.POST_DELETED, REQUEST_TYPE_POST, CONTENT_TYPE_FORM)
self.dataUtils.request("/api/post/delete/" + postID, DataEvent.POST_DELETED, REQUEST_TYPE_POST, CONTENT_TYPE_FORM)
.then((response) => {
resolve({
response
@ -80,20 +84,10 @@ class EntryTasks {
});
})
})
this.dataUtils.re
}
validateForm() {
let valid = false;
if (this.entry_form.title.value == "" || this.entry_form.price.value == "" || this.entry_form.description == "") {
return valid;
} else {
valid = true;
return valid;
}
//this.dataUtils.re
}
//--------------------------
// event handlers
//--------------------------
}
export { EntryTasks as default }
export { PostActions as default }

View file

@ -7,7 +7,7 @@ import DataUtils, {
CONTENT_TYPE_JSON,
CONTENT_TYPE_FORM
} from '../tools/utilities/DataUtils.jsx';
import Entry from './DashEntry';
import PostEditor from './PostEditor';
import Animate from '../tools/effects/Animate.jsx';
class DisplayManager {
//--------------------------
@ -52,9 +52,8 @@ class DisplayManager {
this.currentDisplay = '';
//console.log(section+" "+page)
switch (section) {
case 'entries':
this
this.currentDisplay = new Entry();
case 'posts':
this.currentDisplay = new PostEditor();
break;
default:

View file

@ -10,14 +10,14 @@ import DataUtils, {
import * as DataEvent from '../tools/events/DataEvent';
import Animate from '../tools/effects/Animate';
import * as Ease from '../tools/effects/Animate';
import EntryTasks from '../tasks/EntryTasks';
import PostActions from '../actions/PostActions';
import * as EditorEvent from '../tools/events/EditorEvent';
import TextEditor from '../tools/utilities/TextEditor';
import TinyDatePicker from 'tiny-date-picker';
import DateUtils from '../tools/utilities/DateUtils';
class Entry {
class PostEditor {
//--------------------------
// constructor
//--------------------------
@ -27,21 +27,18 @@ class Entry {
this.uploadFiles;
this.dataUtils = new DataUtils();
this.dateUtils = new DateUtils();
if (document.getElementById('edit-text-code')) {
this.editor = new TextEditor(document.getElementById('edit-text-code'),
if (document.getElementById('edit-post-text')) {
this.editor = new TextEditor(document.getElementById('edit-post-text'),
document.getElementById('header').offsetHeight +
document.getElementById('entry-header').offsetHeight +
document.getElementById('entry-feature').offsetHeight
document.getElementById('post-header').offsetHeight +
document.getElementById('post-feature').offsetHeight
);
this.editor.addListener(EditorEvent.EDITOR_DELETE, f => this.handleEditorOptions(EditorEvent.EDITOR_DELETE), false)
this.editor.addListener(EditorEvent.EDITOR_UPLOAD_POST_IMAGE, f => this.handleEditorOptions(EditorEvent.EDITOR_UPLOAD_POST_IMAGE), false)
this.editor.addListener(EditorEvent.EDITOR_UPDATE, f => this.handleEditorOptions(EditorEvent.EDITOR_UPDATE), false)
this.editor.addListener(EditorEvent.EDITOR_SAVE, f => this.handleEditorOptions(EditorEvent.EDITOR_SAVE), false)
document.getElementById('post-image').addEventListener('change', e => this.handlePostImageAdd(e), false);
TinyDatePicker(document.getElementById('entry-date'), {
TinyDatePicker(document.getElementById('post-date'), {
mode: 'dp-below',
format(date) {
//return date;
@ -89,12 +86,40 @@ class Entry {
document.getElementById('featured-click').click();
})
}
var optionButtons = document.querySelectorAll('.post-option-btn');
for (var i = 0, length = optionButtons.length; i < length; i++) {
optionButtons[i].addEventListener('click', e => this.handlePostOptions(e), false);
}
}
}
//--------------------------
// event handlers
//--------------------------
handlePostOptions(e) {
let currentOption;
switch (e.target.id) {
case "option-page-icon":
case "option-page":
currentOption = document.getElementById('option-page');
break;
case "option-feature-icon":
case "option-feature":
currentOption = document.getElementById('option-feature');
break;
case "option-published-icon":
case "option-published":
currentOption = document.getElementById('option-published');
break;
}
let active = currentOption.getAttribute('data-active');
(active == 'false') ? currentOption.setAttribute('data-active', 'true') : currentOption.setAttribute('data-active', 'false')
}
handleEditorOptions(e) {
switch (e) {
case EditorEvent.EDITOR_SAVE:
@ -102,11 +127,11 @@ class Entry {
let edit = false;
if (e == EditorEvent.EDITOR_UPDATE)
edit = true;
new EntryTasks().submitPost(edit, Entry.uploadFiles).then((response) => {
new PostActions().submitPost(edit, PostEditor.uploadFiles).then((response) => {
let note = JSON.parse(response['response']['request'].response);
this.editor.notify(note.message, note.postID);
if (note.message == DataEvent.POST_ADDED)
window.location = "/@/dashboard/entries/edit/" + note.postID;
window.location = "/@/dashboard/posts/edit/" + note.postID;
}).catch((err) => {
console.log(err)
});
@ -115,9 +140,9 @@ class Entry {
case EditorEvent.EDITOR_DELETE:
if (confirm('Aye! You know you\'re deleting this post, right?')) {
new EntryTasks().deletePost().then((response) => {
new PostActions().deletePost().then((response) => {
let note = JSON.parse(response['response']['request'].response);
window.location = "/@/dashboard/entries/";
window.location = "/@/dashboard/posts/";
//console.log(note);
}).catch((err) => {
console.log(err)
@ -142,8 +167,8 @@ class Entry {
e.stopPropagation();
e.preventDefault();
//console.log("IMAGES " + e.target.files);
Entry.uploadFiles = e.target.files;
for (var i = 0, f; f = Entry.uploadFiles[i]; i++) {
PostEditor.uploadFiles = e.target.files;
for (var i = 0, f; f = PostEditor.uploadFiles[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
@ -153,7 +178,10 @@ class Entry {
reader.onload = (function (theFile) {
return function (f) {
// Render thumbnail.
var span = document.createElement('span');
var image = document.createElement('img');
image.src = f.target.result;
image.title = escape(theFile.name);
var span = document.createElement('div');
span.innerHTML = [
'<img src="',
f.target.result,
@ -163,7 +191,7 @@ class Entry {
].join('');
//document.getElementById('featured-image-drop').insertBefore(span, null);
document.getElementById('featured-image-drop').innerHTML = '';
document.getElementById('featured-image-drop').appendChild(span);
document.getElementById('featured-image-drop').appendChild(image);
};
})(f);
// Read in the image file as a data URL.
@ -175,9 +203,9 @@ class Entry {
handleDrop(e) {
e.stopPropagation();
e.preventDefault();
Entry.uploadFiles = e.dataTransfer.files;
PostEditor.uploadFiles = e.dataTransfer.files;
//console.log(MemberArea.uploadFiles.length);
for (var i = 0, f; f = Entry.uploadFiles[i]; i++) {
for (var i = 0, f; f = PostEditor.uploadFiles[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
@ -228,8 +256,8 @@ class Entry {
})
}
}
Entry.uploadFiles = [];
PostEditor.uploadFiles = [];
export {
Entry as
PostEditor as
default
}

View file

@ -11,7 +11,7 @@ import ProjectFolio from '../tasks/ProjectFolio';
import TextEffects from '../tools/effects/TextEffects';
import Animate from '../tools/effects/Animate';
import * as Ease from '../tools/effects/Animate';
import DisplayAdminBlog from './DashEntry'
import DisplayAdminBlog from './PostEditor'
import DisplayAdminFipamo from './DisplayAdminFipamo';
export default class DisplayAdmin {

View file

@ -58,7 +58,6 @@ class TextEditor extends EventEmitter {
}
})
}
refresh() {
var caret = position(this.textEditor).pos;
var spiffed = hljs.highlight('markdown', this.textEditor.innerText).value;
@ -73,13 +72,13 @@ class TextEditor extends EventEmitter {
case DataEvent.POST_UPDATED:
document.getElementById('submit-update').classList.add('icon-hide');
document.getElementById('submit-good').classList.remove('icon-hide');
document.getElementById('option-update').classList.remove('submit-start');
document.getElementById('option-update').classList.add('submit-cool');
document.getElementById('edit-update').classList.remove('submit-start');
document.getElementById('edit-update').classList.add('submit-cool');
setTimeout(f => {
document.getElementById('submit-update').classList.remove('icon-hide');
document.getElementById('submit-good').classList.add('icon-hide');
document.getElementById('option-update').classList.add('submit-start');
document.getElementById('option-update').classList.remove('submit-cool');
document.getElementById('edit-update').classList.add('submit-start');
document.getElementById('edit-update').classList.remove('submit-cool');
}, 2000);
break;
@ -115,40 +114,40 @@ class TextEditor extends EventEmitter {
pulled = sel.getRangeAt(0).toString();
range.deleteContents();
switch (e.target.id) {
case "option-bold":
case "edit-bold":
range.insertNode(document.createTextNode("**" + pulled + "**"));
break;
case "option-italic":
case "edit-italic":
range.insertNode(document.createTextNode("*" + pulled + "*"));
break;
case "option-strikethrough":
case "edit-strikethrough":
range.insertNode(document.createTextNode("<del>" + pulled + "</del>"));
break;
case "option-header1":
case "edit-header1":
range.insertNode(document.createTextNode("# " + pulled));
break;
case "option-header2":
case "edit-header2":
range.insertNode(document.createTextNode("## " + pulled));
break;
case "option-header3":
case "edit-header3":
range.insertNode(document.createTextNode("### " + pulled));
break;
case "option-image":
case "edit-image":
this.caretPos = position(this.textEditor).pos;
this.emitEvent(EditorEvent.EDITOR_UPLOAD_POST_IMAGE);
break;
case "submit-save":
case "option-save":
case "edit-save":
this.emitEvent(EditorEvent.EDITOR_SAVE);
break;
case "submit-update":
case "option-update":
case "edit-update":
this.emitEvent(EditorEvent.EDITOR_UPDATE);
break
case "option-link":
case "edit-link":
range.insertNode(document.createTextNode("[" + pulled + "](PASTE URL HERE)"));
break;
case "option-delete":
case "edit-delete":
this.emitEvent(EditorEvent.EDITOR_DELETE);
break
default:

View file

@ -93,7 +93,7 @@
-------------------------------
**/
@import 'main/_entries'
@import 'main/_posts'
/**
-------------------------------

View file

@ -15,7 +15,7 @@
button
background $secondary
width 10%
height 35px
height 39px
object-transitions(0.3s)
margin 0
border-radius 0
@ -92,11 +92,3 @@
text-decoration line-through
font-style italic
#edit-content-wrapper
width 98%
max-width 900px
margin 0 auto
border-radius 5px
code
border-radius 5px

View file

@ -1,9 +1,9 @@
#entries-index
#post-index
width 100%
max-width 900px
margin 0 auto
#entries-index-wrapper
#post-index-wrapper
padding 0.75rem
a
@ -16,8 +16,9 @@
border-radius 3px
padding 3px
color $white
width 110px
margin-bottom: 10px
width 115px
text-align center
margin-bottom 10px
svg
display inline-block
@ -33,10 +34,10 @@
&:hover
background $primary - 5%
#entries-list
#posts-list
color $white
a.entry-list-link
a.post-list-link
display inline-block
vertical-align top
padding 3px
@ -50,29 +51,29 @@
font-size 0.7em
font-family 'Apercu-Mono'
#entries-edit-index
#post-edit-index
width 100%
#entries-edit-index-wrapper
#post-edit-index-wrapper
width 100%
#entry-header
#post-header
// width 100%
max-width 900px
margin 0 auto
padding 0.75rem
#entry-title
#entry_title
#post-title
#post_title
background $primary - 4%
font-family 'Apercu'
width 100%
width 97.6%
height 140px
font-size 1.5em
color $white
padding 5px
#entry-date
#post-date
background $primary - 10%
border-radius 0 3px 3px 0
width 105px
@ -90,8 +91,48 @@
color $secondary
line-height 30px
#entry-meta
#entry_tags
#post-options
display inline-block
vertical-align top
width 49%
padding 0 0 0 3px
button:nth-child(1)
border-radius 3px 0 0 3px
button:nth-child(4)
border-radius 0 3px 3px 0
button
width 25%
height 39px
object-transitions(0.3s)
margin 0
border-radius 0
display inline-block
vertical-align top
text-align center
button[data-active='false']
background $secondary
svg
fill $primary
button[data-active='true']
background $tertiary
svg
fill $tertiary - 70%
//.option-inactive
//.option-active
#post-meta
#post_tags
background $primary - 4%
font-family 'Apercu'
width 97.6%
@ -102,7 +143,7 @@
#featured-click, #post-image
display none
#entry-feature
#post-feature
width 100%
#featured-image-drop
@ -121,6 +162,8 @@
img
width 100%
margin 0
padding 0
#featured-new-image-btn
position absolute
@ -133,21 +176,31 @@
svg
fill $highlight
#edit-content
#edit-post
width 100%
max-width 900px
margin 0 auto
#edit-content-wrapper
#edit-post-wrapper
width 98%
max-width 900px
margin 0 auto
border-radius 5px
background $primary - 10%
pre
code
// font-family 'Apercu-Mono'
padding 5px
border-radius 5px
line-height 1.6em
font-size 1.25em
color $editorPrimary
word-wrap normal
white-space pre-wrap
line-break normal
display inline-block
width 100%
// TINY DATE
.dp-modal