Add 'get count of comment' method

Draft JavaScript side
pull/6/head
Yax 10 years ago
parent 8893cf83ed
commit 71383eff9a

@ -11,17 +11,13 @@ from app.helpers.hashing import md5
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@app.route("/comments", methods=['GET', 'POST']) @app.route("/comments", methods=['GET'])
def query_comments(): def query_comments():
comments = [] comments = []
try: try:
if request.method == 'POST': token = request.args.get('token', '')
token = request.json['token'] url = request.args.get('url', '')
url = request.json['url']
else:
token = request.args.get('token', '')
url = request.args.get('url', '')
logger.info('retrieve comments for token %s, url %s' % (token, url)) logger.info('retrieve comments for token %s, url %s' % (token, url))
for comment in Comment.select(Comment).join(Site).where( for comment in Comment.select(Comment).join(Site).where(
@ -44,3 +40,19 @@ def query_comments():
r = jsonify({'data': []}) r = jsonify({'data': []})
r.status_code = 400 r.status_code = 400
return r return r
@app.route("/comments/count", methods=['GET'])
def get_comments_count():
try:
token = request.args.get('token', '')
url = request.args.get('url', '')
count = Comment.select(Comment).join(Site).where(
(Comment.url == url) &
(Site.token == token)).count()
r = jsonify({'count': count})
r.status_code = 200
except:
r = jsonify({'count': 0})
r.status_code = 200
return r

@ -35,11 +35,11 @@
<meta name="msapplication-TileColor" content="#2d89ef"> <meta name="msapplication-TileColor" content="#2d89ef">
<meta name="msapplication-TileImage" content="/mstile-144x144.png"> <meta name="msapplication-TileImage" content="/mstile-144x144.png">
<!-- === javascript dependencies === -->
<script src="js/markdown.js"></script> <script src="js/markdown.js"></script>
<!-- cosysnode dependencies -->
<script src="js/mustache.js"></script> <script src="js/mustache.js"></script>
<script src="js/stacosys.js"></script> <script src="js/stacosys.js"></script>
<script src="js/page.js"></script>
</head> </head>
<body> <body>
@ -92,7 +92,7 @@ instance d'ici peu.</p>
</div> </div>
<div class="comment"> <div class="comment">
<div id="submit-button"> <div id="submit-button">
<a class="button-success pure-button" href="javascript:showHide('comment-form',%20'submit-button');">Commenter</a> <a class="button-success pure-button" href="javascript:show_hide('comment-form','submit-button');">Commenter</a>
</div> </div>
<div id="comment-form" style="display:none"> <div id="comment-form" style="display:none">
@ -124,13 +124,31 @@ instance d'ici peu.</p>
</form> </form>
</div> </div>
<!-- ====================================================== -->
<!-- Begin section : display comments -->
<!-- ====================================================== -->
<p></p>
<div id="show-comments-button" style="display:none">
<a id="show-comment-label" class="button-success pure-button"
href="javascript:show_comments();">Voir le commentaire</a>
</div>
<!-- stacosys comments container --> <!-- stacosys comments container -->
<div id="stacosys-comments">Chargement...</div> <div id="stacosys-comments" style="display:none">Chargement...</div>
<!-- stacosys comments template -->
<script id="stacosys-template" type="x-tmpl-mustache"> <script id="stacosys-template" type="x-tmpl-mustache">
{{#data}} {{#data}}
<hr> <hr>
<div class="inline"> <div class="inline">
{{#site}}
<a href="{{site}}">
{{/site}}
<img src="http://www.gravatar.com/avatar/{{avatar}}.jpg" style="float:left; margin-right:10px" height="32" width="32"> <img src="http://www.gravatar.com/avatar/{{avatar}}.jpg" style="float:left; margin-right:10px" height="32" width="32">
{{#site}}
</a>
{{/site}}
<span class="title">{{author}}</span> <span class="title">{{author}}</span>
<span> - {{date}}</span> <span> - {{date}}</span>
</div> </div>
@ -138,38 +156,11 @@ instance d'ici peu.</p>
{{/data}} {{/data}}
</script> </script>
<script type="text/javascript"><!-- <!-- ====================================================== -->
<!-- End section : display comments -->
<!-- ====================================================== -->
function showHide(panel_id, button_id){ </div>
if (document.getElementById(panel_id).style.display == 'none'){
document.getElementById(panel_id).style.display = '';
document.getElementById(button_id).style.display = 'none';
} else {
document.getElementById(panel_id).style.display = 'none';
}
}
function get_action() {
return '/post_a_new_comment';
}
function preview_markdown() {
if (document.getElementById('preview-container').style.display == 'none'){
document.getElementById('preview-container').style.display = '';
}
var $ = function (id) { return document.getElementById(id); };
new Editor($("message"), $("preview"));
}
function Editor(input, preview) {
this.update = function () {
preview.innerHTML = markdown.toHTML(input.value);
};
input.editor = this;
this.update();
}
--></script> </div>
</article> </article>
</section> </section>
</div> </div>
@ -203,6 +194,23 @@ function Editor(input, preview) {
</div> </div>
</div> </div>
<!-- ====================================================== -->
<!-- Begin section : page initialization -->
<!-- ====================================================== -->
<script type="text/javascript"><!--
STACOSYS_URL = 'http://127.0.0.1:8000';
STACOSYS_TOKEN = '9fb3fc042c572cb831005fd16186126765140fa2bd9bb2d4a28e47a9457dc26c';
//STACOSYS_PAGE = 'blogduyax.madyanne.fr/mes-applications-pour-blackberry.html'
STACOSYS_PAGE = 'blogduyax.madyanne.fr/migration-du-blog-sous-pelican.html'
window.onload = stacosys_count();
--></script>
<!-- ====================================================== -->
<!-- End section : page initialization -->
<!-- ====================================================== -->
</body></html> </body></html>

@ -0,0 +1,33 @@
function show_hide(panel_id, button_id){
if (document.getElementById(panel_id).style.display == 'none'){
document.getElementById(panel_id).style.display = '';
document.getElementById(button_id).style.display = 'none';
} else {
document.getElementById(panel_id).style.display = 'none';
}
}
function show_comments() {
stacosys_load();
show_hide('stacosys-comments', 'show-comments-button');
}
function preview_markdown() {
if (document.getElementById('preview-container').style.display == 'none'){
document.getElementById('preview-container').style.display = '';
}
var $ = function (id) { return document.getElementById(id); };
new Editor($("message"), $("preview"));
}
function Editor(input, preview) {
this.update = function () {
preview.innerHTML = markdown.toHTML(input.value);
};
input.editor = this;
this.update();
}
function get_action() {
return '/post_a_new_comment';
}

@ -1,11 +1,6 @@
// Released under Apache license // Released under Apache license
// Copyright (c) 2015 Yannic ARNOUX // Copyright (c) 2015 Yannic ARNOUX
STACOSYS_URL = 'http://127.0.0.1:8000';
STACOSYS_TOKEN = '9fb3fc042c572cb831005fd16186126765140fa2bd9bb2d4a28e47a9457dc26c';
//STACOSYS_PAGE = 'blogduyax.madyanne.fr/mes-applications-pour-blackberry.html'
STACOSYS_PAGE = 'blogduyax.madyanne.fr/migration-du-blog-sous-pelican.html'
// Create the XHR object. // Create the XHR object.
function stacosys_get_cors_request(method, url) { function stacosys_get_cors_request(method, url) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
@ -23,12 +18,38 @@ function stacosys_get_cors_request(method, url) {
return xhr; return xhr;
} }
function stacosys_get_url() { function stacosys_count() {
return STACOSYS_URL + '/comments?token=' + STACOSYS_TOKEN + '&url=' + STACOSYS_PAGE; var url = STACOSYS_URL + '/comments/count?token=' + STACOSYS_TOKEN + '&url=' + STACOSYS_PAGE;
var xhr = stacosys_get_cors_request('GET', url);
if (!xhr) {
console.log('CORS not supported');
return 0;
}
// Response handlers.
xhr.onload = function() {
var jsonResponse = JSON.parse(xhr.responseText);
var count = jsonResponse.count;
if (count > 0) {
if (count > 1) {
document.getElementById('show-comment-label').innerHTML = 'Voir les ' + count + ' commentaires';
}
document.getElementById('show-comments-button').style.display = '';
}
return jsonResponse.count;
};
xhr.onerror = function() {
console.log('Woops, there was an error making the request.');
return 0;
};
xhr.send();
} }
function stacosys_load() { function stacosys_load() {
var url = stacosys_get_url(); var url = STACOSYS_URL + '/comments?token=' + STACOSYS_TOKEN + '&url=' + STACOSYS_PAGE;
var xhr = stacosys_get_cors_request('GET', url); var xhr = stacosys_get_cors_request('GET', url);
if (!xhr) { if (!xhr) {
alert('CORS not supported'); alert('CORS not supported');
@ -52,4 +73,3 @@ function stacosys_load() {
xhr.send(); xhr.send();
} }
window.onload = stacosys_load;

Loading…
Cancel
Save