Migrate to mithril.js
This commit is contained in:
83
myapp/templates/public/domains/page/page.js
Normal file
83
myapp/templates/public/domains/page/page.js
Normal file
@@ -0,0 +1,83 @@
|
||||
function Page() {
|
||||
let data = {
|
||||
page: null,
|
||||
panels: {
|
||||
standart: {
|
||||
visible: false
|
||||
},
|
||||
},
|
||||
};
|
||||
function breadcrumbs_render() {
|
||||
let result = m('ul', {class: 'breadcrumb mt-3'}, [
|
||||
m('li', {class: 'breadcrumb-item'}, m(m.route.Link, {href: '/'}, m('i', {class: 'fa fa-home'}))),
|
||||
m('li', {class: 'breadcrumb-item'}, m(m.route.Link, {href: '/pages'}, 'Список статей')),
|
||||
m('li', {class: 'breadcrumb-item active'}, m.trust(data.page.title)),
|
||||
]);
|
||||
return result;
|
||||
};
|
||||
function page_get(id) {
|
||||
m.request({
|
||||
url: '/api',
|
||||
method: "POST",
|
||||
body: {
|
||||
"jsonrpc": "2.0",
|
||||
"method": 'page',
|
||||
"params": {
|
||||
"id": id,
|
||||
"fields": ["id", "title", "body", "parent_id", "created", "updated", "tags"]
|
||||
},
|
||||
"id": 1
|
||||
}
|
||||
}).then(
|
||||
function(response) {
|
||||
if ('result' in response) {
|
||||
data.page = response['result'];
|
||||
document.title = `${data.page.title} - ${SETTINGS.TITLE}`;
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
function page_prev() {
|
||||
if (data.page.parent_id) {
|
||||
return m(m.route.Link, {class: "btn btn-outline-secondary", href: `/page/${data.page.parent_id}`, title: "Список статей"}, m('i', {class: 'fa fa-chevron-left'}));
|
||||
} else {
|
||||
return m(m.route.Link, {class: "btn btn-outline-secondary", href: "/pages", title: "Список статей"}, m('i', {class: 'fa fa-chevron-left'}));
|
||||
}
|
||||
};
|
||||
return {
|
||||
oninit: function(vnode) {
|
||||
console.log('Page.oninit');
|
||||
page_get(vnode.attrs.id);
|
||||
},
|
||||
onupdate: function(vnode) {
|
||||
console.log('Page.onupdate');
|
||||
if (data.page!=null) {
|
||||
if (data.page.id.toString()!==vnode.attrs.id) {
|
||||
page_get(vnode.attrs.id);
|
||||
}
|
||||
}
|
||||
},
|
||||
view: function(vnode) {
|
||||
console.log('Page.view');
|
||||
let result = [];
|
||||
if (data.page!=null) {
|
||||
result.push(
|
||||
breadcrumbs_render(),
|
||||
m('div', {class: 'row'},
|
||||
m('div', {class: 'col h1 py-1'}, [
|
||||
m('div', {class: "btn-group btn-group-lg me-2"}, [
|
||||
page_prev(),
|
||||
m('button', {class: 'btn btn-outline-secondary', title: 'Инструменты', onclick: function() {panel_show(data.panels.standart)}}, m('i', {class: 'fa fa-cog'})),
|
||||
]),
|
||||
m.trust(data.page.title),
|
||||
])
|
||||
),
|
||||
m('hr'),
|
||||
);
|
||||
result.push(m.trust(data.page.body));
|
||||
result.push(breadcrumbs_render());
|
||||
};
|
||||
return result
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user