### This adds the special source editor (which is overwritten in right/source.rb) to this long-named map which gets triggered whenever we need javascript to translate fancy editor content into something friendly to the REST API. It basically loops through each item in the list and gets the card name from the standard "data-card-name" attribute. ### wagn.editorContentFunctionMap['.source-editor > .pointer-list'] = -> pointerContent @find('.TYPE-source').map( -> $(this).attr 'data-card-name' ) ### FIXME The following code is cut and pasted from wagn_mod.js.coffee. We need to scope it so that we can just refer to it and get rid of it here. ### pointerContent = (vals) -> list = $.makeArray(vals) list = $.map(list, (v, i) -> "[[" + v + "]]" if v and list.indexOf(v) is i ) $.makeArray(list).join "\n" $(window).ready -> ### To trigger click event if user forgets to click on 'add' button ### $('body').on('blur', '.RIGHT-source .sourcebox input',-> $('.TYPE-note .sourcebox button')[0].click()) ### The following is what translates the sourcebox into the form that we need it for the REST API and handles the request/response. ### $('body').on 'click', '.RIGHT-source .sourcebox button', -> button = $(this) field = $(this).closest('.sourcebox').find('input') sourceBox = $(this).closest('.sourcebox') #handle Error errorDiv = '<div class="sourceErrorMsg"> Invalid URL. (Valid URL looks like "http://www.example.com")</div>' errorMsg = sourceBox.find('.sourceErrorMsg') if errorMsg.length > 0 errorMsg.remove() #unless field.val().match /^http/ if field.val().length == 0 sourceBox.find('.sourceErrorMsg').remove() sourceBox.append(errorDiv) $("#input_box_flag").val("false") return false listDiv = field.closest( '.content-editor' ).find '.source-editor > .pointer-list' button.html 'Adding...' button.attr 'disabled', true $.ajax wagn.rootPath + '/card/create', { data : { success: { view : 'content' } slot: { structure: 'source item' } #fixme -- need codename sourcebox: 'true' card: { type_code: 'source' subcards : { '+Link' : { 'content' : field.val() } } } } success: (data) -> itemSlot = $('<div class="card-slot"></div>') listDiv.append itemSlot itemSlot.slotSuccess data field.val '' error: (xhr) -> button.slot().slotError xhr.status, xhr.responseText complete: -> $("#input_box_flag").val("false") button.html 'Add' button.attr 'disabled', false } false #disable other events # we need to replace the following to retain decent 'add source' behavior' # $('.TYPE-page .RIGHT-link').on 'change', 'input', -> # field = $(this) # frameslot = getFrameslot field # frameslot.html $('<iframe src="' + field.val() + '"></iframe>') # the following may no longer be necessary. it was a pre-"chosen" attempt at a topics editor" $('body').on 'click', '.wikirate-topic-list', (event) -> listlink = $(this) dialogDiv = listlink.data 'dialog' dialogOptions = { minWidth: 400, maxHeight:400, position: { my: "center", at: "center", of: window } } if dialogDiv dialogDiv.dialog dialogOptions else $.ajax( url: listlink.attr('href') ).done (data)-> dialogDiv = listlink.slot().find '.wikirate-topic-dialog' wagn.dd = dialogDiv dialogDiv.html data listlink.data 'dialog', dialogDiv dialogDiv.dialog dialogOptions dialogDiv.find('a').attr 'target','topics' event.preventDefault() $('#menu-bar').on 'mouseenter', '.main-links > div', -> ul = $(this).find('ul').first() ul.menu() ul.show() ul.position my: 'left top', at: 'left bottom', of: this $('#menu-bar').on 'mouseleave', '.main-links > div', -> ul = $(this).find('ul').first() ul.hide() $('body').on 'change', '.SELF-company_comparison select', -> $(this).closest('form').submit() #Moving it to newNoteJs # To add the source on blur event. #$("body").on "blur", "#sourcebox", -> # $(".sourcebox button").trigger "click" #warn = (stuff) -> console.log stuff if console?