aboutsummaryrefslogtreecommitdiff
path: root/shardweb/lib/templates
diff options
context:
space:
mode:
Diffstat (limited to 'shardweb/lib/templates')
-rw-r--r--shardweb/lib/templates/chat/chat.html.eex37
-rw-r--r--shardweb/lib/templates/identity/list.html.eex32
-rw-r--r--shardweb/lib/templates/identity/self.html.eex59
-rw-r--r--shardweb/lib/templates/layout/app.html.eex227
-rw-r--r--shardweb/lib/templates/layout/flashes.html.eex24
-rw-r--r--shardweb/lib/templates/page/peer_list.html.eex47
-rw-r--r--shardweb/lib/templates/page/shard_list.html.eex46
7 files changed, 472 insertions, 0 deletions
diff --git a/shardweb/lib/templates/chat/chat.html.eex b/shardweb/lib/templates/chat/chat.html.eex
new file mode 100644
index 0000000..86c2fb6
--- /dev/null
+++ b/shardweb/lib/templates/chat/chat.html.eex
@@ -0,0 +1,37 @@
+<!-- Page Heading -->
+<div class="row">
+ <div class="col-lg-12">
+ <h1 class="page-header">
+ #<%= @room %>
+ <small>public chat room</small>
+
+ </h1>
+ <ol class="breadcrumb">
+ <li>
+ <i class="fa fa-comments"></i> Chat rooms
+ </li>
+ <li class="active">
+ <i class="fa fa-comments"></i> #<%= @room %>
+ </li>
+ </ol>
+ </div>
+</div>
+<!-- /.row -->
+
+<%= render ShardWeb.LayoutView, "flashes.html", assigns %>
+
+
+
+<!-- The list of messages will appear here: -->
+<ul id='msg-list' class='row' style='list-style: none; min-height:400px; padding: 10px; max-height: 400px; overflow: scroll'></ul>
+
+<div class="form-horizontal">
+ <div class="form-group">
+ <div class="col-sm-2 control-label">
+ <strong>&lt;<%= @nick %>&gt;</strong>
+ </div>
+ <div class="col-sm-10">
+ <input type="text" id="msg" class="form-control" placeholder="Your Message" autofocus>
+ </div>
+ </div>
+</div>
diff --git a/shardweb/lib/templates/identity/list.html.eex b/shardweb/lib/templates/identity/list.html.eex
new file mode 100644
index 0000000..1354264
--- /dev/null
+++ b/shardweb/lib/templates/identity/list.html.eex
@@ -0,0 +1,32 @@
+<!-- Page Heading -->
+<div class="row">
+ <div class="col-lg-12">
+ <h1 class="page-header">
+ People on the network
+
+ </h1>
+ <ol class="breadcrumb">
+ <li class="active">
+ <i class="fa fa-users"></i> People
+ </li>
+ </ol>
+ </div>
+</div>
+<!-- /.row -->
+
+<%= render ShardWeb.LayoutView, "flashes.html", assigns %>
+
+
+<table class="table table-striped">
+ <tr>
+ <th>User name</th>
+ <th>Public key</th>
+ </tr>
+ <%= for {_id, manifest, pid} <- people_list() do %>
+ <tr>
+ <td><i class="fa fa-user"></i> <%= GenServer.call(pid, :get_info).nick %> </td>
+ <td><small><%= manifest.pk |> Base.encode16 %></small></td>
+ </tr>
+ <% end %>
+</table>
+
diff --git a/shardweb/lib/templates/identity/self.html.eex b/shardweb/lib/templates/identity/self.html.eex
new file mode 100644
index 0000000..5e57e02
--- /dev/null
+++ b/shardweb/lib/templates/identity/self.html.eex
@@ -0,0 +1,59 @@
+<!-- Page Heading -->
+<div class="row">
+ <div class="col-lg-12">
+ <h1 class="page-header">
+ <%= @nick %> <small><%= @pk |> Base.encode16 %></small>
+ </h1>
+ <ol class="breadcrumb">
+ <li>
+ <i class="fa fa-users"></i> My identities
+ </li>
+ <li class="active">
+ <i class="fa fa-user"></i> <%= @nick %>
+ </li>
+ </ol>
+ </div>
+</div>
+<!-- /.row -->
+
+<%= render ShardWeb.LayoutView, "flashes.html", assigns %>
+
+
+<%= form_for @conn, identity_path(@conn, :update), [class: "form-horizontal"], fn f -> %>
+ <div class="form-group">
+ <label class="col-sm-2 control-label">Public key:</label>
+ <div class="col-sm-10">
+ <input type="text" value="<%= @pk |> Base.encode16 %>" class="form-control" disabled />
+ </div>
+ </div>
+ <div class="form-group">
+ <%= label :nick, "Nickname:", class: ["col-sm-2 control-label"] %>
+ <div class="col-sm-10">
+ <%= text_input f, :nick, [class: "form-control", value: @nick] %>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-sm-offset-2 col-sm-10">
+ <%= submit "Update", [class: "btn btn-default"] %>
+ </div>
+ </div>
+<% end %>
+
+<h4>Other identities</h4>
+
+<ul>
+ <%= for pk2 <- identity_list(), pk2 != @pk do %>
+ <li>
+ <%= form_for @conn, identity_path(@conn, :switch), [class: "form-inline"], fn f -> %>
+ <%= hidden_input f, :pk, value: (pk2 |> Base.encode16) %>
+ <%= submit "Switch to", [class: "btn btn-xs btn-success"] %>
+ <strong><%= get_nick pk2 %></strong>
+ <small><%= pk2 |> Base.encode16 %></small>
+ <% end %>
+ </li>
+ <% end %>
+</ul>
+
+<%= form_for @conn, identity_path(@conn, :create), [class: "form-inline"], fn _f -> %>
+ <%= submit "Create new identity", [class: "btn btn-danger"] %>
+<% end %>
diff --git a/shardweb/lib/templates/layout/app.html.eex b/shardweb/lib/templates/layout/app.html.eex
new file mode 100644
index 0000000..5a087f2
--- /dev/null
+++ b/shardweb/lib/templates/layout/app.html.eex
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <title>Shard.</title>
+
+ <!-- Bootstrap Core CSS -->
+ <link href="<%= static_path(@conn, "/css/bootstrap.min.css") %>" rel="stylesheet">
+
+ <!-- Custom CSS -->
+ <link href="<%= static_path(@conn, "/css/sb-admin.css") %>" rel="stylesheet">
+
+ <!-- Morris Charts CSS -->
+ <link href="<%= static_path(@conn, "/css/plugins/morris.css") %>" rel="stylesheet">
+
+ <!-- Custom Fonts -->
+ <link href="<%= static_path(@conn, "/font-awesome/css/font-awesome.min.css") %>" rel="stylesheet" type="text/css">
+
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+ <![endif]-->
+
+ <link rel="stylesheet" href="<%= static_path(@conn, "/css/app.css") %>">
+</head>
+
+<body>
+
+ <div id="wrapper">
+
+ <!-- Navigation -->
+ <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="<%= page_path(@conn, :peer_list) %>">Shard</a>
+ </div>
+ <!-- Top Menu Items -->
+ <ul class="nav navbar-right top-nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i> <b class="caret"></b></a>
+ <ul class="dropdown-menu message-dropdown">
+ <li class="message-preview">
+ <a href="#">
+ <div class="media">
+ <span class="pull-left">
+ <img class="media-object" src="http://placehold.it/50x50" alt="">
+ </span>
+ <div class="media-body">
+ <h5 class="media-heading"><strong>John Smith</strong>
+ </h5>
+ <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
+ <p>Lorem ipsum dolor sit amet, consectetur...</p>
+ </div>
+ </div>
+ </a>
+ </li>
+ <li class="message-preview">
+ <a href="#">
+ <div class="media">
+ <span class="pull-left">
+ <img class="media-object" src="http://placehold.it/50x50" alt="">
+ </span>
+ <div class="media-body">
+ <h5 class="media-heading"><strong>John Smith</strong>
+ </h5>
+ <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
+ <p>Lorem ipsum dolor sit amet, consectetur...</p>
+ </div>
+ </div>
+ </a>
+ </li>
+ <li class="message-preview">
+ <a href="#">
+ <div class="media">
+ <span class="pull-left">
+ <img class="media-object" src="http://placehold.it/50x50" alt="">
+ </span>
+ <div class="media-body">
+ <h5 class="media-heading"><strong>John Smith</strong>
+ </h5>
+ <p class="small text-muted"><i class="fa fa-clock-o"></i> Yesterday at 4:32 PM</p>
+ <p>Lorem ipsum dolor sit amet, consectetur...</p>
+ </div>
+ </div>
+ </a>
+ </li>
+ <li class="message-footer">
+ <a href="#">Read All New Messages</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-bell"></i> <b class="caret"></b></a>
+ <ul class="dropdown-menu alert-dropdown">
+ <li>
+ <a href="#">Alert Name <span class="label label-default">Alert Badge</span></a>
+ </li>
+ <li>
+ <a href="#">Alert Name <span class="label label-primary">Alert Badge</span></a>
+ </li>
+ <li>
+ <a href="#">Alert Name <span class="label label-success">Alert Badge</span></a>
+ </li>
+ <li>
+ <a href="#">Alert Name <span class="label label-info">Alert Badge</span></a>
+ </li>
+ <li>
+ <a href="#">Alert Name <span class="label label-warning">Alert Badge</span></a>
+ </li>
+ <li>
+ <a href="#">Alert Name <span class="label label-danger">Alert Badge</span></a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#">View All</a>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> <%= @nick %> <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li>
+ <a href="<%= identity_path(@conn, :self) %>"><i class="fa fa-fw fa-user"></i> Profile</a>
+ </li>
+ <li class="divider"></li>
+ <li>
+ <a href="#"><i class="fa fa-fw fa-envelope"></i> Inbox</a>
+ </li>
+ <li>
+ <a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
+ </li>
+ <li>
+ <a href="#"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
+ <div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul class="nav navbar-nav side-nav">
+ <li class="<%= if @view_module == ShardWeb.IdentityView do "active" else "" end %>">
+ <a href="<%= identity_path(@conn, :self) %>"><i class="fa fa-fw fa-user"></i> <%= @nick %></a>
+ </li>
+ <li class="<%= if @view_module == ShardWeb.RoomView do "active" else "" end %>">
+ <a href="javascript:;" data-toggle="collapse" data-target="#demo"><i class="fa fa-fw fa-comments"></i> Chat rooms <i class="fa fa-fw fa-caret-down"></i></a>
+ <ul id="demo" class="<%= if @view_module != ShardWeb.RoomView do "collapse" else "" end %>">
+
+
+ <%= for {_, %SApp.Chat.Manifest{channel: name}, _} <- shard_list() do %>
+ <li class="<%= if @view_module == ShardWeb.RoomView and @room == name do "custom_active" else "" end %>">
+ <a href="<%= chat_path(@conn, :chat, name) %>">#<%= name %></a>
+ </li>
+ <% end %>
+ <li>
+ <a href="#" onclick="if(new_room=prompt('Enter name of room to join, without preceding # sign:'))window.location.href='/room/'+new_room;">Join room</a>
+ </li>
+
+
+ </ul>
+ </li>
+ <li>
+ <a href="<%= identity_path(@conn, :list) %>"><i class="fa fa-fw fa-users"></i> People</a>
+ </li>
+ <li class="<%= if @view_module == ShardWeb.PageView and @view_template == "peer_list.html" do "active" else "" end %>">
+ <a href="<%= page_path(@conn, :peer_list) %>"><i class="fa fa-fw fa-globe"></i> Peer list</a>
+ </li>
+ <li>
+ <a href="#"><i class="fa fa-fw fa-gear"></i> Settings</a>
+ </li>
+ <li>
+ <a href="<%= page_path(@conn, :shard_list) %>"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
+ </li>
+ </ul>
+ </div>
+ <!-- /.navbar-collapse -->
+ </nav>
+
+ <div id="page-wrapper">
+
+ <div class="container-fluid">
+
+
+
+ <%= render @view_module, @view_template, assigns %>
+
+ </div>
+ <!-- /.container-fluid -->
+
+ </div>
+ <!-- /#page-wrapper -->
+
+ </div>
+ <!-- /#wrapper -->
+
+ <!-- jQuery -->
+ <script src="<%= static_path(@conn, "/js/jquery.js") %>"></script>
+
+ <!-- Bootstrap Core JavaScript -->
+ <script src="<%= static_path(@conn, "/js/bootstrap.min.js") %>"></script>
+
+ <!-- Morris Charts JavaScript -->
+ <script src="<%= static_path(@conn, "/js/plugins/morris/raphael.min.js") %>"></script>
+ <script src="<%= static_path(@conn, "/js/plugins/morris/morris.min.js") %>"></script>
+ <script src="<%= static_path(@conn, "/js/plugins/morris/morris-data.js") %>"></script>
+
+ <%= render_gon_script(@conn) %>
+ <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
+
+</body>
+
+</html>
+
diff --git a/shardweb/lib/templates/layout/flashes.html.eex b/shardweb/lib/templates/layout/flashes.html.eex
new file mode 100644
index 0000000..5371f43
--- /dev/null
+++ b/shardweb/lib/templates/layout/flashes.html.eex
@@ -0,0 +1,24 @@
+
+ <%= if get_flash(@conn, :info) do %>
+ <div class="row">
+ <div class="col-lg-12">
+ <div class="alert alert-info alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
+ <i class="fa fa-info-circle"></i> <%= get_flash(@conn, :info) %>
+ </div>
+ </div>
+ </div>
+ <% end %>
+ <!-- /.row -->
+
+ <%= if get_flash(@conn, :error) do %>
+ <div class="row">
+ <div class="col-lg-12">
+ <div class="alert alert-warning alert-dismissable">
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
+ <i class="fa fa-info-circle"></i> <%= get_flash(@conn, :error) %>
+ </div>
+ </div>
+ </div>
+ <% end %>
+ <!-- /.row -->
diff --git a/shardweb/lib/templates/page/peer_list.html.eex b/shardweb/lib/templates/page/peer_list.html.eex
new file mode 100644
index 0000000..f385528
--- /dev/null
+++ b/shardweb/lib/templates/page/peer_list.html.eex
@@ -0,0 +1,47 @@
+<!-- Page Heading -->
+<div class="row">
+ <div class="col-lg-12">
+ <h1 class="page-header">
+ Peer list
+
+ </h1>
+ <ol class="breadcrumb">
+ <li>
+ <i class="fa fa-dashboard"></i> Dashboard
+ </li>
+ <li class="active">
+ <i class="fa fa-globe"></i> Peer list
+ </li>
+ </ol>
+ </div>
+</div>
+<!-- /.row -->
+
+<%= render ShardWeb.LayoutView, "flashes.html", assigns %>
+
+<table class="table table-striped">
+ <tr>
+ <th>Peer ID</th>
+ <th>Address</th>
+ <th>Port</th>
+ </tr>
+ <%= for {{:inet, ip, port}, _pid, auth} <- conn_list() do %>
+ <tr>
+ <td>
+ <%= case auth do %>
+ <% nil -> %>(anonymous)
+ <% %SNet.Auth{his_pk: his_pk} -> %> <%= Shard.Keys.pk_display(his_pk) %>
+ <% end %>
+ </td>
+ <td><%= :inet_parse.ntoa(ip) %></td>
+ <td><%= port %></td>
+ </tr>
+ <% end %>
+</table>
+
+<%= form_for @conn, page_path(@conn, :add_peer), [class: "form-inline"], fn f -> %>
+ <%= text_input f, :ip, [class: "form-control", placeholder: "Hostname / IP address"] %>
+ <%= text_input f, :port, [class: "form-control", placeholder: "Port", value: "4044"] %>
+ <%= submit "Add peer", [class: "btn btn-default"] %>
+<% end %>
+
diff --git a/shardweb/lib/templates/page/shard_list.html.eex b/shardweb/lib/templates/page/shard_list.html.eex
new file mode 100644
index 0000000..a0648d3
--- /dev/null
+++ b/shardweb/lib/templates/page/shard_list.html.eex
@@ -0,0 +1,46 @@
+<!-- Page Heading -->
+<div class="row">
+ <div class="col-lg-12">
+ <h1 class="page-header">
+ Shard list
+
+ </h1>
+ <ol class="breadcrumb">
+ <li>
+ <i class="fa fa-dashboard"></i> Dashboard
+ </li>
+ <li class="active">
+ <i class="fa fa-table"></i> Shard list
+ </li>
+ </ol>
+ </div>
+</div>
+<!-- /.row -->
+
+<%= render ShardWeb.LayoutView, "flashes.html", assigns %>
+
+<table class="table table-striped">
+ <tr>
+ <th>Shard</th>
+ <th>Id</th>
+ <th>Pid</th>
+ </tr>
+ <%= for {id, manifest, pid} <- shard_list() do %>
+ <tr>
+ <td>
+ <%= case manifest do %>
+ <% %SApp.Identity.Manifest{pk: pk} -> %><i class="fa fa-user"></i>
+ <%= GenServer.call(pid, :get_info).nick %>
+ <small><%= Shard.Keys.pk_display pk %></small>
+ <% %SApp.Chat.Manifest{channel: chan} -> %><i class="fa fa-comments"></i> #<%= chan %>
+ <% %SApp.Chat.PrivChat.Manifest{pk_list: pk_list} -> %><i class="fa fa-comment"></i>
+ <%= pk_list |> Enum.map(&SApp.Identity.get_nick/1) |> Enum.join(", ") %>
+ <% x -> %> <%= inspect x %>
+ <% end %>
+ </td>
+ <td><small><%= id |> Base.encode16 %></small></td>
+ <td><%= inspect(pid) %></td>
+ </tr>
+ <% end %>
+</table>
+