aboutsummaryrefslogtreecommitdiff
path: root/juick-www/src/main/webapp
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2016-12-28 22:38:21 +0300
committerGravatar Vitaly Takmazov2017-01-10 12:08:35 +0300
commit2f682b5e3cfc3fc5f961b60129be7bc90e0d6a03 (patch)
tree840aea9eb94d5c1f667a710d3298135854bc5002 /juick-www/src/main/webapp
parenteb440ea4f120115613880e340b010eed5397e72c (diff)
juick-www: now on spring-webmvc
Diffstat (limited to 'juick-www/src/main/webapp')
-rw-r--r--juick-www/src/main/webapp/WEB-INF/juick.conf.example6
-rw-r--r--juick-www/src/main/webapp/WEB-INF/layouts/content.html27
-rw-r--r--juick-www/src/main/webapp/WEB-INF/layouts/rss.xml38
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/404.html11
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/help.html10
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/partial/footer.html34
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/partial/homecolumn.html6
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/partial/navigation.html37
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/partial/settings_tabs.html5
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/partial/tags.html3
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html37
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/pm_sent.html33
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_about.html20
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_auth-email.html9
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_main.html156
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_password.html17
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_privacy.html9
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/settings_result.html9
-rw-r--r--juick-www/src/main/webapp/WEB-INF/views/signup.html41
-rw-r--r--juick-www/src/main/webapp/WEB-INF/web.xml38
20 files changed, 502 insertions, 44 deletions
diff --git a/juick-www/src/main/webapp/WEB-INF/juick.conf.example b/juick-www/src/main/webapp/WEB-INF/juick.conf.example
deleted file mode 100644
index bbe2a9e5..00000000
--- a/juick-www/src/main/webapp/WEB-INF/juick.conf.example
+++ /dev/null
@@ -1,6 +0,0 @@
-mysql_username=username
-xmpp_password=secret
-sape_user=usertoken
-wns_application_sip=ms-app://x-1-11-1-1111111111-...
-wns_client_secret=secret
-xmpp_disabled=false \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/layouts/content.html b/juick-www/src/main/webapp/WEB-INF/layouts/content.html
new file mode 100644
index 00000000..6a564034
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/layouts/content.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <script type="text/javascript" src="/scripts.js"></script>
+ <link rel="stylesheet" type="text/css" href="/style.css" />
+ {% block headers %}
+ {{ headers | raw }}
+ {% endblock %}
+ <title>{{ title }}</title>
+ <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
+ <link rel="icon" href="//i.juick.com/favicon.png" />
+ </head>
+ <body>
+ {% include "views/partial/navigation" %}
+ <section id="content">
+ {% block content %}
+ {% endblock %}
+ </section>
+ <aside id="column">
+ {% block column %}
+ {% endblock %}
+ </aside>
+ {% include "views/partial/footer" %}
+ </body>
+</html> \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/layouts/rss.xml b/juick-www/src/main/webapp/WEB-INF/layouts/rss.xml
new file mode 100644
index 00000000..23866c8a
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/layouts/rss.xml
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='utf-8'?>
+<rss version='2.0' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/'
+ xmlns:juick='http://juick.com/'>
+ <channel>
+ <atom:link href='http://rss.juick.com/{{ user.getName() }}/blog' rel='self' type='application/rss+xml'/>
+ <title>{{ user.getName() }} - Juick</title>
+ <link>http://juick.com/{{ user.getName() }}/</link>
+ <description>The latest messages by @{{ user.getName() }} at Juick</description>
+ <image>
+ <url>http://i.juick.com/a/{{ user.getUid() }}.png</url>
+ <title>{{ user.getName() }} - Juick</title>
+ <link>http://juick.com/{{ user.getName() }}/</link>
+ </image>
+ {% for msg in msgs %}
+ <item>
+ <link>http://juick.com/{{ msg.getUser().getName() }}/{{ msg.getMid() }}</link>
+ <guid>http://juick.com/{{ msg.getUser().getName() }}/{{ msg.getMid() }}</guid>
+ <title><![CDATA[@{{ msg.getUser().getName() }}: {% for tag in msg.getTags() %} *{{ tag }}{% endfor %}]]></title>
+ <description><![CDATA[{{ msg.getText() | raw }}]]></description>
+ <pubDate>{{ sdfRSS.format(msg.getDate()) }}</pubDate>
+ <comments>http://juick.com/{{ msg.getUser().getName() }}/{{ msg.getMid() }}</comments>
+ {% for tag in msg.getTags() %}
+ <category>{{ tag }}</category>
+ {% endfor %}
+ {% if msg.getAttachmentType() is not empty %}
+ {% if msg.getAttachmentType() == "jpg" %}
+ <media:content url='http://i.juick.com/photos-1024/{{ msg.getMid() }}.jpg' type='image/jpeg'/>
+ <media:thumbnail url='http://i.juick.com/ps/{{ msg.getMid() }}.jpg'/>
+ {% elseif msg.getAttachmentType() == "png" %}
+ <media:content url='http://i.juick.com/photos-1024/{{ msg.getMid() }}.png' type='image/png'/>
+ <media:thumbnail url='http://i.juick.com/ps/{{ msg.getMid() }}.png'/>
+ {% endif %}
+ {% endif %}
+ <juick:user uid='{{ msg.getUser().getUid() }}'/>
+ </item>
+ {% endfor %}
+ </channel>
+</rss>
diff --git a/juick-www/src/main/webapp/WEB-INF/views/404.html b/juick-www/src/main/webapp/WEB-INF/views/404.html
new file mode 100644
index 00000000..21f42d75
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/404.html
@@ -0,0 +1,11 @@
+{% extends "layouts/content" %}
+{% block content %}
+ <article>
+ <h1>Страница не найдена</h1>
+ <p>Сожалеем, но страницу с этим адресом удалил её автор, либо её никогда не существовало.</p>
+ </article>
+{% endblock %}
+
+{% block "column" %}
+{% include "views/partial/homecolumn" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/help.html b/juick-www/src/main/webapp/WEB-INF/views/help.html
new file mode 100644
index 00000000..a4b76676
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/help.html
@@ -0,0 +1,10 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ {{ content | raw }}
+</article>
+{% endblock %}
+
+{% block "column" %}
+{{ navigation | raw }}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/partial/footer.html b/juick-www/src/main/webapp/WEB-INF/views/partial/footer.html
new file mode 100644
index 00000000..6978a2c0
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/partial/footer.html
@@ -0,0 +1,34 @@
+<div id="footer">
+ <div id="footer-right">
+ <a href="/settings" rel="nofollow">Настройки</a> &#183;
+ <a href="/help/ru/contacts" rel="nofollow">Контакты</a> &#183;
+ <a href="/help/" rel="nofollow">Справка</a> &#183;
+ <a href="/help/ru/adv" rel="nofollow">Реклама</a>
+ </div>
+ <div id="footer-social">
+ <a href="https://twitter.com/Juick" rel="nofollow" class="ico32-twi">Twitter</a>
+ <a href="https://vk.com/juick" rel="nofollow" class="ico32-vk">ВКонтакте</a>
+ <a href="https://www.facebook.com/JuickCom" rel="nofollow" class="ico32-fb">Facebook</a>
+ </div>
+ <div id="footer-left">juick.com &copy; 2008-2016
+ {% if links %}
+ <br/>Спонсоры: {{ links }}
+ {% endif %}
+ </div>
+</div>
+<script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ ga('create','UA-385578-4','juick.com');
+ ga('require','displayfeatures');
+ ga('send','pageview');
+ {% if (sapeon) %}
+ var _acic={dataProvider:10};
+ (function(){
+ var e=document.createElement('script');e.type='text/javascript';e.async=true;e.src='//www2.aci'+'nt.net/aci.js';
+ var t=document.getElementsByTagName('script')[0];t.parentNode.insertBefore(e,t);
+ })();
+ {% endif %}
+</script> \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/partial/homecolumn.html b/juick-www/src/main/webapp/WEB-INF/views/partial/homecolumn.html
new file mode 100644
index 00000000..28a73662
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/partial/homecolumn.html
@@ -0,0 +1,6 @@
+<p class="tags">
+ {% include "views/partial/tags" %}
+ {% if showAdv %}
+ <a href="http://ru.wix.com/">конструктор сайтов</a>
+ {% endif %}
+</p> \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/partial/navigation.html b/juick-www/src/main/webapp/WEB-INF/views/partial/navigation.html
new file mode 100644
index 00000000..2863d0c3
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/partial/navigation.html
@@ -0,0 +1,37 @@
+<header>
+ <div id="logo"><a href="/">Juick</a></div>
+ <nav id="global">
+ <ul>
+ <li><a href="/">Популярные</a></li>
+ <li><a href="/?show=all" rel="nofollow">Все сообщения</a></li>
+ <li><a href="/?show=photos" rel="nofollow">Фотографии</a></li>
+ </ul>
+ </nav>
+ <div id="search">
+ <form action="/">
+ <input type="text" name="search" class="text" placeholder="Поиск" value="{{ search }}"/>
+ </form>
+ </div>
+ <section id="headdiv">
+ {% if visitor.getUID() > 0 %}
+ <nav id="user">
+ <ul>
+ <li><a href="/?show=my">Моя лента</a></li>
+ <li><a href="/pm/inbox">Приватные</a></li>
+ <li><a href="/?show=discuss">Обсуждения</a></li>
+ <li><a href="/?show=recommended">Рекомендации</a></li>
+ </ul>
+ </nav>
+ <nav id="actions">
+ <ul>
+ <li><a href="/#post">Написать</a></li>
+ <li><a href="/{{ visitor.getName() }}">@{{ visitor.getName() }}</a></li>
+ <li><a href="/logout">Выйти</a></li>
+ </ul>
+ </nav>
+ {% else %}
+ <p>Чтобы добавлять сообщения и комментарии, <a href="#" onclick="return Juick.openDialogLogin()">представьтесь</a>.
+ </p>
+ {% endif %}
+ </section>
+</header>
diff --git a/juick-www/src/main/webapp/WEB-INF/views/partial/settings_tabs.html b/juick-www/src/main/webapp/WEB-INF/views/partial/settings_tabs.html
new file mode 100644
index 00000000..d7901d5e
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/partial/settings_tabs.html
@@ -0,0 +1,5 @@
+<div id="pagetabs"><ul>
+ <li><a href="/settings">Main</a></li>
+ <li><a href="/settings?page=password">Password</a></li>
+ <li><a href="/settings?page=about">About</a></li>
+</ul></div> \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/partial/tags.html b/juick-www/src/main/webapp/WEB-INF/views/partial/tags.html
new file mode 100644
index 00000000..4d05b7fb
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/partial/tags.html
@@ -0,0 +1,3 @@
+{% for tag in tags %}
+ <a href="/tag/{{ tag | urlencode }}" title="{{ tag }}">{{ tag }}</a>
+{% endfor %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html b/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html
new file mode 100644
index 00000000..cb55582a
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/pm_inbox.html
@@ -0,0 +1,37 @@
+{% extends "layouts/content" %}
+{% block content %}
+{% if not msgs.isEmpty() %}
+<ul id="private-messages">
+ {% for msg in msgs %}
+ <li class="msg">
+ <div class="msg-cont">
+ <div class="msg-header">
+ @<a href="/{{ msg.getUser().getName() }}/">{{ msg.getUser().getName() }}</a>:
+ <div class="msg-avatar">
+ <a href="/{{ msg.getUser().getName() }}/">
+ <img src="//i.juick.com/a/{{ msg.getUser().getUID() }}.png" alt="{{ msg.getUser().getName() }}"/>
+ </a>
+ </div>
+ <div class="msg-ts">{{ msg.getDate() }}</div>
+ </div>
+
+ <div class="msg-txt">{{ msg.getText() | raw }}</div>
+
+ <form action="/pm/send" method="POST" enctype="multipart/form-data">
+ <input type="hidden" name="uname" value="{{ msg.getUser().getName() }}"/>
+ <div class="msg-comment">
+ <div class="ta-wrapper">
+ <textarea name="body" rows="1" class="replypm" placeholder="Написать ответ"></textarea>
+ </div>
+ </div>
+ </form>
+
+ </div>
+ </li>
+ {% endfor %}
+</ul>
+{% endif %}
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/homecolumn" %}
+{% endblock %}
diff --git a/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html b/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html
new file mode 100644
index 00000000..41f3814b
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/pm_sent.html
@@ -0,0 +1,33 @@
+{% extends "layouts/content" %}
+{% block content %}
+<form action="/pm/send" method="POST" enctype="multipart/form-data">
+ <div class="newpm">
+ <div class="newpm-to">To: <input type="text" name="uname" placeholder="username" value="{{ uname }}"/></div>
+ <div class="newpm-body"><textarea name="body" rows="2"></textarea></div>
+ <div class="newpm-send"><input type="submit" value="OK"/></div>
+ </div>
+</form>
+{% if not msgs.isEmpty() %}
+<ul id="private-messages">
+ {% for msg in msgs %}
+ <li class="msg">
+ <div class="msg-cont">
+ <div class="msg-header">
+ @<a href="/{{ msg.getUser().getName() }}/">{{ msg.getUser().getName() }}</a>:
+ <div class="msg-avatar">
+ <a href="/{{ msg.getUser().getName() }}/">
+ <img src="//i.juick.com/a/{{ msg.getUser().getUID() }}.png" alt="{{ msg.getUser().getName() }}"/>
+ </a>
+ </div>
+ <div class="msg-ts">{{ msg.getDate() }}</div>
+ </div>
+ <div class="msg-txt">{{ msg.getText() | raw }}</div>
+ </div>
+ </li>
+ {% endfor %}
+</ul>
+{% endif %}
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/homecolumn" %}
+{% endblock %}
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_about.html b/juick-www/src/main/webapp/WEB-INF/views/settings_about.html
new file mode 100644
index 00000000..a11a1609
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_about.html
@@ -0,0 +1,20 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <p>Full name: <input type="text" name="fullname" value="{{ userinfo.getFullName() }}"/></p>
+ <p>Country: <input type="text" name="country" value="{{ userinfo.getCountry() }}"/></p>
+ <p>URL: <input type="text" name="url" value="{{ userinfo.getUrl() }}" size="32"/><br/>
+ <small>Please, start with &quot;http://&quot;</small></p>
+ <p>About:<br/>
+ <input type="text" name="descr" value="{{ userinfo.getDescription() }}" style="width: 100%"/><br/>
+ <small>Max. 255 symbols</small></p>
+ <p>Avatar: <input type="file" name="avatar"/><br/>
+ <small>Recommendations: PNG, 96x96, &lt;50Kb. Also, JPG and GIF supported.</small></p>
+ <p><input type="hidden" name="page" value="about"/><input type="submit" value=" OK "/></p>
+ </form>
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_auth-email.html b/juick-www/src/main/webapp/WEB-INF/views/settings_auth-email.html
new file mode 100644
index 00000000..e7ed985a
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_auth-email.html
@@ -0,0 +1,9 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <p>{{ result }}</p><p><a href="/settings">Settings</a>.</p>
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_main.html b/juick-www/src/main/webapp/WEB-INF/views/settings_main.html
new file mode 100644
index 00000000..39c6d875
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_main.html
@@ -0,0 +1,156 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <h1>Настройки</h1>
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <fieldset>
+ <legend>Notification options</legend>
+ <p><input type="checkbox" name="jnotify" value="1" {% if notify_options.isRepliesEnabled() %}
+ checked="checked" {% endif %}/> Reply notifications (&quot;Message posted&quot;)</p>
+ <p><input type="checkbox" name="subscr_notify" value="1" {% if notify_options.isSubscriptionsEnabled() %}
+ checked="checked" {% endif %}/> Subscriptions notifications (&quot;@user subscribed...&quot;)</p>
+ <p><input type="checkbox" name="recomm" value="1" {% if notify_options.isRecommendationsEnabled() %}
+ checked="checked" {% endif %}/> Posts recommendations (&quot;Recommended by @user&quot;)</p>
+ <p><input type="hidden" name="page" value="main"/><input type="submit" value=" OK "/></p>
+ </fieldset>
+ </form>
+ <fieldset>
+ <legend style="background: url(//telegram.org/favicon.ico?3) no-repeat; padding-left: 58px; line-height: 48px;">
+ Telegram</legend>
+ {% if telegram_name is not empty %}
+ <form action="/settings" method="post">
+ <div>Telegram: <b>{{ telegram_name }}</b> &mdash;
+ <input type="hidden" name="page" value="telegram-del"/>
+ <input type="submit" value=" Disable "/>
+ </div>
+ </form>
+ {% else %}
+ <p>To connect Telegram account: send any text message to <a href="https://telegram.me/Juick_bot">@Juick_bot</a>
+ </p>
+ {% endif %}
+ </fieldset>
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <fieldset>
+ <legend style="background: url(//static.juick.com/settings/xmpp.png) no-repeat; padding-left: 58px; line-height: 48px;">
+ XMPP accounts
+ </legend>
+ <p>Your accounts:</p>
+ <p>
+ {% for jid in jids %}
+ <label><input type="radio" name="delete" value="xmpp;{{ jid }}">{{ jid }}</label><br/>
+ {% endfor %}
+ {% for auth in auths %}
+ <label><input type="radio" name="delete"
+ value="xmpp-unauth;{{ auth.getAccount() }}">{{ auth.getAccount() }}</label>
+ &mdash; <a href="#"
+ onclick="alert(\'To confirm, please send &quot;AUTH {{ auth.getAuthCode() }}&quot; (without quotes) from this account to &quot;juick@juick.com&quot;.\'); return false;">Confirm</a><br/>
+ {% endfor %}
+ </p>
+ {% if jids is not empty %}
+ <p><input type="hidden" name="page" value="jid-del"/><input type="submit" value=" Delete "/></p>
+ {% endif %}
+ <p>To add new jabber account: send any text message to <a href="xmpp:juick@juick.com?message;body=login">juick@juick.com</a>
+ </p>
+ </fieldset>
+ </form>
+ <fieldset>
+ <legend style="background: url(//static.juick.com/settings/email.png) no-repeat; padding-left: 58px; line-height: 48px;">
+ E-mail
+ </legend>
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <p>Add account:<br/>
+ <input type="text" name="account"/>
+ <input type="hidden" name="page" value="email-add"/>
+ <input type="submit" value=" Add "/>
+ </p>
+ </form>
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <p>Your accounts:</p>
+ <p>
+ {% for email in emails %}
+ <label><input type="radio" name="account" value="{{ email }}">{{ email }}</label><br/>
+ {% endfor %}
+ {% if emails is empty %}
+ - </p>
+ {% else %}
+ </p>
+ <p><input type="hidden" name="page" value="email-del"/><input type="submit" value=" Delete "/></p>
+ {% endif %}
+ </form>
+ {% if emails is not empty %}
+ <form action="/settings" method="POST" enctype="multipart/form-data">
+ <p>You can receive all your subscriptions by email:<br/>
+ Sent to <select name="account">
+ <option value="">Disabled</option>
+ {% for email in emails %}
+ <option value="{{ email }}" {% if eopts.getEmail()== email %} selected="selected" {% endif %}>
+ {{ email }}
+ </option>
+ {% endfor %}
+ </select> every day at <select name="time">
+ {% for hour in hours %}
+ <option value="{{ hour }}" {% if eopts.getSubscriptionHour() == hour %} selected="selected" {%
+ endif %}>
+ {{ hour }}:00 GMT
+ </option>
+ {% endfor %}
+ </select>
+ <input type="hidden" name="page" value="email-subscr"/>
+ <input type="submit" value="OK"/></p>
+ </form>
+ {% endif %}
+ <p>&nbsp;</p>
+ <p>You can post to Juick via e-mail. Send your <span style="text-decoration: underline">plain text</span>
+ messages to special secret e-mail. You can attach one photo or video file.</p>
+ <p>Secret email: {% if ehash is not empty %} <strong>{{ ehash }}</strong> {% else %}-{% endif %}</p>
+ <form action="/settings" method="post">
+ <p><input type="hidden" name="page" value="email"/><input type="submit" value=" Generate new "/></p>
+ </form>
+ </fieldset>
+ <fieldset>
+ <legend style="background: url(//static.juick.com/settings/facebook.png) no-repeat; padding-left: 58px; line-height: 48px;">
+ Facebook
+ </legend>
+ {% if fbstatus.isConnected() %}
+ {% if fbstatus.isCrosspostEnabled() %}
+ <form action="/settings" method="post">
+ <div>
+ Facebook: <b>Enabled</b> &mdash;
+ <input type="hidden" name="page" value="facebook-disable"/>
+ <input type="submit" value=" Disable "/>
+ </div>
+ </form>
+ {% else %}
+ <form action="/settings" method="post">
+ <div>
+ Facebook: <b>Disabled</b> &mdash;
+ <input type="hidden" name="page" value="facebook-enable"/>
+ <input type="submit" value=" Enable "/>
+ </div>
+ </form>
+ {% endif %}
+ {% else %}
+ <p>Cross-posting to Facebook: <a href="/_fblogin"><img src="//static.juick.com/facebook-connect.png" alt="Connect to Facebook"/></a></p>
+ {% endif %}
+ </fieldset>
+ <fieldset>
+ <legend style="background: url(//static.juick.com/settings/twitter.png) no-repeat; padding-left: 58px; line-height: 48px;">
+ Twitter</legend>
+ {% if twitter_name is not empty %}
+ <form action="/settings" method="post">
+ <div>Twitter: <b>{{ twitter_name }}</b> &mdash;
+ <input type="hidden" name="page" value="twitter-del"/>
+ <input type="submit" value=" Disable "/>
+ </div>
+ </form>
+ {% else %}
+ <p>Cross-posting to Twitter: <a href="/_twitter"><img src="//static.juick.com/twitter-connect.png"
+ alt="Connect to Twitter"/></a></p>
+ {% endif %}
+ </fieldset>
+
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_password.html b/juick-www/src/main/webapp/WEB-INF/views/settings_password.html
new file mode 100644
index 00000000..d7883546
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_password.html
@@ -0,0 +1,17 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <fieldset>
+ <legend>Changing your password</legend>
+ <form action="/settings" method="post">
+ <input type="hidden" name="page" value="password"/>
+ <p>Change password: <input type="password" name="password" size="8"/> <input type="submit"
+ value=" Update "/><br/>
+ <i>(max. length - 16 symbols)</i></p>
+ </form>
+ </fieldset>
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_privacy.html b/juick-www/src/main/webapp/WEB-INF/views/settings_privacy.html
new file mode 100644
index 00000000..29ed5e95
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_privacy.html
@@ -0,0 +1,9 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <p>Privacy</p>
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/settings_result.html b/juick-www/src/main/webapp/WEB-INF/views/settings_result.html
new file mode 100644
index 00000000..88a52938
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/settings_result.html
@@ -0,0 +1,9 @@
+{% extends "layouts/content" %}
+{% block content %}
+<article>
+ <p>{{ result | raw }}</p>
+</article>
+{% endblock %}
+{% block "column" %}
+{% include "views/partial/settings_tabs" %}
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/views/signup.html b/juick-www/src/main/webapp/WEB-INF/views/signup.html
new file mode 100644
index 00000000..e454f7dd
--- /dev/null
+++ b/juick-www/src/main/webapp/WEB-INF/views/signup.html
@@ -0,0 +1,41 @@
+{% extends "layouts/content" %}
+{% block content %}
+<h1 class="signup-h1">
+ {% if type | slice(0, 1) == 'f' %}
+ <img src="//static.juick.com/settings/facebook.png" alt="Facebook"/>
+ {% elseif type | slice(0, 1) == 'v' %}
+ <img src="//static.juick.com/settings/vk.png" alt="VKontakte"/>
+ {% elseif type | slice(0, 1) == 'x' %}
+ <img src="//static.juick.com/settings/xmpp.png" alt="XMPP"/>
+ {% elseif type | slice(0, 1) == 'd' %}
+ <img src="//telegram.org/favicon.ico?3" alt="Telegram"/>
+ {% endif %}
+ {{ account | raw }}</h1>
+
+<h2 class="signup-h2">Связать с существующим аккаунтом Juick</h2>
+<form action="/signup" method="post">
+ <input type="hidden" name="action" value="link"/>
+ <input type="hidden" name="type" value="{{ type }}"/>
+ <input type="hidden" name="hash" value="{{ hash }}"/>
+ {% if visitor.getUID() > 0 %}
+ <input type="submit" value="Связать с этим аккаунтом"/>
+ {% else %}
+ <p>Имя пользователя: <input type="text" name="username"/></p>
+ <p>Пароль: <input type="password" name="password"/></p>
+ <p><input type="submit" value=" OK "/></p>
+ {% endif %}
+</form>
+
+<hr class="signup-hr"/>
+
+<h2 class="signup-h2">Создать новый аккаунт Juick</h2>
+<form action="/signup" method="post">
+ <input type="hidden" name="action" value="new"/>
+ <input type="hidden" name="type" value="{{ type }}"/>
+ <input type="hidden" name="hash" value="{{ hash }}"/>
+ <p>Имя пользователя: <input type="text" name="username" id="username"/><br/><i>(От 2-х до 16-и латинских символов
+ и/или цифр, дефис)</i></p>
+ <p>Пароль: <input type="password" name="password"/><br/><i>(от 6-и до 32-х символов)</i></p>
+ <p><input type="submit" value=" OK "/></p>
+</form>
+{% endblock %} \ No newline at end of file
diff --git a/juick-www/src/main/webapp/WEB-INF/web.xml b/juick-www/src/main/webapp/WEB-INF/web.xml
index ed9e8e62..a31c71d0 100644
--- a/juick-www/src/main/webapp/WEB-INF/web.xml
+++ b/juick-www/src/main/webapp/WEB-INF/web.xml
@@ -2,42 +2,4 @@
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <servlet>
- <servlet-name>Main</servlet-name>
- <servlet-class>com.juick.www.Main</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>Main</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>/scripts.js</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>/style.css</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>/scripts.js.map</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>/style.css.map</url-pattern>
- </servlet-mapping>
- <mime-mapping>
- <extension>js</extension>
- <mime-type>application/javascript;charset=UTF-8</mime-type>
- </mime-mapping>
- <mime-mapping>
- <extension>css</extension>
- <mime-type>text/css;charset=UTF-8</mime-type>
- </mime-mapping>
- <session-config>
- <session-timeout>
- 30
- </session-timeout>
- </session-config>
</web-app>