Skip to content

Commit d4b2a93

Browse files
committed
Merge branch 'dc-master'
# Conflicts: # app/views/help/eng/api.markdown # app/views/help/spa/api.markdown # app/views/home/privacy.html.erb # app/views/home/terms.html.erb # config/routes.rb
2 parents 1a6bfeb + b0ac226 commit d4b2a93

34 files changed

+615
-214
lines changed

INSTALL.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Installation
22

3-
DocumentCloud self-installation instructions have been removed. They were out of date and required enormous handholding.
3+
sourceAFRICA self-installation instructions have been removed. They were out of date and required enormous handholding.
44

55
We understand the desire to self-install and we're considering how best to support that. But until then, we think it's best to call it an officially unsupported task not for the faint of heart, rather than imply support but offer only broken instructions.
66

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ What do we mean by *actionable documents*? Documents that the public need to hel
1212

1313
[sourceAFRICA](https://sourceafrica.net/) is powered by [DocumentCloud](https://github.com/documentcloud/documentcloud), and allows you to turn your documents into machine readable data, for better analysis. It also makes it easier for you to share documents and/or collaborate with your audience and colleagues.
1414

15-
*sourceAFRICA is offered as a service by [ANCIR (the African Network of Centers for Investigative Reporting)](http://investigativecenters.org) with support from [Code for Africa](http://www.codeforafrica.org).*
15+
*sourceAFRICA is offered as a service by [ANCIR (the African Network of Centers for Investigative Reporting)](https://investigativecenters.org) with support from [Code for Africa](https://codeforafrica.org).*
1616

1717
### Contributing
1818

app/controllers/annotations_controller.rb

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def show
4242
# being iframed. The normal show page can also be iframed, but there
4343
# will be a flash of unwanted layout elements before the JS/CSS
4444
# arrives which removes them.
45+
@embedded = true
4546
@exclude_analytics = true
4647
render template: 'annotations/show_embedded', layout: 'minimal'
4748
else

app/controllers/application_controller.rb

+9-4
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ class ApplicationController < ActionController::Base
1717
after_action :debug_api
1818
end
1919

20-
if Rails.env.production?
21-
around_action :notify_exceptions
22-
end
20+
around_action :notify_exceptions
2321

2422
protected
2523

@@ -301,13 +299,20 @@ def self.exclusive_access?
301299
def set_ssl
302300
Thread.current[:ssl] = request.ssl?
303301
end
302+
303+
ERRORS_TO_IGNORE = [
304+
AbstractController::ActionNotFound,
305+
ActionController::RoutingError,
306+
ActiveRecord::RecordNotFound,
307+
ActionController::UnknownFormat
308+
]
304309

305310
# Email production exceptions to us. Once every 2 minutes at most, per process.
306311
def notify_exceptions
307312
begin
308313
yield
309314
rescue Exception => e
310-
ignore = e.is_a?(AbstractController::ActionNotFound) || e.is_a?(ActionController::RoutingError)
315+
ignore = ERRORS_TO_IGNORE.any?{ |kind| e.is_a? kind }
311316
LifecycleMailer.exception_notification(e, params).deliver_now unless ignore
312317
raise e
313318
end

app/controllers/home_controller.rb

+43
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,29 @@ def contributors
2727
@contributors = yaml['contributors']
2828
end
2929

30+
def terms
31+
# We launched with versions `1`/`2`, but converted to `1.0`/`2.0` same day.
32+
# Still need to support any incoming requests for `/terms/2` for a while.
33+
return redirect_to terms_path(version: "#{params[:version]}.0") if %w[1 2].include? params[:version]
34+
35+
prepare_term_versions(changelog: 'terms/changelog')
36+
return not_found unless @version_numbers.include? @version
37+
38+
@canonical_url = terms_url if @version == @current_terms['version']
39+
render layout: 'minimal', template: "home/terms/show"
40+
end
41+
42+
def api_terms
43+
prepare_term_versions(changelog: 'api_terms/changelog')
44+
return not_found unless @version_numbers.include? @version
45+
46+
@canonical_url = api_terms_url if @version == @current_terms['version']
47+
render layout: 'minimal', template: "home/api_terms/show"
48+
end
49+
50+
def privacy
51+
render layout: 'minimal'
52+
end
3053

3154
private
3255

@@ -38,4 +61,24 @@ def yaml_for(action)
3861
YAML.load_file("#{Rails.root}/app/views/home/#{action}.yml")
3962
end
4063

64+
def prepare_term_versions(changelog:)
65+
@versions = yaml_for(changelog).sort { |a, b| b['version'] <=> a['version'] }
66+
67+
today = Date.today
68+
@version_numbers = []
69+
@versions.map! do |v|
70+
v['version'] = v['version'].to_s
71+
v['start'] = Date.parse(v['start']) rescue nil
72+
v['end'] = Date.parse(v['end']) rescue nil
73+
v['old'] = !v['current'] && (!v['start'] || v['start'] < today)
74+
v['pending'] = !v['current'] && v['start'] && today < v['start']
75+
@version_numbers.push v['version']
76+
v
77+
end
78+
79+
@current_terms = @versions.find { |v| v['current'] }
80+
@version = (params[:version] || @current_terms['version'])
81+
@viewing_terms = @versions.find { |v| v['version'] == @version }
82+
end
83+
4184
end

app/controllers/pages_controller.rb

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def show
2121
# being iframed. The normal show page can also be iframed, but there
2222
# will be a flash of unwanted layout elements before the JS/CSS
2323
# arrives which removes them.
24+
@embedded = true
2425
@exclude_analytics = true
2526
render template: 'pages/show_embedded'
2627
else

app/helpers/application_helper.rb

+4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ def compose_title(title)
44
(title ? "#{title} | " : '') + 'sourceAFRICA'
55
end
66

7+
def compose_canonical_url(canonical_url)
8+
canonical_url || request.url
9+
end
10+
711
def compose_html_classes(html_classes)
812
html_classes = html_classes.split if html_classes.is_a?(String)
913
[html_classes].flatten.join(' ')

app/models/featured_report.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class FeaturedReport < ActiveRecord::Base
1010
before_save :fixup_url
1111

1212
def fixup_url
13-
self.url = "http://#{url}" unless url=~/^http\:\/\//
13+
self.url = "https://#{url}" unless url=~/^https\:\/\//
1414
end
1515

1616
def writeup=(markdown)

app/views/embed/enhance.js.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ return out;},isString:function(thing){return!!(typeof thing==='string');},isElem
1919
if(obj.length>0){return false;}
2020
if(obj.length===0){return true;}
2121
for(var key in obj){if(Penny.has(obj,key)){return false;}}
22-
return true;},};}());(function(){var DocumentCloud=window.DocumentCloud;var Penny=window.Penny;if(DocumentCloud&&DocumentCloud._){var _=DocumentCloud._;}else if(Penny){var _=Penny;}else{console.error("DocumentCloud embed can't load because of missing components.");return false;}
22+
return true;},};}());(function(){var DocumentCloud=window.DocumentCloud;var Penny=window.Penny;if(DocumentCloud&&DocumentCloud._){var _=DocumentCloud._;}else if(Penny){var _=Penny;}else{console.error("sourceAFRICA embed can't load because of missing components.");return false;}
2323
var DCEmbedToolbelt=window.DCEmbedToolbelt=window.DCEmbedToolbelt||{unicodeLetter:'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC',unicodeNumber:'0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19',isResource:function(thing){return!!(_.has(thing,'resourceType'));},recognizeResource:function(originalResource){if(this.isResource(originalResource)){return originalResource;}
2424
var domainEnvPatterns={production:'sourceafrica\.net',staging:'staging\.sourceafrica\.net',development:'dev\.dcloud\.org'};var domains=_.values(domainEnvPatterns).join('|');var unicodeSlug=this.unicodeLetter+this.unicodeNumber+'\-';var docBase='('+domains+')\/documents\/([0-9]+)-(['+unicodeSlug+']+)';var resourceTypePatterns={'document':[docBase+'\.(?:html|js|json)$'],page:[docBase+'\.html#document\/p([0-9]+)$',docBase+'\/pages\/([0-9]+)\.(?:html|js|json)$'],note:[docBase+'\/annotations\/([0-9]+)\.(?:html|js|json)$',docBase+'\.html#document\/p[0-9]+\/a([0-9]+)$',docBase+'\.html#annotation\/a([0-9]+)$']};var makeDataUrl=function(resource){var urlComponents;switch(resource.resourceType){case'document':urlComponents=[resource.domain,'documents',resource.documentSlug];break;case'page':urlComponents=[resource.domain,'documents',resource.documentSlug];break;case'note':urlComponents=[resource.domain,'documents',resource.documentSlug,'annotations',resource.noteId];break;}
2525
return'//'+urlComponents.join('/')+'.json';};var resource={};_.each(resourceTypePatterns,function(patterns,resourceType){if(!_.isEmpty(resource)){return;}

app/views/help/eng/api.markdown

+3-19
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
sourceAFRICA's API provides resources to search, upload, edit, and organize documents as well as to work with projects. In addition, an oEmbed service provides easy integration of embedding documents, pages and notes.
44

5+
Use of the sourceAFRICA API indicates you have read and agree to our [API Guidelines and Terms of Service](/terms/api).
6+
57
## Contents
68

7-
* General:
8-
* [API Guidelines and Terms of Service](#guidelines)
99
* Document methods:
1010
* [Search](#search-documents)
1111
* [Upload](#upload-documents)
@@ -24,22 +24,6 @@ sourceAFRICA's API provides resources to search, upload, edit, and organize docu
2424
* [Notes](#oembed-notes)
2525
* [API Wrappers and Utilities](#api-wrappers)
2626

27-
<a name="guidelines"></a>
28-
# API Guidelines and Terms of Service
29-
30-
A limited portion of sourceAFRICA's API is available for public use, including document search and individual document data retrieval. All other resources require authentication via a sourceAFRICA account. No API key is required.
31-
32-
Please be considerate and don't hammer our servers. Also:
33-
34-
* You may not recreate sourceAFRICA.net in its entirety or build an application that simply displays the complete set of documents. You may not build an application that displays the document set of a contributing organization.
35-
36-
* If your project allows users to interact with data from sourceAFRICA, you must cite sourceAFRICA as the source of your data. If your project allows users to view or browse specific documents, you must cite sourceAFRICA and the contributing organizations as identified in the API.
37-
38-
* You may not use the API commercially; you may not charge people money to look at the data or sell advertising specifically against it.
39-
40-
* You understand and acknowledge that any data provided by our API may contain errors and omissions.
41-
42-
_Restrictions on the use of the sourceAFRICA API do not apply to participating organizations working with documents uploaded by their own users. We reserve the right to revise these guidelines. If you violate the spirit of these terms, especially if you use the API to systematically access and reprint documents that you or your newsroom didn't contribute, expect to be blocked without advance warning._
4327

4428
# Document Methods
4529

@@ -61,7 +45,7 @@ order | the order by which documents are listed | title (default is "cre
6145

6246
### Example
6347

64-
/api/search.json?q=obama&page=2
48+
/api/search.json?q=zuma&page=2
6549

6650
<div class="api_search_form">
6751
<p>

app/views/help/spa/api.markdown

+4-15
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
El API proporciona recursos para buscar, cargar, editar y organizar documentos, así como para trabajar con proyectos. Además, un servicio oEmbed proporciona una fácil integración de incrustación de documentos, páginas y notas.
44

5+
Use of the sourceAFRICA API indicates you have read and agree to our [Directrices y Condiciones del Servicio de API](/terms/api).
6+
57
## Contenido
68

79
* General:
8-
* [Directrices y Condiciones del Servicio de API](#guidelines)
10+
* [Directrices y Condiciones del Servicio de API](/terms/api)
911
* Métodos de Documento:
1012
* [Busque](#search-documents)
1113
* [Cargar](#upload-documents)
@@ -24,19 +26,6 @@ El API proporciona recursos para buscar, cargar, editar y organizar documentos,
2426
* [Notas](#oembed-notes)
2527
* [Envolturas de la API y Utilidades](#api-wrappers)
2628

27-
<a name="guidelines"></a>
28-
# Directrices y Condiciones del Servicio de API
29-
30-
Una porción limitada de la API de sourceAFRICA está disponible para el uso público, incluyendo la búsqueda y recuperación de documentos de datos documento individual. El resto de los recursos requieren autenticación a través de una cuenta de sourceAFRICA. No se requiere ninguna clave de API.
31-
32-
Por favor sea considerado y no martillar nuestros servidores.
33-
34-
* Bajo ninguna circunstancia se permitirá la reproducción de sourceAFRICA.net en su totalidad o construir una aplicación que simplemente muestre el conjunto completo de documentos. Tiene prohibido crear una aplicación que muestre el conjunto de documentos de una organización aportadora.
35-
* Si su proyecto permite a los usuarios interactuar con los datos de sourceAFRICA, está obligado a citar sourceAFRICA como la fuente de sus datos. Si su proyecto permite a los usuarios ver o explorar documentos específicos, debe citar sourceAFRICA, así como a las organizaciones aportadoras pertinentes, identificadas en el API.
36-
* No se permite utilizar la API comercialmente, lo que significa que no se permite cobrar dinero a la gente para mirar los datos, o vender publicidad con dicha información.
37-
* Usted entiende y acepta que los datos proporcionados por nuestro API pueden contener errores y omisiones.
38-
39-
_Restricciones en el uso de la API sourceAFRICA no se aplican a las organizaciones participantes que trabajan con documentos cargados por sus propios usuarios. Nos reservamos el derecho de modificar estas directrices. Si usted viola el espíritu de estos términos, sobre todo si se utiliza la API para acceder y reimprimir documentos que usted o su sala de redacción no contribuyeron de forma sistemática, esperar ser bloqueados sin previo aviso._
4029

4130
# Métodos de Documento
4231

@@ -58,7 +47,7 @@ mentions | incluyen las menciones destacadas de la frase de búsqueda |
5847

5948
### Ejemplo
6049

61-
/api/search.json?q=obama&page=2
50+
/api/search.json?q=zuma&page=2
6251
<div class="api_search_form">
6352
<p>
6453
Utilice el campo de búsqueda de abajo para intentar consultas y ver como es el JSON resultante.

app/views/home/_footer.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@
4949
<a href="/privacy">Privacy Policy</a>
5050
</div>
5151

52-
<p style="text-align:center;">Brought to you by <a href="http://investigativecenters.org" target="_blank">ANCIR</a> and <a href="http://www.codeforafrica.org" target="_blank">Code for Africa</a> using <a href="https://github.com/documentcloud/documentcloud" target="_blank">DocumentCloud</a>.</p>
52+
<p style="text-align:center;">Brought to you by <a href="https://investigativecenters.org" target="_blank">ANCIR</a> and <a href="https://codeforafrica.org" target="_blank">Code for Africa</a> using <a href="https://github.com/documentcloud/documentcloud" target="_blank">DocumentCloud</a>.</p>
5353

5454
</div>

0 commit comments

Comments
 (0)