Merge branch 'mithril' (2017/10/06)

This commit is contained in:
2017-10-06 10:45:28 +07:00
23 changed files with 4207 additions and 1524 deletions

View File

@@ -16,7 +16,6 @@ class Api
public function posts($args = ['id' => '1'])
{
$get = [];
$get['count'] = 0;
if ($args['id'] == 3) {
$get['data'] = $this->model->showJoin();
@@ -42,10 +41,6 @@ class Api
$temp_data = [];
}
if ($get['data'] != false) {
$get['count'] = count($get['data']);
}
header('Content-Type: application/json');
echo json_encode($get);
}

View File

@@ -291,6 +291,12 @@ class Posts
Redirect::to('/posts/category');
}
} else {
// Calculate delay by character
// 60 characters for 5 secs
// 1 character for 84 ms
$length = strlen($args['content']);
$args['delay'] = $length * 84;
if ($this->model->entry($args)) {
Session::flash('info', 'Data berhasil diunggah');
Redirect::to('/');
@@ -348,6 +354,12 @@ class Posts
}
}
// Calculate delay by character
// 60 characters for 5 secs
// 1 character for 84 ms
$length = strlen($args['content']);
$args['delay'] = $length * 84;
if ($this->model->update($args, $id)) {
Session::flash('info', 'Data berhasil diperbarui');
Redirect::to('/');

View File

@@ -122,7 +122,7 @@ class Post extends \Core\Model
try {
$db = static::connectDB();
$sql = "SELECT pengumuman.id, kategori.category, kategori.background, kategori.foreground, date(pengumuman.valid_at) as valid_at, date(pengumuman.expired_at) as expired_at, pengumuman.creator, pengumuman.editor, pengumuman.content, pengumuman.status FROM pengumuman INNER JOIN kategori ON pengumuman.category=kategori.id";
$sql = "SELECT pengumuman.id, kategori.category, kategori.background, kategori.foreground, date(pengumuman.valid_at) as valid_at, date(pengumuman.expired_at) as expired_at, pengumuman.creator, pengumuman.editor, pengumuman.content, pengumuman.status, pengumuman.delay FROM pengumuman INNER JOIN kategori ON pengumuman.category=kategori.id";
if ($conditions) {
$sql .= " WHERE";

View File

@@ -23,7 +23,7 @@
{% block body %}
<main class="documentation">
<div id="nouser" style="text-align:left;width:100%;">
<div style="background:#fff;text-align:left;width:100vw;padding:10vh 0 0;">
<div style="background:#fff;text-align:left;width:100%;padding:10vh 0 0;">
<div id='navigasi'>
</div>
<div id="mit">
@@ -31,198 +31,4 @@
</div>
</div>
</main>
<script>
var root = document.getElementById('mit')
var Nav = {
view: function() {
return m('.filter.flex.six-600.four.grow', [
m('.sixth-600.none', ''),
m('div', m('a[href=/].navy', {
oncreate: m.route.link,
style: 'font-size:smaller;'
}, 'Semua')),
m('div', m('a[href=/active].navy', {
oncreate: m.route.link,
style: 'font-size:smaller;'
}, 'Aktif')),
m('div', m('a[href=/soon].navy', {
oncreate: m.route.link,
style: 'font-size:smaller;'
}, 'Belum Aktif')),
m('div', m('a[href=/inactive].navy', {
oncreate: m.route.link,
style: 'font-size:smaller;'
}, 'Nonaktif')),
m('.sixth-600.none', '')
])
}
}
var Slider = {
view: function() {
return m('#slidr-div', Post.list.map(function(post) {
return m('div[data-slidr=' + post.id + ']', {
style: 'color:' + post.foreground + ';background-color:' + post.background + ';width:100vw;height:100vh;'
}, m('div', {style: 'padding:15vh 0;'}, m.trust(marked(post.content))))
}))
}
}
var Post = {
list: [],
curStatus: 3,
interval: 10000,
loadList: function() {
return m.request({
method: 'GET',
url: '/api/posts/' + Post.curStatus,
withCredentials: true
})
.then(function(result) {
Post.list = result.data
console.log('cek')
})
}
}
var Component = {
view: function() {
return m('.bungkus.flex.four-900.full.card-wrapper', {style:'padding:0 .6em;'}, [
m('a.fourth-900.half-600.card.box.new', {href:'/posts/entry'}, m('i.fa.fa-plus.fa-3x', '')),
Post.list.map(function(post) {
return m('.fourth-900.half-600.card.box', {style:'background-color:' + post.background}, [
m('span.stack', {style:'font-size:smaller;color:rgba(17,17,17,.4);margin-bottom:.6em;'}, post.valid_at + ' - ' + post.expired_at),
m('span.stack', {style:'color:' + post.foreground}, m.trust(marked(post.content))),
m('form', {method:'post',action:'/'}, m('footer.flex.full.grow', (post.status != 0) ? [
m('.half-900', m('a.button.full', {href: '/posts/edit/' + post.id}, [
m('i.fa.fa-edit.fa-fw', ''),
m('span', {style: 'font-size:smaller'}, 'Ubah')
])),
m('.half-900', (post.status == 1) ? [
m('input', {type: 'hidden', name: 'id'}, post.id),
m('input', {type: 'hidden', name: 'status'}, '0'),
m('input', {type: 'hidden', name: '_method'}, 'delete'),
m('input', {type: 'hidden', name: '_token'}, 'abc123'),
m('button.error.full', {type: 'submit'}, [
m('i.fa.fa-times-circle-o.fa-fw', ''),
m('span', {style: 'font-size:smaller'}, 'Matikan')
])
] : [
m('input', {type: 'hidden', name: 'id'}, post.id),
m('input', {type: 'hidden', name: 'valid_at'}, '##date##'),
m('input', {type: 'hidden', name: 'status'}, '1'),
m('input', {type: 'hidden', name: '_method'}, 'put'),
m('input', {type: 'hidden', name: '_token'}, 'abc123'),
m('button.success.full', {type: 'submit'}, [
m('i.fa.fa-check.fa-fw', ''),
m('span', {style: 'font-size:smaller;'}, 'Aktifkan')
])
])
] : m('.half-900', m('span.button.pseudo.full', {style: 'color:rgba(17,17,17,.3);'}, 'Nonaktif'))))
])
})
])
}
}
var PostNoUser = {
oninit: function() {
Post.curStatus = 1
Post.loadList()
setInterval(function() {
Post.loadList()
}, Post.interval)
},
view: function() {
return m(Slider)
}
}
var PostList = {
oninit: function() {
Post.curStatus = 3
Post.loadList()
setInterval(function() {
Post.loadList()
}, Post.interval)
},
view: function() {
return m(Component)
}
}
var PostActive = {
oninit: function() {
Post.curStatus = 1
Post.loadList()
setInterval(function() {
Post.loadList()
}, Post.interval)
},
view: function() {
return m(Component)
}
}
var PostSoon = {
oninit: function() {
Post.curStatus = 2
Post.loadList()
setInterval(function() {
Post.loadList()
}, Post.interval)
},
view: function() {
return m(Component)
}
}
var PostInactive = {
oninit: function() {
Post.curStatus = 0
Post.loadList()
setInterval(function() {
Post.loadList()
}, Post.interval)
},
view: function() {
return m(Component)
}
}
</script>
{% if user != false %}
<script>
m.mount(document.getElementById('navigasi'), Nav)
m.route(root, '', {
'': PostList,
'/': PostList,
'/active': PostActive,
'/soon': PostSoon,
'/inactive': PostInactive,
})
</script>
{% else %}
<script>
m.mount(document.getElementById('nouser'), PostNoUser)
setTimeout(function() {
if (document.getElementById('slidr-div')) {
var postids = function() {
return Post.list.map(function(post) {
return post.id
}) + ',' + Post.list[0].id
}
slidr.create('slidr-div', {
controls: false,
timing: {'linear': '0.5s ease-in'},
theme: '#666',
touch: true
}).add("h", (postids()).split(',')).start().auto();
}
}, 100)
</script>
{% endif %}
{% endblock %}

View File

@@ -55,14 +55,6 @@
z-index: 10001;
}
.fl {
float: left;
}
.fr {
float: right;
}
td, th {
padding: .3em .45em .3em .6em;
}
@@ -75,18 +67,21 @@
text-align: center;
}
#slidr-div p {
#slidr-div p,
.fitty p {
margin: 0;
text-align: center;
line-height: 1;
}
@media screen and (orientation: landscape) {
#slidr-div p {
#slidr-div p,
.fitty p {
font-size: 8vw;
}
}
@media screen and (orientation: portrait) {
#slidr-div p {
#slidr-div p,
.fitty p {
font-size: 10vh;
}
}
@@ -154,10 +149,6 @@
background-color: rgba(17, 17, 17, .05);
}
.fitty > p {
margin: 0;
}
nav {
max-width: 100vw;
}
@@ -200,6 +191,10 @@
bottom: 0;
padding: .3em;
}
.swiper-container {
height: 100vh;
}
</style>
</head>
<body>
@@ -209,14 +204,16 @@
</span>
{% block nav %}{% endblock %}
</nav>
<script src="/js/rome.js"></script>
<script src="/js/slidr.min.js"></script>
<script src="/js/simplemde.min.js"></script>
<script src="/js/mithril.js"></script>
<script src="/js/marked.js"></script>
{% block body %}
{% endblock %}
{% if user %}
<script src="js/index.js"></script>
{% else %}
<script src="js/landing.js"></script>
{% endif %}
<script>
function fadeOutEffect() {
var fadeTarget = document.getElementById("info");