diff --git a/app/controllers/enquiries_controller.rb b/app/controllers/enquiries_controller.rb
new file mode 100644
index 000000000..a278e6a1f
--- /dev/null
+++ b/app/controllers/enquiries_controller.rb
@@ -0,0 +1,155 @@
+class EnquiriesController < ApplicationController
+ skip_before_filter :verify_authenticity_token
+ skip_before_filter :check_authentication, :only => [:reindex]
+
+ before_filter :load_enquiry_or_redirect, :only => [:show, :edit, :destroy]
+ before_filter :current_user, :except => [:reindex]
+
+ # GET /enquiries
+ def index
+ # Skeleton based on child controller code
+ authorize! :index, Enquiry
+
+ @page_name = t("home.view_enquiries")
+ @aside = 'shared/sidebar_links'
+ @filter = params[:filter] || params[:status] || "all"
+ @order = params[:order_by] || 'enquirer_name'
+ setup_fields!
+ per_page = params[:per_page] || EnquiriesHelper::View::PER_PAGE
+ per_page = per_page.to_i unless per_page == 'all'
+
+ filter_enquiries per_page
+ end
+
+ # GET /enquiries/1
+ def show
+ authorize! :read, @enquiry
+
+ @page_name = t("enquiry.view")
+ @body_class = 'profile-page'
+ @enquiry = Enquiry.get(params[:id])
+ setup_fields!
+ end
+
+ # GET /enquiries/new
+ def new
+ # Skeleton based on child controller code
+ authorize! :create, Enquiry
+
+ @page_name = t("enquiries.create_new_enquiry")
+ setup_fields!
+ @exclude_tabs = ["e98c765c"]
+ @enquiry = Enquiry.new
+ end
+
+ # GET /enquiries/1/edit
+ def edit
+ # Skeleton based on child controller code
+ authorize! :update, @enquiry
+
+ @page_name = t("enquiry.edit")
+ setup_fields!
+ end
+
+ # POST /enquiries
+ def create
+ # Skeleton based on child controller code
+ authorize! :create, Enquiry
+
+ enquirer_name = params[:child].delete('enquirer_name')
+ create_enquiry({:enquirer_name => enquirer_name,
+ :criteria => params[:child]})
+ @enquiry['created_by_full_name'] = current_user_full_name
+
+ respond_to do |format|
+ if @enquiry.save
+ format.html { redirect_to(@enquiry) }
+ format.xml { render :xml => @enquiry, :status => :created, :location => @enquiry }
+ format.json {
+ render :json => @enquiry.compact.to_json
+ }
+ else
+ format.html {
+ @form_sections = get_form_sections
+ render :action => "new"
+ }
+ format.xml { render :xml => @enquiry.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ def update
+ # Not yet implemented
+ end
+
+ private
+
+ def load_enquiry_or_redirect
+ @enquiry = Enquiry.get(params[:id])
+
+ if @enquiry.nil?
+ flash[:error] = "Enquiry with the given id is not found"
+ redirect_to :action => :index and return
+ end
+ end
+
+ def filter_enquiries(per_page)
+ total_rows, enquiries = enquiries_by_user_access(@filter, per_page)
+ @enquiries = paginated_collection enquiries, total_rows
+ end
+
+ def enquiries_by_user_access(filter_option, per_page)
+ # Skeleton based on child controller code
+ keys = [filter_option] # Not currently using keys
+ options = {}
+ all_rows = Enquiry.view("all")
+ return all_rows.length, all_rows
+ end
+
+ def paginated_collection instances, total_rows
+ page = params[:page] || 1
+ WillPaginate::Collection.create(page, EnquiriesHelper::View::PER_PAGE, total_rows) do |pager|
+ pager.replace(instances)
+ end
+ end
+
+ def setup_fields!
+ @form_sections = get_form_sections
+ @fields = @form_sections.collect{ |section| section["fields"] }.flatten
+ @exclude_tabs = []
+ end
+
+ def get_form_sections
+ JSON.parse(File.read(Rails.root.join("config", "enquiry_form_sections.json").to_s)).collect do |form_section|
+ form_section["fields"].each do |field|
+ field["display_name"].each do |lang, str|
+ field["display_name_#{lang}"] = str
+ end
+ field.delete("display_name")
+
+ if field.has_key? "option_strings_text"
+ field["option_strings_text"].each do |lang, arr|
+ field["option_strings_text_#{lang}"] = arr.join("\n")
+ end
+ field.delete("option_strings_text")
+ end
+
+ Field.new(field)
+ end
+
+ ["name", "help_text", "description"].each do |property|
+ form_section[property].each do |lang, str|
+ form_section["#{property}_#{lang}"] = str
+ end
+ form_section.delete(property)
+ end
+
+ FormSection.new(form_section)
+ end
+ end
+
+ def create_enquiry(enquiry_params)
+ @enquiry = Enquiry.new_with_user_name(current_user, enquiry_params)
+ end
+
+end
diff --git a/app/helpers/enquiries_helper.rb b/app/helpers/enquiries_helper.rb
new file mode 100644
index 000000000..7419c6c0c
--- /dev/null
+++ b/app/helpers/enquiries_helper.rb
@@ -0,0 +1,11 @@
+module EnquiriesHelper
+
+ module View
+ PER_PAGE = 20
+ MAX_PER_PAGE = 9999
+ end
+
+ def text_to_identify_enquiry enquiry
+ enquiry['enquirer_name'].blank? ? enquiry.id : "Enquiry by #{enquiry['enquirer_name']}: #{enquiry.id}"
+ end
+end
diff --git a/app/models/enquiry.rb b/app/models/enquiry.rb
index 1dc92b7d9..74113be94 100644
--- a/app/models/enquiry.rb
+++ b/app/models/enquiry.rb
@@ -1,7 +1,8 @@
class Enquiry < CouchRest::Model::Base
use_database :enquiry
- include RecordHelper
+ include RecordHelper
+ include RapidFTR::CouchRestRailsBackward
before_save :find_matching_children
property :enquirer_name
@@ -49,7 +50,7 @@ def find_matching_children
self.potential_matches = children.map { |child| child.id }
verify_format_of(previous_matches)
- unless previous_matches.eql?(self.potential_matches)
+ if previous_matches.empty? or not previous_matches.eql?(self.potential_matches)
self.match_updated_at = Clock.now.to_s
end
end
diff --git a/app/models/field.rb b/app/models/field.rb
index 84c7bdecb..b3504531b 100644
--- a/app/models/field.rb
+++ b/app/models/field.rb
@@ -31,7 +31,8 @@ class Field
NUMERIC_FIELD = "numeric_field",
PHOTO_UPLOAD_BOX = "photo_upload_box",
AUDIO_UPLOAD_BOX = "audio_upload_box",
- DATE_FIELD = "date_field"
+ DATE_FIELD = "date_field",
+ LIST_RECORD_FIELD = "list_record_field"
]
validates_presence_of "display_name_#{I18n.default_locale}", :message=> I18n.t("errors.models.field.display_name_presence")
diff --git a/app/views/enquiries/_field_display_basic.html.erb b/app/views/enquiries/_field_display_basic.html.erb
new file mode 100644
index 000000000..0b0f37154
--- /dev/null
+++ b/app/views/enquiries/_field_display_basic.html.erb
@@ -0,0 +1,6 @@
+
+
+ <%= t(field.name, :default => field.display_name) %>:
+ <%= field_value_for_display (@enquiry[field.name] ? @enquiry[field.name] :
+ (@enquiry[:criteria] || @enquiry)[field.name]) %>
+
diff --git a/app/views/enquiries/_field_display_photo.html.erb b/app/views/enquiries/_field_display_photo.html.erb
new file mode 100644
index 000000000..2082a637a
--- /dev/null
+++ b/app/views/enquiries/_field_display_photo.html.erb
@@ -0,0 +1,22 @@
+
+
+<% content_for :javascript do %>
+
+<% end %>
+
+
+
+ <% # Not yet implemented %>
+
+
\ No newline at end of file
diff --git a/app/views/enquiries/_form_section.html.erb b/app/views/enquiries/_form_section.html.erb
new file mode 100644
index 000000000..01021d172
--- /dev/null
+++ b/app/views/enquiries/_form_section.html.erb
@@ -0,0 +1,11 @@
+<% unless @exclude_tabs.include?(form_section.unique_id) %>
+
+ <%= render :partial => "form_section_info", :locals => {:form_section => form_section} %>
+ <% (form_section.fields.select {|field| field.visible? }).each do |field| %>
+ <% if field.type != "list_record_field" && field.type != "photo_upload_box" %>
+ <%= render :partial => field.type, :object => field %>
+ <% end %>
+ <% end %>
+
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/enquiries/_form_section_info.html.erb b/app/views/enquiries/_form_section_info.html.erb
new file mode 100644
index 000000000..ccc5a7fc4
--- /dev/null
+++ b/app/views/enquiries/_form_section_info.html.erb
@@ -0,0 +1,15 @@
+<%= t(form_section.unique_id,:default => form_section.name) %>
+
+
+
diff --git a/app/views/enquiries/_header.html.erb b/app/views/enquiries/_header.html.erb
new file mode 100644
index 000000000..f48b6c873
--- /dev/null
+++ b/app/views/enquiries/_header.html.erb
@@ -0,0 +1,4 @@
+<%= t("enquiries.label") %>
+<% if can? :create, Enquiry %>
+ <%= link_to content_tag(:span, t("enquiries.create_new_enquiry"), :class => 'create_user'), new_enquiry_path, :class=>'btn' %>
+<% end %>
diff --git a/app/views/enquiries/_list_record_field.html.erb b/app/views/enquiries/_list_record_field.html.erb
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/views/enquiries/_photo_upload_box.html.erb b/app/views/enquiries/_photo_upload_box.html.erb
new file mode 100644
index 000000000..0510c540c
--- /dev/null
+++ b/app/views/enquiries/_photo_upload_box.html.erb
@@ -0,0 +1,22 @@
+
+ Photos should be no larger than 10mb. Audio files should be no larger than 10mb. The smaller the better.
+
+<% ChildrenHelper::EditView::ONETIME_PHOTOS_UPLOAD_LIMIT.times do |i|%>
+
+
+ <%= label_tag "enquiry[photo]#{i}", "Add Photo", :class=>'key' %>
+
+
+ <%= file_field_tag "enquiry[photo]#{i}" %>
+
+ <%= image_tag "new/icon_help.png", title: photo_upload_box.help_text, class: 'tool-tip-icon vtip' if photo_upload_box.help_text.present? %>
+
+<% end %>
+
+<% @enquiry.photos.each do |photo| %>
+
+ <%= label_tag "delete_enquiry_photo[#{photo.name}]", t("enquiry.actions.delete_photo") %>
+ <%= check_box_tag("delete_enquiry_photo[#{photo.name}]") %>
+ <%= thumbnail_tag(@enquiry, photo.name) %>
+
+<% end %>
diff --git a/app/views/enquiries/_select_box.html.erb b/app/views/enquiries/_select_box.html.erb
new file mode 100644
index 000000000..46d300464
--- /dev/null
+++ b/app/views/enquiries/_select_box.html.erb
@@ -0,0 +1,8 @@
+
+
+ <%= label_tag select_box.tag_name_attribute, t(select_box.name, :default => select_box.display_name), :class=>'key' %>
+
+<%= select_tag select_box.tag_name_attribute, options_for_select(select_box.select_options, (@enquiry[select_box.name] || '')) %>
+
+ <%= image_tag "new/icon_help.png", title: select_box.help_text, class: 'tool-tip-icon vtip' if select_box.help_text.present? %>
+
diff --git a/app/views/enquiries/_show_form_section.html.erb b/app/views/enquiries/_show_form_section.html.erb
new file mode 100644
index 000000000..12182bb69
--- /dev/null
+++ b/app/views/enquiries/_show_form_section.html.erb
@@ -0,0 +1,13 @@
+<% @form_sections.each do |section| %>
+
+
+
+
+ <%= render :partial => "form_section_info", :locals => {:form_section => section} %>
+
+ <% (section.fields.select{|field| field.visible?}).each do |field| %>
+ <%= render :partial => "field_display_#{field.display_type}", :locals=>{:field => field, :enquiry=>@enquiry} %>
+ <% end %>
+
+
+<% end %>
diff --git a/app/views/enquiries/_summary_row.html.erb b/app/views/enquiries/_summary_row.html.erb
new file mode 100644
index 000000000..6468fc0ca
--- /dev/null
+++ b/app/views/enquiries/_summary_row.html.erb
@@ -0,0 +1,39 @@
+
+
+
+
+
+
<%= link_to text_to_identify_enquiry(enquiry), enquiry_path(enquiry) %>
+
+
+ <% @fields.each do |relevant_field| %>
+ <% if relevant_field.visible? and relevant_field.is_highlighted? %>
+
+
<%= t(relevant_field.display_name) %>:
+
<%= enquiry[relevant_field[:name]] %>
+
+ <% end %>
+ <% end %>
+ <% if enquiry.match_updated_at %>
+
+
<%= t("enquiry.match_updated") %>:
+
<%= current_user.localize_date(enquiry.match_updated_at) %>
+
+ <% end %>
+
+
+
+
+ <% show_links = true unless local_assigns.has_key? :show_links %>
+ <% if show_links %>
+
+ <% if can?(:update, enquiry) %>
+
+ <%= link_to(t('buttons.edit'), edit_enquiry_path(enquiry), :class=>'edit') %> |
+
+ <% end %>
+
+ <% end %>
+
+
+
diff --git a/app/views/enquiries/_tabs.html.erb b/app/views/enquiries/_tabs.html.erb
new file mode 100644
index 000000000..cf45ee24d
--- /dev/null
+++ b/app/views/enquiries/_tabs.html.erb
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/app/views/enquiries/_text_field.html.erb b/app/views/enquiries/_text_field.html.erb
new file mode 100644
index 000000000..b5dfdf133
--- /dev/null
+++ b/app/views/enquiries/_text_field.html.erb
@@ -0,0 +1,10 @@
+
+
+ <%= label_tag text_field.tag_name_attribute, t(text_field.name, :default => text_field.display_name), :class=>'key' %>
+
+ <%= text_field_tag text_field.tag_name_attribute,
+ (@enquiry[text_field.name] ? @enquiry[text_field.name] :
+ (@enquiry[:criteria] || @enquiry)[text_field.name]) %>
+
+ <%= image_tag "new/icon_help.png", title: text_field.help_text, class: 'tool-tip-icon vtip' if text_field.help_text.present? %>
+
diff --git a/app/views/enquiries/_textarea.html.erb b/app/views/enquiries/_textarea.html.erb
new file mode 100644
index 000000000..15bdefa7b
--- /dev/null
+++ b/app/views/enquiries/_textarea.html.erb
@@ -0,0 +1,9 @@
+
+
+ <%= label_tag textarea.tag_name_attribute, t(textarea.name,:default => textarea.display_name), :class=>'key' %>
+
+ <%= text_area_tag textarea.tag_name_attribute,
+ (@enquiry[textarea.name] ? @enquiry[textarea.name] :
+ (@enquiry[:criteria] || @enquiry)[textarea.name]) %>
+ <%= image_tag "new/icon_help.png", title: textarea.help_text, class: 'tool-tip-icon vtip' if textarea.help_text.present? %>
+
diff --git a/app/views/enquiries/index.html.erb b/app/views/enquiries/index.html.erb
new file mode 100644
index 000000000..afbbd05b5
--- /dev/null
+++ b/app/views/enquiries/index.html.erb
@@ -0,0 +1,10 @@
+<%= render :partial => "enquiries/header" %>
+
+
+
+ <%= render :partial => "enquiries/summary_row", :collection => @enquiries, :as => :enquiry %>
+
+ <%= render :partial => 'shared/pagination', :locals => { :results => @enquiries } %>
+
+
+
diff --git a/app/views/enquiries/new.html.erb b/app/views/enquiries/new.html.erb
new file mode 100644
index 000000000..78257e9d1
--- /dev/null
+++ b/app/views/enquiries/new.html.erb
@@ -0,0 +1,21 @@
+<%= link_to t("enquiries.label"), enquiries_path %> > <%= t("enquiries.create_new_enquiry") %>
+
+<%= form_tag enquiries_path, :multipart => true do %>
+
+
+ <%= render :partial => "tabs", :object => @form_sections %>
+
+
+
+ <%= render :partial => "form_section", :collection => @form_sections %>
+
+ <%= discard_button :back %>
+ <%= submit_button %>
+
+
+
+
+<% end %>
+
+
+
diff --git a/app/views/enquiries/show.html.erb b/app/views/enquiries/show.html.erb
new file mode 100644
index 000000000..88eee72a7
--- /dev/null
+++ b/app/views/enquiries/show.html.erb
@@ -0,0 +1,23 @@
+<%= link_to t("enquiries.label"), enquiries_path %> > <%= text_to_identify_enquiry(@enquiry) %>
+
+<% if can? :update, @enquiry %>
+ <%= link_to content_tag(:span, t("buttons.edit"), :class => 'edit'), edit_enquiry_path(@enquiry), :class=>'btn' %>
+<% end %>
+
+
+ <% content_for :stylesheet do %>
+ <%= stylesheet_link_tag "jquery.lightbox-0.5" %>
+ <% end %>
+
+
+
+
+ <%= render :partial => "tabs", :object => @form_sections %>
+
+
+
+
+ <%= render :partial => "show_form_section" %>
+
+
+
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 181d4e53b..1e6da3ace 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -29,6 +29,9 @@
<% if can? :read, Child %>
<%= link_to t("navigation.children"), children_path %>
<% end %>
+ <% if can? :read, Enquiry %>
+ <%= link_to t("navigation.enquiries"), enquiries_path %>
+ <% end %>
<% if current_user_name==nil or can? :manage, FormSection %>
<%= link_to t("navigation.forms"), form_sections_path %>
<% end %>
diff --git a/config/enquiry_form_sections.json b/config/enquiry_form_sections.json
index 0ee96a091..0266dfacc 100644
--- a/config/enquiry_form_sections.json
+++ b/config/enquiry_form_sections.json
@@ -1,880 +1,954 @@
-[ {
- "name": {
- "en": "Potential matches"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": ""
- },
- "unique_id": "e98c765c",
- "visible": "true",
- "order": 1,
- "fields": [{
- "name": "91aec05e",
- "visible": "true",
- "type": "list_record_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": false,
- "display_name": {
- "en": "List of matching child records"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": false,
- "base_language": "en"
- },{
- "name": {
- "en": "Enquirer Details"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Details of the enquirer looking for child"
- },
- "unique_id": "5aaeeac6",
- "visible": "true",
- "order": 2,
- "fields": [{
- "name": "enquirer_name",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Name"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "7b8124c6",
- "visible": "true",
- "type": "select_box",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Sex"
- },
- "help_text": {
- "en": ""
- },
- "option_strings_text": {
- "en": ["Male", "Female"]
- },
- "base_language": "en"
- }, {
- "name": "f9e9ad8c",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "012dea68",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Place of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "0b4e5d02",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Address"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "1196a106",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Telephone number"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "19925d50",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Ethnic group/tribe"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "2087940e",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Nationality"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "39ef5e2c",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Relationship to child"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "4d64922e",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Message for the child"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-}, {
- "name": {
- "en": "Child Details"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Details of the child"
- },
- "unique_id": "6fd43e0e",
- "visible": "true",
- "order": 3,
- "fields": [{
- "name": "e078c116",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Name"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "ec630b8a",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Also known as(nickname)"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "000dbeb4",
- "visible": "true",
- "type": "select_box",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Sex"
- },
- "help_text": {
- "en": ""
- },
- "option_strings_text": {
- "en": ["Male", "Female"]
- },
- "base_language": "en"
- }, {
- "name": "11dea89c",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of birth/age"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "1927505e",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Languages spoken"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "1e8ca2ba",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Nationality"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "27923c80",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Ethnic group/tribe"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "2e494f78",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Distinguishing physical characteristics"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-}, {
- "name": {
- "en": "Family Details"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Family details of child"
- },
- "unique_id": "3b92cdc6",
- "visible": "true",
- "order": 4,
- "fields": [{
- "name": "42f16c80",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Father's name"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "68af5f5e",
- "visible": "true",
- "type": "select_box",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Is father alive?"
- },
- "help_text": {
- "en": ""
- },
- "option_strings_text": {
- "en": ["Yes", "No"]
- },
- "base_language": "en"
- }, {
- "name": "71e51c62",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "If father dead, please provide details"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "7bb943da",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Mother's name"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "8bfc073c",
- "visible": "true",
- "type": "select_box",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Is mother alive?"
- },
- "help_text": {
- "en": ""
- },
- "option_strings_text": {
- "en": ["Yes", "No"]
- },
- "base_language": "en"
- }, {
- "name": "95f98cbe",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "If mother dead please provide details"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "9a04f5d2",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Address of child before separation"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-}, {
- "name": {
- "en": "Siblings Details"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Child's siblings details"
- },
- "unique_id": "c5b7c470",
- "visible": "true",
- "order": 5,
- "fields": [{
- "name": "cc937e6a",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "1) Name of sibling or other child accompanying the child"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "ddf329b2",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Relationship"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "e687920c",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "ebcd630e",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Place of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "02995c28",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Current address"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "0797bcce",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Telephone"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "10810aa2",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "2) Name of sibling or other child accompanying the child"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "19bbeb0a",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Relationship"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "230f18b2",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "40e98016",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Place of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "49cf0ebc",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Current address"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "5a0237fa",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Telephone"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "64594b8a",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "3) Name of sibling or other child accompanying the child"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "68eb61c4",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Relationship"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "6ee93600",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "73c6a09a",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Place of birth"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "7d07c094",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Current address"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "8375bae4",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Telephone"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-}, {
- "name": {
- "en": "Separation History"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Separation History of child"
- },
- "unique_id": "988771d4",
- "visible": "true",
- "order": 6,
- "fields": [{
- "name": "9f1a1a9c",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Date of separation"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "acb62664",
- "visible": "true",
- "type": "text_field",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Place of separation"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }, {
- "name": "d168820e",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Circumstances of separation"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-}, {
- "name": {
- "en": "Tracing Information"
- },
- "help_text": {
- "en": ""
- },
- "description": {
- "en": "Other information to assist in tracing the child"
- },
- "unique_id": "e803e21a",
- "visible": "true",
- "order": 7,
- "fields": [{
- "name": "fa2f96fa",
- "visible": "true",
- "type": "textarea",
- "highlight_information": {
- "highlighted": false
- },
- "editable": true,
- "display_name": {
- "en": "Latest news received"
- },
- "help_text": {
- "en": ""
- },
- "base_language": "en"
- }],
- "editable": true,
- "base_language": "en"
-},
-{
-"name": {
-"en": "Photo"
-},
-"help_text": {
-"en": ""
-},
-"description": {
-"en": "Photo of the enquirer"
-},
-"unique_id": "1e1198ae",
-"visible": "true",
-"order": 8,
-"fields": [
-{
-"name": "current_photo_key",
-"visible": "true",
-"type": "photo_upload_box",
-"highlight_information": {
-"highlighted": false
-},
-"editable": true,
-"display_name": {
-"en": "Photo"
-},
-"help_text": {
-"en": ""
-},
-"base_language": "en"
-}
-],
-"editable": true,
-"base_language": "en"
-}
+[
+ {
+ "name":{
+ "en":"Potential Matches"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":""
+ },
+ "unique_id":"e98c765c",
+ "visible":"true",
+ "order":1,
+ "fields":[
+ {
+ "name":"91aec05e",
+ "visible":"true",
+ "type":"list_record_field",
+ "highlight_information":{
+ "highlighted":true
+ },
+ "editable":false,
+ "display_name":{
+ "en":"List of matching child records"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":false,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Enquirer Details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Details of the enquirer looking for child"
+ },
+ "unique_id":"5aaeeac6",
+ "visible":"true",
+ "order":2,
+ "fields":[
+ {
+ "name":"enquirer_name",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Name"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"7b8124c6",
+ "visible":"true",
+ "type":"select_box",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Sex"
+ },
+ "help_text":{
+ "en":""
+ },
+ "option_strings_text":{
+ "en":[
+ "Male",
+ "Female"
+ ]
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"f9e9ad8c",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"012dea68",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Place of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"0b4e5d02",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Address"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"1196a106",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Telephone number"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"19925d50",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Ethnic group/tribe"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"2087940e",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Nationality"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"39ef5e2c",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Relationship to child"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"4d64922e",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Message for the child"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Child Details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Details of the child"
+ },
+ "unique_id":"6fd43e0e",
+ "visible":"true",
+ "order":3,
+ "fields":[
+ {
+ "name":"e078c116",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Name"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"ec630b8a",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Also known as(nickname)"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"000dbeb4",
+ "visible":"true",
+ "type":"select_box",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Sex"
+ },
+ "help_text":{
+ "en":""
+ },
+ "option_strings_text":{
+ "en":[
+ "Male",
+ "Female"
+ ]
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"11dea89c",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of birth/age"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"1927505e",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Languages spoken"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"1e8ca2ba",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Nationality"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"27923c80",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Ethnic group/tribe"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"2e494f78",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Distinguishing physical characteristics"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Family Details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Family details of child"
+ },
+ "unique_id":"3b92cdc6",
+ "visible":"true",
+ "order":4,
+ "fields":[
+ {
+ "name":"42f16c80",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Father's name"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"68af5f5e",
+ "visible":"true",
+ "type":"select_box",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Is father alive?"
+ },
+ "help_text":{
+ "en":""
+ },
+ "option_strings_text":{
+ "en":[
+ "Yes",
+ "No"
+ ]
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"71e51c62",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"If father dead, please provide details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"7bb943da",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Mother's name"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"8bfc073c",
+ "visible":"true",
+ "type":"select_box",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Is mother alive?"
+ },
+ "help_text":{
+ "en":""
+ },
+ "option_strings_text":{
+ "en":[
+ "Yes",
+ "No"
+ ]
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"95f98cbe",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"If mother dead please provide details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"9a04f5d2",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Address of child before separation"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Siblings Details"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Child's siblings details"
+ },
+ "unique_id":"c5b7c470",
+ "visible":"true",
+ "order":5,
+ "fields":[
+ {
+ "name":"cc937e6a",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"1) Name of sibling or other child accompanying the child"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"ddf329b2",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Relationship"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"e687920c",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"ebcd630e",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Place of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"02995c28",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Current address"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"0797bcce",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Telephone"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"10810aa2",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"2) Name of sibling or other child accompanying the child"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"19bbeb0a",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Relationship"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"230f18b2",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"40e98016",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Place of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"49cf0ebc",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Current address"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"5a0237fa",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Telephone"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"64594b8a",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"3) Name of sibling or other child accompanying the child"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"68eb61c4",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Relationship"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"6ee93600",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"73c6a09a",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Place of birth"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"7d07c094",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Current address"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"8375bae4",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Telephone"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Separation History"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Separation History of child"
+ },
+ "unique_id":"988771d4",
+ "visible":"true",
+ "order":6,
+ "fields":[
+ {
+ "name":"9f1a1a9c",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Date of separation"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"acb62664",
+ "visible":"true",
+ "type":"text_field",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Place of separation"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ },
+ {
+ "name":"d168820e",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Circumstances of separation"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Tracing Information"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Other information to assist in tracing the child"
+ },
+ "unique_id":"e803e21a",
+ "visible":"true",
+ "order":7,
+ "fields":[
+ {
+ "name":"fa2f96fa",
+ "visible":"true",
+ "type":"textarea",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Latest news received"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ },
+ {
+ "name":{
+ "en":"Photo"
+ },
+ "help_text":{
+ "en":""
+ },
+ "description":{
+ "en":"Photo of the enquirer"
+ },
+ "unique_id":"1e1198ae",
+ "visible":"true",
+ "order":8,
+ "fields":[
+ {
+ "name":"current_photo_key",
+ "visible":"true",
+ "type":"photo_upload_box",
+ "highlight_information":{
+ "highlighted":false
+ },
+ "editable":true,
+ "display_name":{
+ "en":"Photo"
+ },
+ "help_text":{
+ "en":""
+ },
+ "base_language":"en"
+ }
+ ],
+ "editable":true,
+ "base_language":"en"
+ }
]
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index ac0d827d8..2661c631d 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -14,6 +14,7 @@ en:
current_time_zone: "Current time zone"
language: "Language"
view_records: "View Records"
+ view_enquiries: "View Enquiries"
users: "Manage Users"
manage_system_users: "Manage Server Synchronisation Users"
records_need_attention: "Records need Attention"
@@ -67,6 +68,7 @@ en:
navigation:
children: "CHILDREN"
+ enquiries: "ENQUIRIES"
forms: "FORMS"
users: "USERS"
devices: "DEVICES"
@@ -202,6 +204,18 @@ en:
one: "child"
other: "children"
+ enquiries:
+ label: "Enquiries"
+ create_new_enquiry: "Create New Enquiry"
+
+ enquiry:
+ view: "View Enquiry"
+ edit: "Edit Enquiry"
+ match_updated: "Matches last updated"
+
+ messages:
+ creation_success: "Enquiry successfully created."
+
users:
unverified: "Unverified Users"
select_role: "Please select a role before verifying the user"
diff --git a/config/routes.rb b/config/routes.rb
index c208b2e83..89a995500 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -64,6 +64,13 @@
match '/children' => 'children#index', :as => :child_filter, :via => [:post, :get, :put, :delete]
+#######################
+# ENQUIRY URLS
+#######################
+
+ resources :enquiries
+
+
#######################
# API URLS
#######################
diff --git a/spec/controllers/enquiries_controller_spec.rb b/spec/controllers/enquiries_controller_spec.rb
new file mode 100644
index 000000000..cac4c96ca
--- /dev/null
+++ b/spec/controllers/enquiries_controller_spec.rb
@@ -0,0 +1,120 @@
+require 'spec_helper'
+
+describe EnquiriesController do
+
+ before :each do
+ Enquiry.all.each{|enquiry| enquiry.destroy}
+ fake_admin_login
+ end
+
+ def mock_enquiry(stubs={})
+ @mock_enquiry ||= mock_model(Enquiry, stubs).as_null_object
+ end
+
+ describe '#authorizations' do
+ describe 'collection' do
+ it "GET index" do
+ @controller.current_ability.should_receive(:can?).with(:index, Enquiry).and_return(false);
+ get :index
+ response.status.should == 403
+ end
+
+ it "GET new" do
+ @controller.current_ability.should_receive(:can?).with(:create, Enquiry).and_return(false);
+ get :new
+ response.status.should == 403
+ end
+
+ it "POST create" do
+ @controller.current_ability.should_receive(:can?).with(:create, Enquiry).and_return(false);
+ post :create
+ response.status.should == 403
+ end
+
+ end
+
+ describe 'member' do
+ before :each do
+ User.stub!(:find_by_user_name).with("uname").and_return(user = mock('user', :user_name => 'uname', :organisation => 'org'))
+ @enquiry = Enquiry.create(:enquirer_name => 'Someone', :criteria => {'name' => 'child name'})
+ @enquiry_arg = hash_including("_id" => @enquiry.id)
+ end
+
+ it "GET show" do
+ @controller.current_ability.should_receive(:can?).with(:read, @enquiry_arg).and_return(false);
+ get :show, :id => @enquiry.id
+ response.status.should == 403
+ end
+ end
+ end
+
+ describe "GET index" do
+
+ describe "viewing enquiries by user with access to all data" do
+ describe "when the signed in user has access all data" do
+ before do
+ fake_field_admin_login
+ @options ||= {}
+ @stubs ||= {}
+ end
+
+ it "should assign all enquiries as @enquiries" do
+ page = @options.delete(:page)
+ per_page = @options.delete(:per_page)
+ enquiries = [mock_enquiry(@stubs)]
+ @status ||= "all"
+ @filter ||= "all"
+ enquiries.stub!(:paginate).and_return(enquiries)
+ @controller.current_ability.should_receive(:can?).with(:index, Enquiry).and_return(true);
+ @controller.should_receive(:enquiries_by_user_access).and_return([1, enquiries])
+
+ get :index, :status => @status
+ assigns[:enquiries].should == enquiries
+ end
+ end
+ end
+
+ end
+
+ describe "GET show" do
+
+ it "assigns the requested enquiry" do
+ Enquiry.stub!(:get).with("37").and_return(mock_enquiry)
+ get :show, :id => "37"
+ assigns[:enquiry].should equal(mock_enquiry)
+ end
+
+ it "orders and assigns the forms" do
+ Enquiry.stub!(:get).with("37").and_return(mock_enquiry)
+ @controller.should_receive(:get_form_sections).and_return([:the_form_sections])
+ get :show, :id => "37"
+ assigns[:form_sections].should == [:the_form_sections]
+ end
+
+ it "should flash an error and go to listing page if the resource is not found" do
+ Enquiry.stub!(:get).with("invalid record").and_return(nil)
+ get :show, :id=> "invalid record"
+ flash[:error].should == "Enquiry with the given id is not found"
+ response.should redirect_to(:action => :index)
+ end
+
+ end
+
+ describe "GET new" do
+
+ it "assigns a new enquiry as @enquiry" do
+ Enquiry.stub!(:new).and_return(mock_enquiry)
+ get :new
+ assigns[:enquiry].should equal(mock_enquiry)
+ end
+
+ it "orders and assigns the forms" do
+ Enquiry.stub!(:new).and_return(mock_enquiry)
+ @controller.should_receive(:get_form_sections).and_return([:the_form_sections])
+ get :new
+ assigns[:form_sections].should == [:the_form_sections]
+ end
+
+ end
+
+end
diff --git a/spec/views/enquiries/show.html.erb_spec.rb b/spec/views/enquiries/show.html.erb_spec.rb
new file mode 100644
index 000000000..d7b0bc667
--- /dev/null
+++ b/spec/views/enquiries/show.html.erb_spec.rb
@@ -0,0 +1,63 @@
+require 'spec_helper'
+
+class Schema;
+end
+
+describe "enquiries/show.html.erb" do
+
+ describe "displaying an enquiry's details" do
+ before :each do
+ @user = mock('user', :has_permission? => true, :user_name => 'name', :id => 'test-user-id')
+ controller.stub(:current_user).and_return(@user)
+ view.stub(:current_user).and_return(@user)
+ view.stub(:logged_in?).and_return(true)
+ view.stub(:current_user_name).and_return('name')
+ view.instance_variable_set(:@exclude_tabs, [])
+ @form_section = FormSection.new :unique_id => "section_name"
+ @enquiry = Enquiry.create(:enquirer_name => 'Someone', :criteria => {'name' => 'child name'})
+
+ assign(:form_sections, [@form_section])
+ assign(:enquiry, @enquiry)
+ assign(:current_user, User.new)
+ assign(:duplicates, Array.new)
+ end
+
+ it "renders all fields found on the FormSection" do
+ @form_section.add_field Field.new_text_field("age", "Age")
+ @form_section.add_field Field.new_radio_button("gender", ["male", "female"], "Gender")
+ @form_section.add_field Field.new_select_box("date_of_separation", ["1-2 weeks ago", "More than"], "Date of separation")
+
+ render
+
+ rendered.should have_tag(".section_name") do
+ with_tag(".profile-section-label", /Age/)
+ with_tag(".profile-section-label", /Gender/)
+ with_tag(".profile-section-label", /Date of separation/)
+ end
+
+ rendered.should have_tag(".key") do
+ with_tag(".value", "27")
+ with_tag(".value", "male")
+ with_tag(".value", "1-2 weeks ago")
+ end
+ end
+
+ it "does not render fields found on a disabled FormSection" do
+ @form_section['enabled'] = false
+
+ render
+
+ rendered.should_not have_tag("dl.section_name dt")
+ end
+
+ it "does not render fields found on an excluded FormSection" do
+ view.instance_variable_set(:@exclude_tabs, ['section_name'])
+
+ render
+
+ rendered.should_not have_tag("dl.section_name dt")
+ end
+
+ end
+
+end