Class: Labeling::SKOSXL::Base

Inherits:
Base
  • Object
show all
Defined in:
app/models/labeling/skosxl/base.rb

Direct Known Subclasses

AltLabel, HiddenLabel, PrefLabel

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.by_label_language(language) ⇒ Object



15
16
17
# File 'app/models/labeling/skosxl/base.rb', line 15

def self.by_label_language(language)
  includes(:target).merge(self.label_class.by_language(language))
end

.by_label_origin(origin) ⇒ Object



11
12
13
# File 'app/models/labeling/skosxl/base.rb', line 11

def self.by_label_origin(origin)
  includes(:target).merge(self.label_class.by_origin(origin))
end

.create_for(o, t) ⇒ Object



23
24
25
# File 'app/models/labeling/skosxl/base.rb', line 23

def self.create_for(o, t)
  find_or_create_by_owner_id_and_target_id(o.id, t.id)
end

.edit_partial_name(obj) ⇒ Object



70
71
72
# File 'app/models/labeling/skosxl/base.rb', line 70

def self.edit_partial_name(obj)
  "partials/labeling/skosxl/edit_base"
end

.label_classObject



32
33
34
# File 'app/models/labeling/skosxl/base.rb', line 32

def self.label_class
  Iqvoc::XLLabel.base_class
end

.label_editor_selectableObject



19
20
21
# File 'app/models/labeling/skosxl/base.rb', line 19

def self.label_editor_selectable
  includes(:target).merge(self.label_class.editor_selectable)
end

.partial_name(obj) ⇒ Object



66
67
68
# File 'app/models/labeling/skosxl/base.rb', line 66

def self.partial_name(obj)
  "partials/labeling/skosxl/base"
end

.search_result_partial_nameObject



62
63
64
# File 'app/models/labeling/skosxl/base.rb', line 62

def self.search_result_partial_name
  'partials/labeling/skosxl/search_result'
end

.single_query(params = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/labeling/skosxl/base.rb', line 36

def self.single_query(params = {})
  query_str = build_query_string(params)

  scope = includes(:target).order("LOWER(#{Label::Base.table_name}.value)").references(:labels)

  if params[:query].present?
    scope = scope.merge(Label::Base.by_query_value(query_str).by_language(params[:languages].to_a).published)
  else
    scope = scope.merge(Label::Base.by_language(params[:languages].to_a).published)
  end

  if params[:collection_origin].present?
    scope = scope.includes(:owner => { :collection_members => :collection })
    scope = scope.merge(Collection::Base.where(:origin => params[:collection_origin]))
  end

  # Check that the included concept is in published state:
  scope = scope.includes(:owner).merge(Iqvoc::Concept.base_class.published)

  unless params[:collection_origin].blank?
    #
  end

  scope.map { |result| SearchResult.new(result) }
end

.target_in_edit_modeObject



7
8
9
# File 'app/models/labeling/skosxl/base.rb', line 7

def self.target_in_edit_mode
  includes(:target).merge(Iqvoc::XLLabel.base_class.in_edit_mode)
end

Instance Method Details

#<=>(other) ⇒ Object

FIXME: Hmm… Why should I sort labelings (not necessarily pref_labelings) by pref_label???



28
29
30
# File 'app/models/labeling/skosxl/base.rb', line 28

def <=>(other)
  owner.pref_label <=> other.owner.pref_label
end

#build_rdf(document, subject) ⇒ Object

def by_label_language(language)

includes(:target).merge(self.label_class.by_language(language))

end



78
79
80
81
# File 'app/models/labeling/skosxl/base.rb', line 78

def build_rdf(document, subject)
  subject.send(self.rdf_namespace.camelcase).send(self.rdf_predicate, IqRdf.build_uri(target.origin))
  subject.Skos.send(self.rdf_predicate, target.value.to_s, :lang => target.language)
end

#build_search_result_rdf(document, result) ⇒ Object



83
84
85
86
# File 'app/models/labeling/skosxl/base.rb', line 83

def build_search_result_rdf(document, result)
  result.Sdc::link(IqRdf.build_uri(owner.origin))
  build_rdf(document, result)
end