Integrate Twitter into activity log reports
Change-Id: I95721c7a25e60253e9acf244fb7ddc7a557e0ac1
This commit is contained in:
parent
488df692e7
commit
826e7a9c94
@ -272,7 +272,7 @@ def company_activity(company):
|
||||
return result
|
||||
|
||||
|
||||
@blueprint.route('/record/<record_id>')
|
||||
@blueprint.route('/record/<path:record_id>')
|
||||
@decorators.templated()
|
||||
@decorators.exception_handler()
|
||||
def record(record_id):
|
||||
|
@ -266,6 +266,42 @@ function extendWithGravatar(record, image_size) {
|
||||
});
|
||||
}
|
||||
|
||||
function extendWithTweet(record) {
|
||||
var tweet = null;
|
||||
|
||||
if (record.record_type == "commit") {
|
||||
tweet = "«" + record.subject + "» is committed by " + record.author_name + " in " + record.module;
|
||||
} else if (record.record_type == "mark") {
|
||||
if (record.type == "Workflow" && record.value == 1) {
|
||||
tweet = record.author_name + " approved «" + record.parent_subject + "» in " + record.module + ":P";
|
||||
} else if (record.type == "Self-Workflow" && record.value == 1) {
|
||||
tweet = record.author_name + " self-approved patch in " + record.module;
|
||||
} else if (record.type == "Workflow" && record.value == -1) {
|
||||
tweet = record.author_name + " work in progress on patch in " + record.module;
|
||||
} else if (record.type == "Abandon" || record.type == "Self-Abandon") {
|
||||
tweet = record.author_name + " abandoned patch in " + record.module;
|
||||
} else {
|
||||
var smile = [";(", ":(", "", ":)", ":D"][record.value + 2];
|
||||
tweet = "Got " + ((record.value > 0)? "+": "") + record.value + " from " + record.author_name + " on patch in " + record.module + smile;
|
||||
}
|
||||
} else if (record.record_type == "review") {
|
||||
tweet = record.status + " change request by " + record.author_name + " in " + record.module;
|
||||
} else if (record.record_type == "patch") {
|
||||
tweet = record.author_name + " submitted «" + record.parent_subject + "» in " + record.module;
|
||||
} else if (record.record_type == "email") {
|
||||
tweet = record.author_name + " emails about " + record.subject;
|
||||
} else if (record.record_type == "bpd" || record.record_type == "bpc") {
|
||||
tweet = "Blueprint «" + record.title + "» in " + record.module;
|
||||
} else if (record.record_type == "bugf" || record.record_type == "bugr") {
|
||||
tweet = record.status + " bug «" + record.title + "» in " + record.module + " " + record.web_link;
|
||||
} else if (record.record_type == "tr") {
|
||||
tweet = record.author_name + " translated " + record.loc + " words into " + record.language;
|
||||
}
|
||||
|
||||
record.tweet = tweet;
|
||||
record.tweet_url = "http://stackalytics.com/report/record/" + record.primary_key;
|
||||
}
|
||||
|
||||
function encodeURI(s) {
|
||||
s = encodeURIComponent(s);
|
||||
s = s.replace("*", "%2A");
|
||||
|
@ -1,5 +1,26 @@
|
||||
{% macro show_activity_log(user_id=None, company=None, blueprint_id=None,
|
||||
show_record_type=True, show_user_gravatar=True, gravatar_size=32, show_all=True) -%}
|
||||
show_record_type=True, show_user_gravatar=True, gravatar_size=32, show_all=True,
|
||||
show_twitter=False) -%}
|
||||
|
||||
{% if show_twitter %}
|
||||
<script>window.twttr = (function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0],
|
||||
t = window.twttr || {};
|
||||
if (d.getElementById(id)) return t;
|
||||
js = d.createElement(s);
|
||||
js.id = id;
|
||||
js.src = "https://platform.twitter.com/widgets.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
|
||||
t._e = [];
|
||||
t.ready = function(f) {
|
||||
t._e.push(f);
|
||||
};
|
||||
|
||||
return t;
|
||||
}(document, "script", "twitter-wjs"));
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<script type="text/javascript">
|
||||
var page_size = 10;
|
||||
@ -34,6 +55,9 @@ show_record_type=True, show_user_gravatar=True, gravatar_size=32, show_all=True)
|
||||
}
|
||||
$.each(data["activity"], function() {
|
||||
extendWithGravatar(this, {{ gravatar_size }});
|
||||
{% if show_twitter %}
|
||||
extendWithTweet(this);
|
||||
{% endif %}
|
||||
});
|
||||
$("#activity_template").tmpl(data["activity"]).appendTo("#activity_container");
|
||||
$('.ext_link').click(function (event) {
|
||||
@ -44,6 +68,9 @@ show_record_type=True, show_user_gravatar=True, gravatar_size=32, show_all=True)
|
||||
$(".expand-button").click(function () {
|
||||
$("#content-" + this.id).slideToggle('fast');
|
||||
});
|
||||
if (window.twttr.widgets) {
|
||||
window.twttr.widgets.load();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -175,6 +202,12 @@ show_record_type=True, show_user_gravatar=True, gravatar_size=32, show_all=True)
|
||||
{%elif record_type == "tr" %}
|
||||
<div class="header">Translated ${loc} words into ${language}</div>
|
||||
{%/if%}
|
||||
|
||||
{%if tweet %}
|
||||
<div style="margin-top: 1em;">
|
||||
<a href="https://twitter.com/intent/tweet?text=${tweet}&url=${tweet_url}" class="twitter-share-button" data-via="stackalytics">Tweet</a>
|
||||
</div>
|
||||
{%/if%}
|
||||
</div>
|
||||
</div>
|
||||
{% endraw %}
|
||||
|
@ -27,6 +27,7 @@
|
||||
{% if module_inst.has_drivers %}
|
||||
<div><b><a href="/report/ci/{{ module }}/7" target="_blank">Status of drivers testing in {{ module_inst.module_group_name }} during recent 7 days</a></b></div>
|
||||
{% endif %}
|
||||
<div><b><a href="/report/activity?module={{ module }}&project_type={{ project_type }}&release={{ release }}" target="_blank">Show activity report for {{ module }}</a></b></div>
|
||||
{% endif %}
|
||||
{% if company %}
|
||||
<div><b><a href="/report/companies/{{ company }}" target="_blank">Show activity report for {{ company_original }}</a></b></div>
|
||||
|
@ -2,5 +2,6 @@
|
||||
{% import '_macros/activity_log.html' as activity_log %}
|
||||
|
||||
{% block content %}
|
||||
{{ activity_log.show_activity_log(gravatar_size=64, show_all=False) }}
|
||||
{{ activity_log.show_activity_log(gravatar_size=64, show_all=False,
|
||||
show_twitter=True) }}
|
||||
{% endblock %}
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
<div id="punch_card"></div>
|
||||
|
||||
{{ activity_log.show_activity_log(company=company_name, gravatar_size=64) }}
|
||||
{{ activity_log.show_activity_log(company=company_name, gravatar_size=64,
|
||||
show_twitter=True) }}
|
||||
|
||||
{% endblock %}
|
||||
|
@ -2,41 +2,36 @@
|
||||
|
||||
{% set gravatar_size = 64 %}
|
||||
|
||||
{% if record.record_type == "commit" %}
|
||||
{% set tweet = "Commit by " + record.author + " in " + record.module %}
|
||||
{% elif record.record_type == "mark" %}
|
||||
{% if (record.type == "Workflow" and record.value == 1) %}
|
||||
{% set tweet = record.author_name + " approved patch by " + record.parent_author_name %}
|
||||
{% elif (record.type == "Self-Workflow" and record.value == 1) %}
|
||||
{% set tweet = record.author_name + " self-approved patch in " + record.module %}
|
||||
{% elif (record.type == "Workflow" and record.value == -1) %}
|
||||
{% set tweet = record.author_name + " works on patch in " + record.module %}
|
||||
{% elif (record.type == "Abandon" or record.type == "Self-Abandon") %}
|
||||
{% set tweet = record.author_name + " abandoned patch in " + record.module %}
|
||||
{% else %}
|
||||
{% if record.value > 0 %}
|
||||
{% set v = "+" %}
|
||||
{% endif %}
|
||||
{% set v = v ~ record.value %}
|
||||
{% set tweet = record.parent_author_name + " got " + v + " from " + record.author_name + " on patch in " + record.module %}
|
||||
{% endif %}
|
||||
{% elif record.record_type == "review" %}
|
||||
{% set tweet = record.status + " change request by " + record.author_name + " in " + record.module %}
|
||||
{% elif record.record_type == "patch" %}
|
||||
{% set tweet = "New patch by " + record.author_name + " in " + record.module %}
|
||||
{% elif record.record_type == "tr" %}
|
||||
{% set tweet = record.author_name + " translated " + record.loc + " words into " + record.language %}
|
||||
{% endif %}
|
||||
|
||||
{% set page_title = tweet %}
|
||||
|
||||
{% block scripts %}
|
||||
<script>window.twttr = (function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0],
|
||||
t = window.twttr || {};
|
||||
if (d.getElementById(id)) return t;
|
||||
js = d.createElement(s);
|
||||
js.id = id;
|
||||
js.src = "https://platform.twitter.com/widgets.js";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
|
||||
t._e = [];
|
||||
t.ready = function(f) {
|
||||
t._e.push(f);
|
||||
};
|
||||
|
||||
return t;
|
||||
}(document, "script", "twitter-wjs"));
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
var r = {};
|
||||
r.author_email = "{{ record.author_email }}";
|
||||
var r = {{ record | tojson | safe}};
|
||||
extendWithGravatar(r, {{ gravatar_size }});
|
||||
$("#gravatar").append("<img src=" + r.gravatar + ">")
|
||||
extendWithTweet(r);
|
||||
$("#gravatar").append("<img src=" + r.gravatar + ">");
|
||||
$("#tweet").append("<a href=\"https://twitter.com/intent/tweet?text=" + r.tweet + "\" class=\"twitter-share-button\" data-via=\"stackalytics\">Tweet</a>");
|
||||
document.title = r.tweet;
|
||||
if (window.twttr.widgets) {
|
||||
window.twttr.widgets.load();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@ -213,10 +208,7 @@
|
||||
into {{ record.language }}</div>
|
||||
{% endif %}
|
||||
|
||||
<div style="margin-top: 1em;">
|
||||
<a href="https://twitter.com/intent/tweet?text={{ tweet }}" class="twitter-share-button" data-via="stackalytics">Tweet</a>
|
||||
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
||||
</div>
|
||||
<div style="margin-top: 1em;" id="tweet"></div>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
<div id="punch_card"></div>
|
||||
|
||||
{{ activity_log.show_activity_log(user_id=user.user_id, show_user_gravatar=false, gravatar_size=64) }}
|
||||
{{ activity_log.show_activity_log(user_id=user.user_id,
|
||||
show_user_gravatar=false, gravatar_size=64, show_twitter=True) }}
|
||||
|
||||
{% endblock %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user