url encode ksv

by slawe

CoffeeScript

urlEncode = (str) ->
  str = escape(str)
  str.replace /[*+\/@]|%20/g, (s) ->
    switch s
      when '*'
        s = '%2A'
      when '+'
        s = '%2B'
      when '/'
        s = '%2F'
      when '@'
        s = '%40'
      when ' '
        s = '%20'
    s

generateUrl = (base, campaign, cid) ->
  console.log(campaign)

  tags = ''
  keywords = ''
  if campaign.keywords instanceof Array
  	#console.log(campaign.keywords)
    angular.forEach campaign.keywords, ((keywordsObject) ->
      console.log(keywordsObject.text)
      keywords += keywordsObject.text + " "
    )
    keywords = keywords.substring(0, keywords.length - 1);
  else
    keywords = campaign.keywords
    
  if typeof cid == "undefined"
    url = base + campaign.campaign_id
  else
    url = base + cid

  url = url + "/?"
  url = url + "utm_source="+campaign.source.toLowerCase()+"&"
  url = url + "utm_medium="+campaign.medium.toLowerCase()+"&"
  url = url + "utm_term="+urlEncode(keywords.toLowerCase())+"&"
  url = url + "utm_content="+urlEncode(campaign.content.toLowerCase())+"&"
  url = url + "utm_campaign="+urlEncode(campaign.name.toLowerCase())

  return url
  

bs = 'http://slawe.org/cap/'
id = 87
obj = {}
obj.campaignInfo = {
  name: 'SOME cap Name'
  theme: 'rdn-default'
  description: 'small text description...'
  url: 'http://slawe.org'
  startDate: '02/18/2016'
  endDate: '02/28/2016'
  source: 'Facebook'
  tagging: 'manual tagging'
  velocifyId: '087'
  keywords: [
  	{text: 'oNe'}
    {text: 'two'}
    {text: 'THREE'}
  ]
  medium: 'email'
  content: 'some TEST content here.'
  pages: []
}

console.log(generateUrl(bs, obj.campaignInfo, id))