globalThis.Blog = {
content: `
`,
action: function(){
setTimeout(function(){
document.getElementById('app-content-title').innerText = "Data Blog";
table('blog')
.wrap('')
.modal('xl')
.title('Blog')
.equals(['kode'])
.select(['kode', 'judul', 'slug', 'kategori', 'sub','user', 'deskripsi'])
.createForm({
kode: {
form: 'input',
type: 'hidden',
placeholder: 'Inputkan Nama',
title: 'Kode'
},
judul: {
form: 'input',
type: 'text',
placeholder: 'Inputkan judul',
title: 'Judul'
},
slug: {
form: 'input',
type: 'slug',
placeholder: 'Inputkan slug',
from: 'judul',
title: 'Slug'
},
kategori: {
form: 'input',
type: 'select',
table: 'kategori_blog',
view: ['kode', 'nama'],
value: 'kode',
placeholder: 'Inputkan judul',
title: 'Kategori'
},
sub: {
form: 'input',
type: 'select',
table: 'subkategori',
view: ['kode', 'nama'],
value: 'kode',
relation: 'kategori',
relationId: 'kategori',
placeholder: 'Inputkan judul',
title: 'Sub Kategori'
},
deskripsi: {
form: 'input',
type: 'text',
placeholder: 'deskripsi singkat artikel untuk seo',
title: 'Deskripsi Singkat'
},
artikel: {
form: 'input',
type: 'note',
placeholder: 'Inputkan hp',
title: 'Artikel'
},
user: {
form: 'input',
type: 'hidden',
placeholder: 'Inputkan hp',
title: 'Artikel',
default: user.username
}
})
.displayNone([0])
.row({
kode: 'Kode',
})
.addRow({
action: {
key: ['kode'],
position: 'center',
title: 'Upload Cover',
id: 'action-{{kode}}',
template: `
`,
load: function(a, gs){
const file = document.querySelector('#action-'+a.kode)
file.addEventListener('change', function(){
var file = this.files[0];
document.getElementById('detail-'+a.kode).style.display = 'block';
document.getElementById('detail-'+a.kode).innerHTML = `
nama file : ${file.name}
ukuran : ${file.size / 1000}kb
type file : ${file.type}kb
`;
const reader = new FileReader();
reader.addEventListener("load", function () {
var base64 = reader.result;
var rendr = base64.split("base64,");
rendr = rendr[1];
rendr = rendr.match(/.{1,150000}/g);
var length = rendr.length;
var start = 0;
document.getElementById('upload-file-s-'+a.kode).addEventListener('click', function(){
document.getElementById('detail-'+a.kode).style.display = 'none';
document.getElementById('upload-file-'+a.kode).style.display = 'block';
uploadProsses()
}, false)
function uploadProsses(){
if (start < length) {
document.getElementById('upload-file-'+a.kode).innerText = Math.round(((start+1) / length) * 100)+'%';
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
ok: rendr[start],
start: start,
tipe: 'upload'
},
success: function(e){
console.log(e.length)
start += 1;
uploadProsses();
}
})
}else{
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
tipe: 'assets/upload/blog/'+a.kode+'.jpg'
},
success: function(e){
console.log('saved')
document.getElementById('images-'+a.kode).style.backgroundImage = 'url("assets/upload/blog/'+a.kode+'.jpg?v='+Date.now()+'")';
document.getElementById('detail-'+a.kode).style.display = 'none';
document.getElementById('upload-file-'+a.kode).style.display = 'none';
}
})
}
}
}, false);
if (file) {
reader.readAsDataURL(file);
}
}, false)
}
},
one: {
key: ['kode', 'judul', 'slug', 'kategori', 'sub', 'user'],
position: 'center',
title: 'Detail Blog',
id: 'action-{{kode}}',
template: `
Judul | : | {{judul}} |
link share | : | blog/{{slug}} |
Kategeori | : | {{kategori}} |
Sub Kategori | : | {{sub}} |
Pengunjung | : | 0 people |
User | : | {{user}} |
`
}
})
.onupdate(function(a, b, c){
globalThis.kodeFile = b.kode;
document.getElementById('slug').addEventListener('focus',function(){
var s = this;
setTimeout(function(){
s.value = s.value.replace(/\//g, '').replace(/\?/g, '');
},10)
})
var form = document.getElementById(a.data.formId+a.data.id)
var node1 = form.children[0];
if(document.getElementById('images-load') == null){
var formImage = div().id('images-load').class('col-12')
formImage.child(
div().id('detail-er').html(`
`)
)
formImage.child(
div().id('upload-file-er')
)
formImage.child(
div().class('form-group-2')
.child(
el('label').text('gambar')
)
.child(
el('button').text('chose file from history').class('btn btn-sm btn-primary').click(function(){
globalThis['container-image'].parent.style.display = "block";
})
)
.child(
el('input').type('file').hold('gambar').id('load-images')
.change(function(){
var kode = document.getElementById('kode').value;
var file = this.files[0];
document.getElementById('detail-er').innerHTML = `
nama file : ${file.name}
ukuran : ${file.size / 1000}kb
type file : ${file.type}kb
`;
const reader = new FileReader();
reader.addEventListener("load", function () {
var base64 = reader.result;
var rendr = base64.split("base64,");
rendr = rendr[1];
rendr = rendr.match(/.{1,150000}/g);
var length = rendr.length;
var start = 0;
uploadProsses()
function uploadProsses(){
if (start < length) {
document.getElementById('upload-file-er').innerText = Math.round(((start+1) / length) * 100)+'%';
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
ok: rendr[start],
start: start,
tipe: 'upload'
},
success: function(e){
console.log(e.length)
start += 1;
uploadProsses();
}
})
}else{
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
tipe: 'assets/upload/blog/'+kode+'.jpg'
},
success: function(e){
var imgUrl = 'assets/upload/blog/'+kode+'.jpg?v='+Date.now();
document.getElementById('detail-er').innerHTML = `
`;
}
})
}
}
}, false);
if (file) {
reader.readAsDataURL(file);
}
})
)
)
form.insertBefore(formImage.get(), node1);
}
function decodeHtml(text) {
return text
.replace(/&/g, '&')
.replace(/</g , '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g,"'");
}
c.table('blog')
.condition([
{opsi: '', data: ['kode', '=', `'${b.kode}'`]}
])
.get(function(a){
var s = binary2text(JSON.parse(decodeHtml(a[0].artikel)).kontent);
$('#artikel').summernote('code', s);
})
setTimeout(function(){
},1000)
})
.oncreate(function(news){
var form = document.getElementById(news.data.formId+news.data.id)
var node1 = form.children[0];
document.getElementById('slug').addEventListener('focus',function(){
var s = this;
setTimeout(function(){
s.value = s.value.replace(/\//g, '').replace(/\?/g, '');
},10)
})
if(document.getElementById('images-load') == null){
var formImage = div().id('images-load').class('col-12')
formImage.child(
div().id('detail-er')
)
formImage.child(
div().id('upload-file-er')
)
formImage.child(
div().class('form-group-2')
.child(
el('label').text('gambar')
)
.child(
el('button').text('chose file from history').class('btn btn-sm btn-primary').click(function(){
globalThis['container-image'].parent.style.display = "block";
})
)
.child(
el('input').type('file').hold('gambar').id('load-images')
.change(function(){
var kode = document.getElementById('kode').value;
var file = this.files[0];
document.getElementById('detail-er').innerHTML = `
nama file : ${file.name}
ukuran : ${file.size / 1000}kb
type file : ${file.type}kb
`;
const reader = new FileReader();
reader.addEventListener("load", function () {
var base64 = reader.result;
var rendr = base64.split("base64,");
rendr = rendr[1];
rendr = rendr.match(/.{1,150000}/g);
var length = rendr.length;
var start = 0;
uploadProsses()
function uploadProsses(){
if (start < length) {
document.getElementById('upload-file-er').innerText = Math.round(((start+1) / length) * 100)+'%';
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
ok: rendr[start],
start: start,
tipe: 'upload'
},
success: function(e){
console.log(e.length)
start += 1;
uploadProsses();
}
})
}else{
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
tipe: 'assets/upload/blog/'+kode+'.jpg'
},
success: function(e){
var imgUrl = 'assets/upload/blog/'+kode+'.jpg?v='+Date.now();
document.getElementById('detail-er').innerHTML = `
`;
}
})
}
}
}, false);
if (file) {
reader.readAsDataURL(file);
}
})
)
)
form.insertBefore(formImage.get(), node1);
}
var autocode = 'blog-'+user.id+'-'+tanggal().normal;
var s = new db;
s.table('blog')
.condition([
{opsi: '', data: ['kode', 'LIKE', `"${autocode}%"`]}
])
.select(" count(*) as num ")
.get(function(r){
document.getElementById('kode').value = autocode+'-'+(Number(r[0].num) + 1);
globalThis.kodeFile = autocode+'-'+(Number(r[0].num) + 1);
})
})
.onsave(function(tab){
tab.load();
})
.afterload(function(w,t,k){
$.ajax({
url: '/get-file',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
dir: 'assets/upload/blog/',
},
success: function(e){
k()
e = JSON.parse(e);
var d = Object.keys(e);
var imagechoice = div();
console.log(d)
for(const y of d){
if (e[y] != undefined) {
imagechoice.child(
el('img').src('/assets/upload/blog/'+e[y])
.click(function(){
globalThis['container-image'].parent.style.display = "none";
fetch(this.src)
.then(res => res.blob())
.then(blob => {
console.log(blob)
var file = new File([blob], 'file.jpg');
var kode = globalThis.kodeFile;
document.getElementById('detail-er').innerHTML = `
nama file : ${file.name}
ukuran : ${file.size / 1000}kb
type file : ${file.type}kb
`;
const reader = new FileReader();
reader.addEventListener("load", function () {
var base64 = reader.result;
var rendr = base64.split("base64,");
rendr = rendr[1];
rendr = rendr.match(/.{1,150000}/g);
var length = rendr.length;
var start = 0;
uploadProsses()
function uploadProsses(){
if (start < length) {
document.getElementById('upload-file-er').innerText = Math.round(((start+1) / length) * 100)+'%';
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
ok: rendr[start],
start: start,
tipe: 'upload'
},
success: function(e){
console.log(e.length)
start += 1;
uploadProsses();
}
})
}else{
$.ajax({
url: '/admin/upload',
method: 'POST',
dataType: 'text',
data: {
_token: $('meta[name=csrf-token]').attr('content'),
tipe: 'assets/upload/blog/'+kode+'.jpg'
},
success: function(e){
var imgUrl = 'assets/upload/blog/'+kode+'.jpg?v='+Date.now();
document.getElementById('detail-er').innerHTML = `
`;
}
})
}
}
}, false);
if (file) {
reader.readAsDataURL(file);
}
})
})
)
}
}
var l = div()
.class("container-image").id('container-image')
.child(imagechoice)
domp('image-choice', l)
}
})
})
.order('dibuat', 'DESC')
.load()
})
}
}