2012-10-29 21:43:52 +08:00
{% load i18n %}
2012-09-03 20:54:07 +08:00
{% load url from future %}
2013-04-06 17:18:20 +08:00
var Bottom_bar = '< div id = "bottom-bar" > {% if groups %}< button id = "discuss" > < span class = "icon-comment-alt" > < / span > {% trans "Discuss" %}< / button > < button id = "click-into-group" > < span class = "icon-double-angle-right" > < / span > {% trans "Group" %}< / button > {% endif %}< / div > ';
2012-08-08 17:14:04 +08:00
$('#wrapper').append(Bottom_bar);
2013-03-15 14:41:20 +08:00
$('#main-panel').css('margin-bottom', $('#bottom-bar').outerHeight() + 2);
2012-08-15 14:16:15 +08:00
$('#footer').addClass('hide');
2012-10-20 20:18:08 +08:00
{% if groups %}
2013-04-04 19:58:00 +08:00
function getAndHandleDiscussions(data_html) {
2013-04-18 14:46:41 +08:00
$('#discussions-to-grp').html(data_html).css({'max-height': parseInt($(window).height() * 0.9 - $('#bottom-bar').height() - $('#discuss-to-group-caret').height() - $('#discuss-to-group-form').outerHeight())}).removeClass('hide'); // 'parseInt' to fix '.msg-main top border missing when the ul's max-height is xxx.5px'
2013-04-04 19:58:00 +08:00
{% include 'group/msg_js.html' %}
}
2013-03-15 14:41:20 +08:00
$('#discuss').click(function() {
2013-04-04 19:58:00 +08:00
var popup = $('#discuss-to-group');
2013-03-15 14:41:20 +08:00
var caret = $('#discuss-to-group-caret');
2013-04-04 19:58:00 +08:00
if (popup.hasClass('hide')) {
popup.removeClass('hide');
2013-03-15 14:41:20 +08:00
caret.removeClass('hide');
caret.css({'left': $(this).offset().left});
2013-04-04 19:58:00 +08:00
$.ajax({
url:$('#discuss-to-group-form').attr('action'),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {
'repo_id': '{{ repo.id }}',
'path': '{{ path }}'
},
success: function(data) {
getAndHandleDiscussions(data['html']);
},
error: function(jqXHR, textStatus, errorThrown) {
var err_str = '';
if (jqXHR.responseText) {
err_str = $.parseJSON(jqXHR.responseText).err;
feedback(err_str, 'error');
}
}
});
2012-10-22 17:15:35 +08:00
} else {
2013-04-04 19:58:00 +08:00
popup.addClass('hide');
2013-03-15 14:41:20 +08:00
caret.addClass('hide');
2012-10-22 17:15:35 +08:00
}
});
2013-04-05 11:52:37 +08:00
2012-10-22 17:15:35 +08:00
$(document).click(function(e) {
var target = e.target || event.srcElement;
2013-04-04 19:58:00 +08:00
if (!$('#discuss, #discuss-to-group, #discuss-to-group-caret').is(target) & & !($('#discuss-to-group, #discuss-to-group-caret').find('*').is(target))) {
$('#discuss-to-group, #discuss-to-group-caret').addClass('hide');
2012-10-22 17:15:35 +08:00
}
2012-08-08 17:14:04 +08:00
});
2012-09-03 20:54:07 +08:00
2013-03-15 14:41:20 +08:00
$('#discuss-submit').click(function() {
2013-04-04 19:58:00 +08:00
var form = $('#discuss-to-group-form'),
form_id = form.attr('id');
if (form.find('.checkbox-checked').length == 0) {
apply_form_error(form_id, '{% trans "Please select at least 1 group." %}');
return false;
}
2013-03-15 14:41:20 +08:00
if (!$.trim($('#discuss-to-group-form .input').val())) {
2013-04-04 19:58:00 +08:00
apply_form_error(form_id, '{% trans "Please input a discussion." %}');
2012-10-22 17:15:35 +08:00
return false;
}
2013-04-04 19:58:00 +08:00
form.find('.error').addClass('hide');
var groups = [];
form.find('.checkbox-checked .checkbox-orig').each(function() {
groups.push($(this).val());
});
$.ajax({
url: form.attr('action'),
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
beforeSend: prepareCSRFToken,
traditional: true,
data: {
'groups': groups,
'message': form.find('.input').val(),
'repo_id': '{{ repo.id }}',
'path': '{{ path }}',
'attach_type': form.find('[name="attach_type"]').val()
},
success: function(data) {
if(data['success']) {
feedback(data['success'], 'success');
getAndHandleDiscussions(data['html']);
form.find('.input').val('');
}
if(data['err']) {
feedback(data['err'], 'error');
}
},
error: function(jqXHR, textStatus, errorThrown) {
var err_str = '';
if (jqXHR.responseText) {
err_str = $.parseJSON(jqXHR.responseText).err;
} else {
err_str = '{% trans "Failed. Please check the network." %}';
}
apply_form_error(form_id, err_str);
}
});
return false;
2012-10-22 17:15:35 +08:00
});
$('#main').append('< div id = "to-group" class = "hide" > {{ repo_group_str|escapejs }}< / div > < div id = "to-group-caret" class = "hide" > < div class = "outer-caret" > < div class = "inner-caret" > < / div > < / div > < / div > ');
2012-09-03 20:54:07 +08:00
$('#click-into-group').click(function() {
2012-10-19 14:25:23 +08:00
{% if groups|length == 1 %}
// only one group, just turn to group page
2012-09-03 20:54:07 +08:00
{% for group in groups %}
location.href= "{% url 'group_info' group.id %}";
{% endfor %}
2012-11-13 16:22:35 +08:00
2012-10-19 14:25:23 +08:00
{% else %}
// more than one group, then let user choose
2012-10-20 21:37:02 +08:00
if ($('#to-group').hasClass('hide')) {
$('#to-group, #to-group-caret').removeClass('hide');
2012-11-13 16:22:35 +08:00
$('#to-group-caret').css('left', $('#click-into-group').offset().left + $('#click-into-group').width()/3);
if ($('#to-group').offset().left > $('#click-into-group').offset().left) {
$('#to-group').css('left', $('#click-into-group').offset().left);
}
2012-10-20 21:37:02 +08:00
} else {
$('#to-group, #to-group-caret').addClass('hide');
}
2012-10-19 14:25:23 +08:00
{% endif %}
2012-09-03 20:54:07 +08:00
});
2012-10-20 21:37:02 +08:00
$(document).click(function(e) {
var target = e.target || event.srcElement;
if (!$('#click-into-group, #to-group, #to-group-caret').is(target) & & !($('#to-group, #to-group-caret').find('*').is(target))) {
$('#to-group, #to-group-caret').addClass('hide');
}
});
2012-11-28 19:39:22 +08:00
{% endif %}
2012-11-13 16:22:35 +08:00
$(function() {
var btn_height = $('#bottom-bar button').outerHeight();
2013-03-15 14:41:20 +08:00
$('#discuss-to-group-caret, #to-group-caret, #comment-caret').css({'bottom': btn_height + 1});
2013-04-04 19:58:00 +08:00
$('#file-comment, #to-group, #discuss-to-group').css({'bottom': btn_height + 1 + $('.outer-caret').outerHeight()});
2012-11-13 16:22:35 +08:00
});