Explorar o código

Create a site wide ad unit to show on all sponsor spots if wanted

Markus Ochel %!s(int64=12) %!d(string=hai) anos
pai
achega
3f20c0e3b6

+ 5 - 0
admin/controllers/sites.coffee

@@ -15,6 +15,7 @@ class SiteForm extends Spine.Controller
     'form':               'form'
     'input[name=_id]':    'formSiteId'
     'select[name=theme]': 'formTheme'
+    'input[name=default_ad_enabled]':     'formDefaultAdEnabled'
     '.social-links-list': 'socialLinksList'
     '.save-button':       'saveButton'
     '.cancel-button':     'cancelButton'
@@ -58,6 +59,7 @@ class SiteForm extends Spine.Controller
     if @editing
       @formTheme.val(@item.theme)
       @formSiteId.prop('readonly', true)
+      @formDefaultAdEnabled.prop('checked', @item.default_ad_enabled)
     else
       @addSocialLink()
 
@@ -87,6 +89,9 @@ class SiteForm extends Spine.Controller
       if label and url
         links.push label: label, url: url, code: code
     @item.social_links = links
+
+    # Take care of some boolean checkboxes
+    @item.default_ad_enabled = @formDefaultAdEnabled.is(':checked')
     
     # Save the item and make sure it validates
     if @item.save()

+ 4 - 1
admin/models/site.coffee

@@ -6,7 +6,7 @@ utils = require('lib/utils')
 BaseModel = require('models/base')
 
 class Site extends BaseModel
-  @configure "Site", "_id", "name", "name_html", "tagline", "menu_html", "header_html", "footer_html", "link", "social_links", "theme", "css", "seo_description", "seo_keywords", "google_analytics_code", "editor_email", "admin_email"
+  @configure "Site", "_id", "name", "name_html", "tagline", "menu_html", "header_html", "footer_html", "link", "social_links", "theme", "css", "seo_description", "seo_keywords", "google_analytics_code", "editor_email", "admin_email", "default_ad_unit", "default_ad_enabled"
   
   @extend @CouchAjax
   
@@ -22,6 +22,9 @@ class Site extends BaseModel
       found = Site.exists(@_id)
       return 'Site ID has been already used.' if found
 
+    # Convert some boolean properties
+    @default_ad_enabled = Boolean(@default_ad_enabled)
+
     return false
 
 module.exports = Site

+ 5 - 0
admin/templates/site-form.html

@@ -100,6 +100,11 @@
       <label>Admin Email</label>
       <input type="text" name="admin_email" value="{{admin_email}}" placeholder="admin@example.com">
     </div>
+    <div class="field">
+      <label>Default Ad Unit <small style="font-size: 0.7em;">(HTML embed)</small></label>
+      <textarea name="default_ad_unit" placeholder="e.g. Default AdSense unit embed code, or linked image markup">{{default_ad_unit}}</textarea>
+      <input type="checkbox" name="default_ad_enabled" style="float: none;">Enabled
+    </div>
   </div>
 
 </form>

+ 18 - 0
site/server/lists.coffee

@@ -114,6 +114,15 @@ exports.collection = (head, req) ->
       sponsor = null
 
   if collection
+    if not sponsor and site and site.default_ad_unit and site.default_ad_enabled
+      # In this case create a new sponsor object and use
+      # the site's default ad unit if enabled
+      sponsor = {}
+      sponsor.content = site.default_ad_unit
+      sponsor.embed_format = true
+      sponsor.for_type = collection.type
+      sponsor.for_type_tc = collection.type_tc
+
     return {
       on_dev: utils.isDev(req)
       area: 'collection'
@@ -272,6 +281,15 @@ exports.doc = (head, req) ->
       sponsor = null
 
   if doc
+    if not sponsor and site and site.default_ad_unit and site.default_ad_enabled
+      # In this case create a new sponsor object and use
+      # the site's default ad unit if enabled
+      sponsor = {}
+      sponsor.content = site.default_ad_unit
+      sponsor.embed_format = true
+      sponsor.for_type = doc.type
+      sponsor.for_type_tc = doc.type_tc
+
     return {
       on_dev: utils.isDev(req)
       area: 'doc'