Migrate to mithril.js
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
let Footer = {
|
||||
view: function() {
|
||||
return {tag: '<', children: `<div class="row mt-3 py-3 bg-light">
|
||||
<div class="col-md-1"></div>
|
||||
<div class="col-md-10">
|
||||
© <a href="https://specialistoff.net/" target="_blank">RemiZOffAlex</a>
|
||||
</div>
|
||||
<div class="col-md-1"></div>
|
||||
</div>`}
|
||||
}
|
||||
};
|
||||
3
myapp/templates/public/components/inc.j2
Normal file
3
myapp/templates/public/components/inc.j2
Normal file
@@ -0,0 +1,3 @@
|
||||
{% include '/public/components/menu-general.js' %}
|
||||
{% include '/public/components/pages.js' %}
|
||||
{% include '/public/components/users.js' %}
|
||||
21
myapp/templates/public/components/menu-general.js
Normal file
21
myapp/templates/public/components/menu-general.js
Normal file
@@ -0,0 +1,21 @@
|
||||
let MenuGeneral = {
|
||||
oninit: function(vnode) {
|
||||
document.title = SETTINGS.TITLE;
|
||||
},
|
||||
view: function(vnode) {
|
||||
result = [];
|
||||
result.push(
|
||||
m('div', {class: 'row'},
|
||||
m('div', {class: 'col py-2'}, [
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary', href: '/'}, m('i', {class: 'fa fa-home'})),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/pages'}, 'Статьи'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/tags'}, 'Метки'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/users'}, 'Пользователи'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-secondary border-0', href: '/api/browse'}, 'API JSON-RPC'),
|
||||
m(m.route.Link, {class: 'btn btn-outline-success float-end', href: '/login'}, m('i', {class: 'fa fa-sign-in'})),
|
||||
])
|
||||
)
|
||||
)
|
||||
return result;
|
||||
}
|
||||
};
|
||||
57
myapp/templates/public/components/pages.js
Normal file
57
myapp/templates/public/components/pages.js
Normal file
@@ -0,0 +1,57 @@
|
||||
function ComponentPages() {
|
||||
let data = {
|
||||
pages: null,
|
||||
};
|
||||
function page_render(page, pageIdx) {
|
||||
let odd = '';
|
||||
if (pageIdx % 2) {
|
||||
odd = ' bg-light'
|
||||
};
|
||||
let tags = page.tags.map(
|
||||
function(tag, tagIdx) {
|
||||
return [
|
||||
m('i', {class: "fa fa-tag"}),
|
||||
{tag: '<', children: ' '},
|
||||
m(m.route.Link, {class: "font-monospace text-decoration-none", href: `/tag/${tag.id}`}, tag.name),
|
||||
{tag: '<', children: ' '},
|
||||
]
|
||||
}
|
||||
);
|
||||
|
||||
return m('div', {class: 'row'},
|
||||
m('div', {class: "col py-2" + odd}, [
|
||||
m(m.route.Link, {class: "text-decoration-none", href: `/page/${page.id}`}, m.trust(page.title)),
|
||||
m('div', {class: 'row'},
|
||||
m('div', {class: 'col text-muted'},
|
||||
m('small', [...tags])
|
||||
)
|
||||
)
|
||||
])
|
||||
)
|
||||
};
|
||||
function pages_render() {
|
||||
return data.pages.map(page_render);
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
console.log('ComponentPages.oninit');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
onupdate: function(vnode) {
|
||||
console.log('ComponentPages.onupdate');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
view: function() {
|
||||
console.log('ComponentPages.view');
|
||||
if (data.pages!=null) {
|
||||
let result = [];
|
||||
result.push(pages_render());
|
||||
return result;
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
41
myapp/templates/public/components/users.js
Normal file
41
myapp/templates/public/components/users.js
Normal file
@@ -0,0 +1,41 @@
|
||||
function ComponentUsers() {
|
||||
let data = {
|
||||
users: null,
|
||||
};
|
||||
function user_render(user, userIdx) {
|
||||
let odd = '';
|
||||
if (userIdx % 2) {
|
||||
odd = ' bg-light'
|
||||
};
|
||||
return m('div', {class: 'row'},
|
||||
m('div', {class: "col py-2" + odd}, [
|
||||
m(m.route.Link, {class: "text-decoration-none", href: `/user/${user.id}`}, user.name),
|
||||
])
|
||||
)
|
||||
};
|
||||
function users_render() {
|
||||
return data.users.map(user_render);
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
console.log('ComponentUsers.oninit');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
onupdate: function(vnode) {
|
||||
console.log('ComponentUsers.onupdate');
|
||||
for (let key in vnode.attrs){
|
||||
data[key] = vnode.attrs[key];
|
||||
};
|
||||
},
|
||||
view: function() {
|
||||
console.log('ComponentUsers.view');
|
||||
if (data.users!=null) {
|
||||
let result = [];
|
||||
result.push(users_render());
|
||||
return result;
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user