Skip to content

Commit d0a7960

Browse files
committed
Merge branch 'develop'
2 parents fe1ffbc + 09a2536 commit d0a7960

File tree

8 files changed

+62
-36
lines changed

8 files changed

+62
-36
lines changed

Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ gem 'rails', '~> 5.0.1'
1212

1313
# Cortex-specific
1414
gem 'cortex-exceptions', '= 0.0.4'
15-
gem 'cortex-plugins-core', '= 0.10.2'
15+
gem 'cortex-plugins-core', '= 0.10.4'
1616

1717
# API
1818
gem 'grape', '~> 0.17'

Gemfile.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ GEM
136136
concurrent-ruby (1.0.4)
137137
connection_pool (2.2.1)
138138
cortex-exceptions (0.0.4)
139-
cortex-plugins-core (0.10.2)
139+
cortex-plugins-core (0.10.4)
140140
cells (~> 4.1)
141141
cells-haml (~> 0.0.10)
142142
cells-rails (~> 0.0.6)
@@ -704,7 +704,7 @@ DEPENDENCIES
704704
cells-rails (~> 0.0.6)
705705
codeclimate-test-reporter (~> 0.6)
706706
cortex-exceptions (= 0.0.4)
707-
cortex-plugins-core (= 0.10.2)
707+
cortex-plugins-core (= 0.10.4)
708708
database_cleaner (~> 1.5)
709709
devise (~> 4.2.0)
710710
doorkeeper (~> 4.2)

app/controllers/rss/v2/rss_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class RssController < ApplicationController
44
include RssHelper
55

66
def index
7-
@content_items = rss_content_type.content_items
7+
@content_items = rss_content_type.content_items.select { |content_item| content_item.state == "published" }
88
end
99
end
1010
end

app/helpers/rss_helper.rb

+23-3
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,39 @@ def tag_data(tag_data_hash, rss_content_item)
2525
if tag_data_hash.keys.include?("string")
2626
tag_data_hash["string"]
2727
elsif tag_data_hash.keys.include?("field")
28-
field_item_data(tag_data_hash["field"], rss_content_item)
28+
field_item_data(tag_data_hash["field"], rss_content_item, tag_data_hash)
2929
elsif tag_data_hash.keys.include?("method")
3030
method_data(tag_data_hash["method"], rss_content_item)
31+
elsif tag_data_hash.keys.include?("media")
32+
media_data(tag_data_hash["media"], rss_content_item)
3133
end
3234
end
3335

3436
private
3537

36-
def field_item_data(field_id, rss_content_item)
37-
rss_content_item.field_items.find_by_field_id(field_id).data.values.join
38+
def field_item_data(field_id, rss_content_item, tag_data_hash)
39+
values = rss_content_item.field_items.find_by_field_id(field_id).data.values
40+
tag_data_hash.has_key?("multiple") ? (values.join(tag_data_hash["multiple"])) : (values.join)
3841
end
3942

4043
def method_data(method_hash, rss_content_item)
4144
rss_content_item.send(method_hash["name"], *method_hash["args"])
4245
end
46+
47+
def media_data(media_hash, rss_content_item)
48+
linked_field_item = rss_content_item.field_items.find_by_field_id(media_hash["field"])
49+
50+
field_name = linked_field_item.field.metadata["field_name"]
51+
asset_content_item_id = linked_field_item.data["content_item_id"]
52+
53+
asset_data = Field.find_by_name(field_name).field_items.find { |field_item| field_item.content_item_id == asset_content_item_id }.data["asset"]
54+
55+
{
56+
"url": asset_data["url"],
57+
"type": asset_data["content_type"],
58+
"medium": media_hash["medium"],
59+
"width": media_hash["width"] || asset_data["dimensions"]["width"],
60+
"height": media_hash["height"] || asset_data["dimensions"]["height"]
61+
}
62+
end
4363
end

app/models/concerns/cortex_rss_spec/item.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module CortexRssSpec
22
module Item
33
def self.feed
44
%w(
5-
title link description author category comments enclosure guid pubDate source
5+
title link description author category comments enclosure guid pubDate source media:content
66
)
77
end
88
end

app/models/content_item.rb

+7
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,13 @@ def tag_field_items
100100
field_items.select { |field_item| field_item.field.field_type_instance.is_a?(TagFieldType) }
101101
end
102102

103+
def tree_list(field_id)
104+
tree_array = Field.find(field_id).metadata["allowed_values"]["data"]["tree_array"]
105+
tree_values = field_items.find { |field_item| field_item.field_id == field_id }.data["values"]
106+
107+
tree_values.map { |value| tree_array.find { |node| node["id"] == value.to_i }["node"]["name"] }.join(",")
108+
end
109+
103110
def update_tag_lists
104111
tag_data = tag_field_items.map { |field_item| {tag_name: field_item.field.name, tag_list: field_item.data["tag_list"]} }
105112

app/views/rss/v2/rss/index.rss.builder

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,29 @@ Rails.cache.fetch("rss-v2-#{content_type.name}", expires_in: 30.minutes, race_co
1010
'xmlns:dc': 'http://purl.org/dc/elements/1.1/',
1111
'xmlns:atom': 'http://www.w3.org/2005/Atom',
1212
'xmlns:sy': 'http://purl.org/rss/1.0/modules/syndication/',
13-
'xmlns:slash': 'http://purl.org/rss/1.0/modules/slash/' do
13+
'xmlns:slash': 'http://purl.org/rss/1.0/modules/slash/',
14+
'xmlns:media': 'http://search.yahoo.com/mrss/' do
1415
xml.channel do
1516
rss_decorator["channel"].each_pair do |key, value|
1617
xml.tag! key_name(key), tag_data(value, nil) if channel_spec.include?(key_name(key))
1718
end
1819

1920
@content_items.each do |rss_content_item|
21+
2022
xml.item do
2123
rss_decorator["item"].each_pair do |key, value|
2224
tag_data = tag_data(value, rss_content_item)
2325
unless tag_data.blank?
2426
if value.has_key?('multiple')
2527
tag_data.split(value["multiple"]).each do |multi_value|
26-
xml.tag! key_name(key), multi_value, value['attributes'] if item_spec.include?(key_name(key))
28+
xml.tag! key, multi_value, value['attributes'] if item_spec.include?(key)
2729
end
2830
elsif value.has_key?('encode')
29-
xml.tag! "#{key_name(key)}:encoded", value['attributes'] do
31+
xml.tag! "#{key}:encoded", value['attributes'] do
3032
xml.cdata! tag_data
3133
end
32-
elsif item_spec.include?(key_name(key))
33-
xml.tag! key_name(key), tag_data, value['attributes']
34+
elsif item_spec.include?(key)
35+
xml.tag! key, tag_data, value['attributes']
3436
end
3537
end
3638
end

lib/tasks/employer/blog.rake

+20-23
Original file line numberDiff line numberDiff line change
@@ -344,37 +344,34 @@ namespace :employer do
344344
rss_hash = {
345345
"channel": {
346346
"title": { "string": "Employer Blog" },
347-
"link": { "string": "https://hiring.careerbuilder.com/promotions/" },
348-
"description": { "string": "A Blog for Employers" },
349-
"category:1": { "string": "Employers" },
350-
"category:2": { "string": "Blog" },
351-
"docs": { "string": "https://api.cbcortex.com/rss/v2/docs" },
352-
"ttl": { "string": "30" },
353-
"not_in_spec": { "string": "Should Not Be Included" }
347+
"link": { "string": "http://resources.careerbuilder.com" },
348+
"description": { "string": "News and trends, best practices, product news and more from CareerBuilder's experts." },
349+
"language": { "string": "en-US" }
354350
},
355351
"item": {
356352
"title": { "field": blog.fields.find_by_name('Title').id },
357353
"link": { "method": {
358354
"name": "rss_url",
359-
"args": ["https://hiring.careerbuilder.com/promotions/", blog.fields.find_by_name('Slug').id]
355+
"args": ["https://resources.careerbuilder.com/", blog.fields.find_by_name('Slug').id]
360356
}
361-
},
362-
"description": { "field": blog.fields.find_by_name('Description').id },
363-
"content": { "field": blog.fields.find_by_name('Body').id, "encode": true },
364-
"author": { "method": {
365-
"name": "user_email",
366-
"args": [blog.fields.find_by_name('Author').id]
367-
}
368357
},
369-
"category:1": { "field": blog.fields.find_by_name('Tags').id, "multiple": "," },
370-
# "category": { "field": blog.fields.find_by_name('Categories').id, "multiple": true }, Data not persisting, pending bugfix
371-
"guid": { "attributes": {
372-
"isPermaLink": false
373-
},
374-
"method": { "name": "id" }
375-
},
376358
"pubDate": { "field": blog.fields.find_by_name('Publish Date').id },
377-
"other_thing_that's_not_in_spec": { "string": "Should not appear in RSS Feed for Items" }
359+
"author": { "method": {
360+
"name": "user_email",
361+
"args": [blog.fields.find_by_name('Author').id]
362+
}, "encode": true
363+
},
364+
"category": { "method": {
365+
"name": "tree_list",
366+
"args": [blog.fields.find_by_name('Categories').id]
367+
}, "multiple": ","
368+
},
369+
"content": { "field": blog.fields.find_by_name('Body').id, "encode": true },
370+
"media:content": { "media":
371+
{ "field": blog.fields.find_by_name('Featured Image').id,
372+
"medium": "image"
373+
}
374+
}
378375
}
379376
}
380377

0 commit comments

Comments
 (0)