From 38283e2ab7886eade91103d0df2f773497b6cee7 Mon Sep 17 00:00:00 2001 From: llj Date: Thu, 13 Mar 2014 14:07:44 +0800 Subject: [PATCH] [msg] enable 'add files' for msg-send in user-msg-list page --- .../message/templates/message/user_msg.html | 10 +++ .../templates/message/user_msg_list.html | 89 ++++++++++++++++++- seahub/message/views.py | 13 ++- seahub/templates/repo.html | 2 +- 4 files changed, 106 insertions(+), 8 deletions(-) diff --git a/seahub/message/templates/message/user_msg.html b/seahub/message/templates/message/user_msg.html index 2455f8acaa..1908e0712e 100644 --- a/seahub/message/templates/message/user_msg.html +++ b/seahub/message/templates/message/user_msg.html @@ -10,6 +10,16 @@ {{ msg.timestamp|translate_seahub_time }}

{{ msg.message|seahub_urlize|find_at|linebreaksbr }}

+ {% if msg.attachments %} + + {% endif %} diff --git a/seahub/message/templates/message/user_msg_list.html b/seahub/message/templates/message/user_msg_list.html index 9dd8dc59a2..7dffe9bc0a 100644 --- a/seahub/message/templates/message/user_msg_list.html +++ b/seahub/message/templates/message/user_msg_list.html @@ -3,6 +3,20 @@ {% block sub_title %}{% trans "Messages" %} - {% endblock %} +{% block extra_style %} + +{% endblock %} + {% block cur_messages %}tab-cur{% endblock %} {% block right_panel %} @@ -17,10 +31,20 @@ {% for error in form.message.errors %}

{{ error|escape }}

{% endfor %} + + +
+

{% trans "Choose a file or files:" %}

+
+ +
+ + +
{% endif %} {% if person_msgs %} @@ -116,18 +140,73 @@ $(window).scroll(function() { $('#message').focus(function() { $(this).height(75); - $('#personal-message-form').find('.submit, .cancel').removeClass('hide'); + $('#personal-message-form').find('.submit, .cancel, .add-file').removeClass('hide'); }); $('#personal-message-form .cancel').click(function() { $(this).addClass('hide'); - $('#personal-message-form .submit').addClass('hide'); + $('.submit, .add-file', $('#personal-message-form')).addClass('hide'); + $('#selected-files').data('files', '').html('').addClass('hide'); $('#message').val('').height(25); }); +$('#personal-message-form .add-file').click(function(){ + $('#add-file-popup').modal(); + $.ajax({ + 'url': '{% url 'get_my_unenc_repos' %}', + 'cache': false, + 'dataType': 'json', + 'success': function(data) { + var file_tree = new FileTree(); + var repos = file_tree.format_repo_data(data); + if (repos.length > 0) { + file_tree.renderFileTree($('#file-tree').data('site_root', '{{SITE_ROOT}}'), repos, {'two_state': true}); + } else { + $('#file-tree').html('

' + "{% trans "You don't have any library at present" %}" + '

'); + } + }, + 'error': function(jqXHR, textStatus, errorThrown) { + if (!jqXHR.responseText) { + $('#file-tree').html('

' + "{% trans "Failed. Please check the network." %}" + '

'); + } + } + }); +}); +$('#add-file-popup .submit').click(function() { + var files_ct = $('#selected-files'); + var selected = files_ct.data('files') || []; + $('[name="selected"][checked="checked"]', $('#file-tree')).each(function() { + var val = $(this).val(); + if (val.charAt(val.length - 1) != '/') { // only submit file + selected.push($(this).val()); + } + }); + $.modal.close(); + var files = ''; + for (var i = 0, len = selected.length; i < len; i++) { + files += '
  • ' + selected[i].substr(selected[i].lastIndexOf('/') + 1) + '
  • '; + } + files_ct.data('files', selected).html(files).removeClass('hide'); + $('.item', files_ct).hover( + function() { + $(this).addClass('hl').children('.icon-remove').removeClass('vh'); + }, + function() { + $(this).removeClass('hl').children('.icon-remove').addClass('vh'); + } + ); + $('.icon-remove', files_ct).click(function() { + var selected_f = files_ct.data('files'); + selected_f.splice($(this).data('index'), 1); + $(this).parent().remove(); + files_ct.data('files', selected_f); + }); +}); + $('#personal-message-form').submit(function() { var form = $(this), msg_input = $('[name="mass_msg"]', form), - msg = $.trim(msg_input.val()); + msg = $.trim(msg_input.val()), + files_ct = $('#selected-files'); if (!msg) { return false; @@ -140,7 +219,8 @@ $('#personal-message-form').submit(function() { type: 'POST', dataType: 'json', beforeSend: prepareCSRFToken, - data: { 'mass_msg': msg, 'mass_email': '{{to_email}}' }, + data: { 'mass_msg': msg, 'mass_email': '{{to_email}}', 'selected': files_ct.data('files') || [] }, + traditional: true, success: function(data) { var new_msg = $(data['html']); if ($('.msg-list').length == 0) { // the new discussion is the first discussion in this page @@ -150,6 +230,7 @@ $('#personal-message-form').submit(function() { bind_del(new_msg); new_msg.slideDown(400); msg_input.val(''); + files_ct.data('files','').html('').addClass('hide'); enable(sb_btn); }, error: function (xhr, textStatus, errorThrown) { diff --git a/seahub/message/views.py b/seahub/message/views.py index 674d991dbf..d24785b124 100755 --- a/seahub/message/views.py +++ b/seahub/message/views.py @@ -186,15 +186,22 @@ def message_send(request): continue usermsg = UserMessage.objects.add_unread_message(username, to_email, mass_msg) - msgs.append(usermsg) + usermsg.attachments = [] if len(attached_items) > 0: for att_item in attached_items: repo_id = att_item['repo_id'] path = att_item['path'] pfds = PrivateFileDirShare.objects.add_read_only_priv_file_share( username, to_email, repo_id, path) - UserMsgAttachment.objects.add_user_msg_attachment(usermsg, pfds) + att = UserMsgAttachment.objects.add_user_msg_attachment(usermsg, pfds) + att.repo_id = repo_id + att.path = path + att.name = os.path.basename(path.rstrip('/')) + att.token = pfds.token + usermsg.attachments.append(att) + + msgs.append(usermsg) email_sended.append(to_email) html = '' @@ -205,7 +212,7 @@ def message_send(request): html = render_to_string('message/all_msg.html', ctx) else: ctx['msg'] = msgs[0] - html = render_to_string('message/user_msg.html', ctx) + html = render_to_string('message/user_msg.html', ctx, context_instance=RequestContext(request)) return HttpResponse(json.dumps({"html": html, "error": errors}), content_type=content_type) else: return HttpResponse(json.dumps({"html": html, "error": errors}), status=400, content_type=content_type) diff --git a/seahub/templates/repo.html b/seahub/templates/repo.html index 89f74ab2ce..88b0ad213e 100644 --- a/seahub/templates/repo.html +++ b/seahub/templates/repo.html @@ -184,7 +184,7 @@

    {% trans "Please click and choose a directory."%}

    - +