1bb480f6ea
Define a Whisper.View base class that automatically parses and renders templates and attributes defined by the subclass. This saves us a good number of lines of code as well as some marginal memory overhead, since we are no longer saving per-instance copies of template strings.
109 lines
5 KiB
HTML
109 lines
5 KiB
HTML
<!DOCTYPE html>
|
|
<html class='no-js' lang='en'>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<meta content='width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0' name='viewport'>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<title>
|
|
Signal for Chrome
|
|
</title>
|
|
<meta name="description" content="">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link href='/icon.png' rel='shortcut icon'>
|
|
<link href="/stylesheets/manifest.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body class='signal index'>
|
|
<div class='title-bar' id='header'>
|
|
<div class='new-conversation-title hide'>
|
|
<button class='back'></button>
|
|
<span class='title-text'>New Message</span>
|
|
</div>
|
|
</div>
|
|
<div class='notifications'>
|
|
<div class='notification info'>
|
|
</div>
|
|
</div>
|
|
<div id='gutter' class='gutter'>
|
|
<div id='contacts'></div>
|
|
<span class='fab'></span>
|
|
</div>
|
|
<script type="text/x-tmpl-mustache" id="phone-number">
|
|
<div class="phone-input-form">
|
|
<div class="number-container">
|
|
<input type="tel" class="number" placeholder="Phone Number" />
|
|
</div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact_pill'>
|
|
<span>{{ name }}</span><span class='remove'>x</span>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='contact'>
|
|
<span class='avatar'></span>
|
|
<div class='contact-details'>
|
|
<h3 class='contact-name'>
|
|
{{ contact_name }}
|
|
</h3>
|
|
<p class='number'>{{ number }}</p>
|
|
<p class='last-message'>
|
|
{{ last_message }}
|
|
</p>
|
|
<span class='last-timestamp'>
|
|
{{ last_message_timestamp }}
|
|
</span>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='new-conversation'>
|
|
<div class='new-group-update-form clearfix'>
|
|
<div class='group-avatar'>
|
|
<div class='paperclip'></div>
|
|
<input type='file' name='avatar' class='file-input'>
|
|
</div>
|
|
<input type='text' name='name' class='name' placeholder='Group Name' value="{{ name }}">
|
|
</div>
|
|
<div class='recipients-container'>
|
|
<span class='recipients'></span>
|
|
<input type='text' class='new-message' placeholder="Name or phone number" />
|
|
</div>
|
|
<div class='buttons'>
|
|
<button class='create'>Next</button>
|
|
</div>
|
|
<div class='results'>
|
|
<div class='new-contact contact'></div>
|
|
<div class='contacts'></div>
|
|
</div>
|
|
</script>
|
|
<script type='text/x-tmpl-mustache' id='attachment-preview'>
|
|
<img src="{{ source }}" class="preview" />
|
|
<div class="close">x</div>
|
|
</script>
|
|
<script type="text/javascript" src="js/components.js"></script>
|
|
|
|
<script type="text/javascript" src="js/libtextsecure.js"></script>
|
|
<script type="text/javascript" src="js/database.js"></script>
|
|
|
|
<script type="text/javascript" src="js/libphonenumber-util.js"></script>
|
|
|
|
<script type="text/javascript" src="js/models/messages.js"></script>
|
|
<script type="text/javascript" src="js/models/conversations.js"></script>
|
|
|
|
<script type="text/javascript" src="js/chromium.js"></script>
|
|
|
|
<script type="text/javascript" src="js/views/whisper_view.js"></script>
|
|
<script type="text/javascript" src="js/views/toast_view.js"></script>
|
|
<script type="text/javascript" src="js/views/attachment_preview_view.js"></script>
|
|
<script type="text/javascript" src="js/views/file_input_view.js"></script>
|
|
<script type="text/javascript" src="js/views/list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/new_group_update_view.js"></script>
|
|
<script type="text/javascript" src="js/views/group_update_view.js"></script>
|
|
<script type="text/javascript" src="js/views/attachment_view.js"></script>
|
|
<script type="text/javascript" src="js/views/message_view.js"></script>
|
|
<script type="text/javascript" src="js/views/message_list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/phone-input-view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_list_item_view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_list_view.js"></script>
|
|
<script type="text/javascript" src="js/views/conversation_view.js"></script>
|
|
<script type="text/javascript" src="js/views/new_conversation_view.js"></script>
|
|
<script type="text/javascript" src="js/views/inbox_view.js"></script>
|
|
<script type="text/javascript" src="js/index.js"></script>
|
|
</body>
|
|
</html>
|