diff options
Diffstat (limited to 'web/_views')
-rw-r--r-- | web/_views/apps/error/main.php | 6 | ||||
-rw-r--r-- | web/_views/apps/home/main.php | 30 | ||||
-rw-r--r-- | web/_views/footer.php | 4 | ||||
-rw-r--r-- | web/_views/header.php | 84 | ||||
-rw-r--r-- | web/_views/modal/new_post.php | 46 | ||||
-rw-r--r-- | web/_views/template/comment.php | 12 | ||||
-rw-r--r-- | web/_views/template/error.php | 12 | ||||
-rw-r--r-- | web/_views/template/modal.php | 14 | ||||
-rw-r--r-- | web/_views/template/pfp.php | 8 | ||||
-rw-r--r-- | web/_views/template/post.php | 60 | ||||
-rw-r--r-- | web/_views/template/toast.php | 19 |
11 files changed, 295 insertions, 0 deletions
diff --git a/web/_views/apps/error/main.php b/web/_views/apps/error/main.php new file mode 100644 index 0000000..81051bd --- /dev/null +++ b/web/_views/apps/error/main.php @@ -0,0 +1,6 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<div id="error"> + <h1><?=$title?></h1> + <span><?=$msg?></span> +</div> diff --git a/web/_views/apps/home/main.php b/web/_views/apps/home/main.php new file mode 100644 index 0000000..b1c1efc --- /dev/null +++ b/web/_views/apps/home/main.php @@ -0,0 +1,30 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<div id="main-content"> +<?php if ($self): ?> + <div id="new-post" class="card"> + <div class="row grow"> + <?php $this->view('template/pfp', array('user' => $self))?> + <a + id="action-new-post" + class="input btn-fake ml" + autocomplete="off" + aria-label="<?=lang('action_new_post_tip')?>" + > + <?=lang('action_new_post_text', sub: [$self['first_name']])?> + </a> + </div> + <script> + $('#action-new-post').on('click', function() { + $.get( "/modal/new_post", function (data) { + $(document.body).append(data); + }); + }) + </script> + </div> +<?php endif; ?> + <div id="post-container"> + <?=$this->posts()?> + </div> + <?=ilang('action_load_posts', id: 'action-load-posts', class: 'btn btn-line')?> +</div> diff --git a/web/_views/footer.php b/web/_views/footer.php new file mode 100644 index 0000000..1266b9a --- /dev/null +++ b/web/_views/footer.php @@ -0,0 +1,4 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> + <body> +</html> diff --git a/web/_views/header.php b/web/_views/header.php new file mode 100644 index 0000000..891e27e --- /dev/null +++ b/web/_views/header.php @@ -0,0 +1,84 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<?php + $self = $this->main->user(); +?> +<!DOCTYPE html> +<html> + <head> + <script> + <?php if ($this->main->session): ?> + var jwtStr = <?=json_encode($this->main->session['jwt'])?>; + <?php else: ?> + var jwtStr = null; + <?php endif; ?> + </script> + <?php + foreach ($js_files as $js) { + echo $this->main->link_js($js); + } + foreach ($css_files as $css) { + echo $this->main->link_css($css); + } + ?> + <title><?=$title?></title> + </head> + <body> + <header class="nav"> + <div class="nav-left"> + <span class="logo">xssbook</span> + </div> + <div class="nav-center" :class="{hidden: !visible}"> + <a + id="action-home" + class="header-entry btn btn-hover btn-action btn-blue" + href="/home" + title="<?=lang('action_home_tip')?>" + > + <i class="mi mi-lg">home</i> + <span><?=lang('action_home_text')?></span> + </a> + <a + id="action-people" + class="header-entry btn btn-hover btn-action btn-blue" + href="/people" + title="<?=lang('action_people_tip')?>" + > + <i class="mi mi-lg">people</i> + <span><?=lang('action_people_text')?></span> + </a> + <a + id="action-chat" + class="header-entry btn btn-hover btn-action btn-blue" + href="/chat" + title="<?=lang('action_chat_tip')?>" + > + <i class="mi mi-lg">chat</i> + <span><?=lang('action_chat_text')?></span> + </a> + </div> + <div class="nav-right"> + <button + id="action-hamburger" + title="<?=lang('action_hamburger_tip')?>" + > + <i class="mi mi-lg">menu</i> + </button> + <?php if($self): ?> + <?php $this->view('template/pfp', array( + 'user' => $self, + 'class' => 'pfp-sm ml', + )); ?> + <?php else: ?> + <?=ilang('action_login', class: 'btn btn-action', href: '/auth/login')?> + <?php endif; ?> + </div> + <script> + $('#action-hamburger').on('click', function() { + let menu = $('.nav-center'); + menu.toggleClass('visible'); + }); + </script> + </header> + <div id="toast-container"> + </div> diff --git a/web/_views/modal/new_post.php b/web/_views/modal/new_post.php new file mode 100644 index 0000000..82243fb --- /dev/null +++ b/web/_views/modal/new_post.php @@ -0,0 +1,46 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<?php + $user = $this->main->user(); +?> +<form id="new-post-form"> +<div class="modal-content new-post-modal"> + <div class="row"> + <?php $this->view('template/pfp', array('user' => $user))?> + <div class="col ml"> + <strong><?=$user['first_name'] . ' ' . $user['last_name']?></strong> + <span class="dim"><?=lang('now')?></span> + </div> + </div> + <textarea + type="text" + name="content" + id="new-post-content" + placeholder="<?=lang('action_new_post_text', sub: [$user['first_name']])?>" + ></textarea> +</div> +<div class="modal-footer"> + <?=ilang('action_submit', + id: 'new-post-submit', + class: 'btn-action', + attrs: array('type' => 'submit'), + button: TRUE + )?> +</div> +</form> +<script> + $('#new-post-form').submit(function(e) { + e.preventDefault(); + let content = $('#new-post-content').val(); + + $.ajax({ + url: '/api/post', + method: 'POST', + data: JSON.stringify({ content }), + success: function(data) { + window.location.reload(); + }, + error: errorToast + }); + }); +</script> diff --git a/web/_views/template/comment.php b/web/_views/template/comment.php new file mode 100644 index 0000000..943f232 --- /dev/null +++ b/web/_views/template/comment.php @@ -0,0 +1,12 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<div class="comment row mt"> + <?php $this->view('template/pfp', array('user' => $user))?> + <div class="ml col sub-card"> + <div class="row"> + <strong><?=$this->main->display_name($user)?></strong> + <span class="dim ml"><?=$this->main->display_date($comment['date'])?></span> + </div> + <?=$comment['content']?> + </div> +</div> diff --git a/web/_views/template/error.php b/web/_views/template/error.php new file mode 100644 index 0000000..2e02cb1 --- /dev/null +++ b/web/_views/template/error.php @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> + <head> + <title><?=$code . ' - ' . $msg?></title> + </head> + <body> + <center> + <h1><?=$code . ' ' . $msg?></h1> + </center> + <hr> + </body> +</html> diff --git a/web/_views/template/modal.php b/web/_views/template/modal.php new file mode 100644 index 0000000..e3ce6fe --- /dev/null +++ b/web/_views/template/modal.php @@ -0,0 +1,14 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<div class="modal-container"> + <div class="modal"> + <div class="modal-header row"> + <?=$title?> + <?=ilang( + 'action_modal_close', + class: 'float-right btn btn-action modal-close', + )?> + </div> + <?php $this->view('modal/' . $content) ?> + </div> +</div> diff --git a/web/_views/template/pfp.php b/web/_views/template/pfp.php new file mode 100644 index 0000000..aec7318 --- /dev/null +++ b/web/_views/template/pfp.php @@ -0,0 +1,8 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<?php + $class = isset($class) ? $class : ''; +?> +<a class="image-loading pfp <?=$class?>" href="/profile?id=<?=$user['id']?>"> + <img src="/api/rpc/avatar?user_id=<?=$user['id']?>" /> +</a> diff --git a/web/_views/template/post.php b/web/_views/template/post.php new file mode 100644 index 0000000..40a3c1d --- /dev/null +++ b/web/_views/template/post.php @@ -0,0 +1,60 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<div class="post card"> + <div class="row"> + <?php $this->view('template/pfp', array('user' => $user))?> + <div class="col ml"> + <strong><?=$user['first_name'] . ' ' . $user['last_name']?></strong> + <span class="dim"><?=$post['date']?></span> + </div> + </div> + <p> + <?=$post['content']?> + </p> +<?php + $self = $this->main->user(); +?> +<?php if ($self): ?> + <hr> + <div class="row"> + <?=ilang('action_like', class: 'grow btn btn-hover btn-action')?> + <?=ilang('action_comment', class: 'grow btn btn-hover btn-action action-comment', + click: '$(\'#new-comment-' . $post['id'] . '\').focus()' + )?> + </div> + <hr> +<?php else: ?> + <hr> +<?php endif; ?> + <div class="col comments"> + <?php + $_GET['id'] = $post['id']; + $this->comments(); + ilang('action_load_comments', + class: 'action-load-comments btn btn-line mt', + attrs: array('postId' => $post['id']) + ); + ?> + </div> +<?php if ($self): ?> + <div class="row grow mt"> + <?php $this->view('template/pfp', array('user' => $user))?> + <form class="ml"> + <input + type="hidden" + name="id" + value="<?=$post['id']?>" + > + <input + id="new-comment-<?=$post['id']?>" + class="input" + autocomplete="off" + type="text" + name="text" + placeholder="<?=lang('action_new_comment_text')?>" + aria-label="<?=lang('action_new_comment_tip')?>" + > + </form> + </div> +<?php endif; ?> +</div> diff --git a/web/_views/template/toast.php b/web/_views/template/toast.php new file mode 100644 index 0000000..1f74602 --- /dev/null +++ b/web/_views/template/toast.php @@ -0,0 +1,19 @@ +<?php /* Copyright (c) 2024 Freya Murphy */ ?> +<?php /* vi: syntax=php */ ?> +<?php + $params = array(); + + if ($detail) { + array_push($params, lang('api_column_' . $detail)); + } + + if ($hint) { + array_push($params, $hint); + } + + $msg = lang($msg, sub: $params); +?> +<div class="toast error"> + <?=ucfirst($msg)?> + <?=ilang('action_close', class: 'action-close-toast')?> +</div> |