Skip to content

Commit d09066c

Browse files
committed
Merge pull request #164 from Muskworker/master
tweaks for broken things in rc2
2 parents 3041dfa + 8c36d61 commit d09066c

File tree

14 files changed

+134
-21
lines changed

14 files changed

+134
-21
lines changed

app/assets/javascripts/application.js.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ fetch_languages = function() {
221221
content.down('.language-content').childElements().invoke('disable');
222222

223223
langtabs = content.down('.language-list ul');
224-
langtabs.childElements().each(function(tab){ Effect.Fade(tab, {duration: 0.25})});
224+
// langtabs.childElements().each(function(tab){ Effect.Fade(tab, {duration: 0.25})});
225225
langtabs.insert({top: "<li class=\"throb\"><img class=\"throb\" src=\"<%= asset_path('icons/throbber.gif') %>\" style=\"vertical-align:middle\" width=\"12\" height=\"12\"></li>"});
226226
});
227227

@@ -270,10 +270,10 @@ function update_languages(languages) {
270270

271271
newfield = oldfield.up().appendChild(oldfield.clone(true));
272272
posindex = oldfield.identify().lastIndexOf(oldlang);
273-
newfield.id = oldfield.identify().substring(0, posindex) + language.underscore_code + oldfield.identify().substring(0, posindex + oldlang.length)
273+
newfield.id = oldfield.identify().substring(0, posindex) + language.underscore_code + oldfield.identify().substring(posindex + oldlang.length)
274274
// newfield.id = oldfield.identify().replace(/(.+_).+$/, "$1"+language.underscore_code);
275275
posindex = oldfield.name.lastIndexOf(oldlang);
276-
newfield.name = oldfield.name.substring(0, posindex) + language.underscore_code + oldfield.name.substring(0, posindex + oldlang.length)
276+
newfield.name = oldfield.name.substring(0, posindex) + language.underscore_code + oldfield.name.substring(posindex + oldlang.length)
277277
// newfield.name = oldfield.name.replace(/(.+_).*?\]$/, "$1"+language.underscore_code+"]");
278278
newfield.clear();
279279
newtab = oldtab.up().appendChild(oldtab.clone(true));

app/controllers/dictionaries_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def show
3333
unsorted_lexemes = @dictionary.lexemes.includes([{:dictionaries => [:source_language]}, {:headwords => [:phonetic_forms, :language]}, {:subentries => [{:senses => [{:glosses => :language}, :notes, :language]}, {:etymologies => [:notes, :original_language, {:next_etymon => [:notes, :original_language, :next_etymon] }]}, {:notes => :language}, :language]}])
3434
@lexemes = @source_language.sort(unsorted_lexemes, by: :primary_headword)
3535
@page_title = @dictionary.title
36+
@langs = Dictionary.langs_hash_for(@dictionary)
3637

3738
respond_to do |format|
3839
format.html # show.html.erb

app/controllers/lexemes_controller.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def show
3636
@authors_of = Hash[@constructions.collect {|construction| [construction, construction.loci.collect(&:source).collect(&:author).uniq] }]
3737
@loci_by = Hash[@authors_of.collect { |construction, authors| [construction, Hash[authors.collect {|author| [author, Locus.attesting([construction, @lexeme]).find(:all, :joins => { :source => :authorship }, :conditions => { :id => construction.loci, :authorships => {:author_id => author}}, :group => "loci.id")] }]]}]
3838
@page_title = view_context.titleize_headwords_for @lexeme
39+
@langs = Dictionary.langs_hash_for(@lexeme.dictionaries)
3940

4041
respond_to do |format|
4142
format.html # show.html.erb
@@ -86,7 +87,7 @@ def new
8687
@lexeme.headwords.build
8788
@lexeme.subentries.build
8889
@page_title = flash[:headword].present? ?
89-
t('lexemes.new.page_title_with_headwords', headwords: view_context.titleize_headwords_for(@lexeme)) :
90+
t('lexemes.new.page_title_with_headwords', headwords: flash[:headword]) :
9091
t('lexemes.new.page_title')
9192

9293
@langs = Dictionary.langs_hash_for(@lexeme.dictionaries)
@@ -134,6 +135,9 @@ def create
134135
end
135136
format.xml { render :xml => @lexeme, :status => :created, :location => @lexeme }
136137
else
138+
@dictionaries = @lexeme.dictionaries
139+
@langs = Dictionary.langs_hash_for(@dictionaries)
140+
137141
format.html { render :action => "new" }
138142
format.xml { render :xml => @lexeme.errors, :status => :unprocessable_entity }
139143
end
@@ -170,6 +174,8 @@ def update
170174
end
171175
format.xml { head :ok }
172176
else
177+
@dictionaries = @lexeme.dictionaries
178+
@langs = Dictionary.langs_hash_for(@dictionaries)
173179
format.html { render :action => "edit" }
174180
format.xml { render :xml => @lexeme.errors, :status => :unprocessable_entity }
175181
end

app/helpers/application_helper.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,4 +278,10 @@ def translatable_tag form, field, attribute, languages = [], html_options = {}
278278
output << language_tabs(languages)
279279
end
280280
end
281+
282+
def source lang = (@langs[:source].first if @langs), &block
283+
Globalize.with_locale(lang.iso_639_code) do
284+
yield
285+
end
286+
end
281287
end

app/models/headword.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Headword < ActiveRecord::Base
1313
belongs_to :lexeme
1414
delegate :senses, :to => '(lexeme or return nil)'
1515
belongs_to :language
16-
validates_presence_of :form
16+
validate :any_form_present?
1717

1818
before_save :set_defaults
1919

@@ -58,4 +58,11 @@ def prescriptively_ok?
5858
def prescriptively_ok=(status)
5959
self.acceptance = (acceptance & DESCRIPTIVE) | (status.to_i * PRESCRIPTIVE)
6060
end
61+
62+
protected
63+
def any_form_present?
64+
if globalize_attribute_names.select {|k,v| k.to_s.start_with?("form")}.all? {|v| v.blank? }
65+
errors.add(:form, I18n.t('errors.messages.blank'))
66+
end
67+
end
6168
end

app/models/lexeme.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def headword_forms
2626
end
2727

2828
def primary_headword
29-
headwords.order('acceptance DESC').first.try(:form)
29+
Globalize.with_locale(language.iso_639_code) { headwords.order('acceptance DESC').first.try(:form) }
3030
end
3131

3232
def loci(options = {})
@@ -39,7 +39,7 @@ def loci(options = {})
3939
# dictionary. Otherwise, fetch all results with any of the lexeme's headwords in its paradigm
4040
# that are linked wiki-style (e.g. [[foo]] or [[foo|bar]]).
4141
def constructions (from_dictionary = nil)
42-
heads = headword_forms.collect{|form| ["%[[" + form + "|%", "%[[" + form + "]]%"]}.flatten
42+
heads = headword_forms.compact.collect{|form| ["%[[" + form + "|%", "%[[" + form + "]]%"]}.flatten
4343
return {} if heads.empty?
4444
headlike = "(subentries.paradigm LIKE ?" + " OR subentries.paradigm LIKE ?" * (heads.length - 1) + ")"
4545

@@ -67,11 +67,11 @@ def self.lookup_all_by_headwords(forms, options ={})
6767

6868
case options[:matchtype] ||= EXACT
6969
when SUBSTRING
70-
headwords_like = "(headwords.form LIKE ?" + " OR headwords.form LIKE ?" * (forms.length - 1) + ")"
70+
headwords_like = "(headword_translations.form LIKE ?" + " OR headword_translations.form LIKE ?" * (forms.length - 1) + ")"
7171
wildcarded_forms = forms.collect {|form| "%#{form}%"}
72-
Lexeme.joins(:headwords).where([headwords_like, *wildcarded_forms]).includes(options[:include]).group(:lexeme_id)
72+
Lexeme.joins(:headwords => [:translations]).where([headwords_like, *wildcarded_forms]).includes(options[:include]).group(:lexeme_id)
7373
when EXACT
74-
Lexeme.joins(:headwords).where(["headwords.form IN (?)", forms]).includes(options[:include])
74+
Lexeme.joins(:headwords => [:translations]).where(["headword_translations.form IN (?)", forms]).includes(options[:include])
7575
end
7676
end
7777

app/models/phonetic_form.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,12 @@ class PhoneticForm < ActiveRecord::Base
55
translates :form, :fallbacks_for_empty_translations => true
66
globalize_accessors :locales => (Language.all.collect(&:iso_639_code) | [I18n.default_locale])
77

8-
validates_presence_of :form
8+
validate :any_form_present?
9+
10+
protected
11+
def any_form_present?
12+
if globalize_attribute_names.select {|k,v| k.to_s.start_with?("form")}.all? {|v| v.blank? }
13+
errors.add(:form, I18n.t('errors.messages.blank'))
14+
end
15+
end
916
end

app/models/subentry.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class Subentry < ActiveRecord::Base
55
belongs_to :language
66
has_many :senses
77
has_many :notes, :as => :annotatable
8-
validates_presence_of :paradigm
8+
validate :any_paradigm_present?
99
translates :paradigm, :part_of_speech, :fallbacks_for_empty_translations => true
1010
globalize_accessors :locales => (Language.all.collect(&:iso_639_code) | [I18n.default_locale])
1111

@@ -28,4 +28,11 @@ def set_defaults
2828

2929
self.language ||= default_language
3030
end
31+
32+
protected
33+
def any_paradigm_present?
34+
if globalize_attribute_names.select {|k,v| k.to_s.start_with?("paradigm")}.all? {|v| v.blank? }
35+
errors.add(:paradigm, I18n.t('errors.messages.blank'))
36+
end
37+
end
3138
end

app/views/dictionaries/show.html.erb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<% I18n.locale = @dictionary.definition_language
22
for lexeme in @lexemes %>
33
<dl class="dictform-entry">
4-
<dt class="dictform-headword" <%= lang_for(lexeme.headwords) %>><%= t('.headwords', headwords: titleize_headwords_for(lexeme), default: "%{headwords}.") %></dt>
4+
<dt class="dictform-headword" <%= lang_for(lexeme.headwords) %>><%= link_to source{t('.headwords', headwords: titleize_headwords_for(lexeme), default: "%{headwords}.")}, lexeme %></dt>
55
<% for headword in lexeme.headwords %>
6-
<dd class="dictform-phonetic-form" <%= lang_for(headword, :variant => 'fonipa') %>><%= h headword.phonetic_forms.compact.collect{|x| t('.phonetic_form', form: x.form, default: "/%{form}/")}.to_options_sentence(@dictionary.definition_language) %></dd>
6+
<dd class="dictform-phonetic-form" <%= lang_for(headword, :variant => 'fonipa') %>><%= source{h headword.phonetic_forms.compact.collect{|x| t('.phonetic_form', form: x.form, default: "/%{form}/")}.to_options_sentence(@dictionary.definition_language)} %></dd>
77
<% end %>
88
<% for subentry in lexeme.subentries %>
99
<dd class="dictform-subentry" <%= lang_for(subentry) %>>
1010
<dl class="dictform-subentry-senses">
1111
<dt class="dictform-paradigm">
12-
<%=wh subentry.paradigm ?
12+
<%=source{wh subentry.paradigm ?
1313
t('.principal_parts', paradigm: subentry.paradigm, default: "%{paradigm}.") :
14-
t('.no_principal_parts') %>
14+
t('.no_principal_parts')} %>
1515
</dt>
1616
<dd class="dictform-part-of-speech">
1717
<%=h subentry.part_of_speech || t('.no_part_of_speech') %>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<span class="lexform-phonetic-form" <%= lang_for(headword, :variant => 'fonipa') %>><%= h sentence_case(headword.phonetic_forms.compact.collect{|x| t('.phonetic_form', form: x.form, default: "/%{form}/")}.to_options_sentence) %></span>
1+
<span class="lexform-phonetic-form" <%= lang_for(headword, :variant => 'fonipa') %>><%= source(lexeme.language){ h sentence_case(headword.phonetic_forms.compact.collect{|x| t('.phonetic_form', form: x.form, default: "/%{form}/")}.to_options_sentence) } %></span>

0 commit comments

Comments
 (0)