class Choosealicense # Checks if Flash is available in the client. flashAvailable: -> if ActiveXObject? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) else !!navigator.mimeTypes["application/x-shockwave-flash"] # Selects the content of a given element selectText: (element) -> if document.body.createTextRange range = document.body.createTextRange() range.moveToElementText(element) range.select() else if window.getSelection selection = window.getSelection() range = document.createRange() range.selectNodeContents(element) selection.removeAllRanges() selection.addRange(range) # Qtip position attributes for tooltips qtip_position: my: "top center" at: "bottom center" # Annotation categories as defined in `_config.yml` categories: required: "Required" permitted: "Permitted" forbidden: "Forbidden" # fire on document.ready constructor: -> @initTooltips() @initClipboard() @initLicenseVariationNav() # Init tooltip action initTooltips: -> # Dynamically add annotations as title attribute to rule list items for category, rules of annotations for label, text of rules $(".license-rules ul.license-#{category} li.#{label}").attr "title", text # Init tooltips on all rule list items for category, label of @categories $(".license-#{category} li").qtip content: text: false title: text: label position: @qtip_position style: classes: "qtip-shadow qtip-#{category}" false # Initializes ZeroClipboard initZeroClipboard: -> # Backup the clipboard button's original text. $(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text() # Hook up copy to clipboard buttons clip = new ZeroClipboard $(".js-clipboard-button"), moviePath: "/js/ZeroClipboard.swf" clip.on "mouseout", @clipboardMouseout clip.on "complete", @clipboardComplete clip # Initializes an alternative way to copy the license for non-flash compatible # browsers initAlternativeClipboard: -> $(".js-clipboard-button").click (e) => target = "#" + $(e.target).data("clipboard-target") @selectText $(target)[0] # if Zero Clipboard is present, bind to button and init initClipboard: -> if ZeroClipboard? && @flashAvailable() @initZeroClipboard() else @initAlternativeClipboard() # Callback to restore the clipboard button's original text clipboardMouseout: (client, args) -> @innerText = $(this).data("clipboard-prompt") # Post-copy user feedback callback clipboardComplete: (client, args) -> @innerText = "Copied!" # Initializes pill navigation for license variations initLicenseVariationNav: -> $(".js-nav-pills a").click (e) -> selectedTab = $(this).data("selected-tab") nav = $(this).closest(".js-nav-pills") nav.find("li").removeClass("active") nav.closest(".js-license-variations").siblings(".js-variation-tab").removeClass("active") $(this).parent("li").addClass("active") $("." + selectedTab).addClass("active") e.preventDefault() $ -> new Choosealicense()