repository_directories.js.coffee revision 9399847ffc7503de7fc4cd5738acf0bc0177843e
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde if $('#repository_directories_form_line_prototype').length > 0
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde clone_element = (source_matcher) ->
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen source_el = $($(source_matcher)[0])
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde clone_and_prepend_to = (source_matcher, target_matcher, callback) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde target_el = $($(target_matcher)[0])
fc464e5b2b2ab4d415a5d5b90ce4475d34620a75Timo Sirainen clone_el = clone_element(source_matcher)
d99107ddf4d9bccb710994482daf65276a9d6321Timo Sirainen callback(clone_el) if callback
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde setup_form_clone = (clone_el) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde setup_form_submission_handling(clone_el)
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde animateIn(clone_el)
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen $('input[name="repository_directory[name]"]', clone_el).focus()
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen remove_form_clone = (remove_el, callback) ->
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen animateOut(remove_el, () ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde callback() if callback
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen add_to_table = (link_el) ->
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen table = $('#directory-listing')
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen animateIn(link_el)
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen animateIn = (element) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde element.stop(true, true).fadeIn({queue: false}).
0f4fb03953afa4a39d5e32e9ca0527c0a84f9aeeTimo Sirainen css({display: 'none'}).slideDown()
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde animateOut = (element, callback) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde element.stop(true, true).fadeOut({queue: false}).slideUp(callback)
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen remove_empty_repository_hint = () ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde hint_line = $('#empty_repository_hint')
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen animateOut(hint_line)
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen show_flash_message = (message) ->
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen flash_messages_el = $('.flash-messages')
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen flash_prototype_el = $('#repository_directories_flash_message_prototype')
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde clone_and_prepend_to(flash_prototype_el, flash_messages_el, (clone_el) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde directory_link = (link) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde line_el = clone_element('#repository_directories_line_prototype')
9f10cc61ec303351b43e54155c86699ef53cb8beTimo Sirainen anchor_el = $('a', line_el)
fc464e5b2b2ab4d415a5d5b90ce4475d34620a75Timo Sirainen handle_form_submission = (event) ->
fc464e5b2b2ab4d415a5d5b90ce4475d34620a75Timo Sirainen form = $(this)
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen success_callback = (json, text_status, jqXHR) ->
0f4fb03953afa4a39d5e32e9ca0527c0a84f9aeeTimo Sirainen form_tr = form.parent().parent()
0f4fb03953afa4a39d5e32e9ca0527c0a84f9aeeTimo Sirainen remove_form_clone(form_tr, () -> add_to_table(directory_link(json.link)))
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen remove_empty_repository_hint()
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen show_flash_message(json.text)
64bfe7b4a42512971db154937905dfa2bdb9cf2cTimo Sirainen error_callback = (jqXHR) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde type: 'POST'
64bfe7b4a42512971db154937905dfa2bdb9cf2cTimo Sirainen url: $(this).attr('action'),
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde data: values,
64bfe7b4a42512971db154937905dfa2bdb9cf2cTimo Sirainen success: success_callback,
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen error: error_callback
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen # Return false to prevent sending the form.
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde # For some reason event.preventDefault() does not work.
64bfe7b4a42512971db154937905dfa2bdb9cf2cTimo Sirainen setup_form_submission_handling = (form_parent_el) ->
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde form_el = $('form', $(form_parent_el))
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde form_el.unbind('submit').submit(handle_form_submission)
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen form_prototype_el = $($('#repository_directories_form_line_prototype')[0])
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen setup_form_submission_handling(form_prototype_el)
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen btn_create_el = $('#create_subdirectory')
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen btn_create_el.click(() -> clone_and_prepend_to(
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde form_prototype_el, form_prototype_el.parent(), setup_form_clone))