person-name 0.2.10 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ /pkg/
2
+ Gemfile.lock
3
+ .idea
4
+ *.log
5
+ *.sqlite3
6
+ .bundle
7
+ spec/database.yml
data/Gemfile CHANGED
@@ -1,10 +1,4 @@
1
- source :gemcutter
1
+ source "http://rubygems.org"
2
2
 
3
- # Rails 3.0
4
- gem 'rails', '3.0.1'
5
- gem 'rspec', '2.0.1'
6
- gem 'sqlite3-ruby', :require => 'sqlite3'
7
- gem 'mysql'
8
- gem 'pg'
9
- gem 'jeweler'
10
- gem 'rcov'
3
+ # Specify your gem's dependencies in person-name.gemspec
4
+ gemspec
data/Rakefile CHANGED
@@ -1,51 +1,2 @@
1
- begin
2
- # Rspec 1.3.0
3
- require 'spec/rake/spectask'
4
-
5
- desc 'Default: run specs'
6
- task :default => :spec
7
- Spec::Rake::SpecTask.new do |t|
8
- t.spec_files = FileList["spec/**/*_spec.rb"]
9
- end
10
-
11
- Spec::Rake::SpecTask.new('rcov') do |t|
12
- t.spec_files = FileList["spec/**/*_spec.rb"]
13
- t.rcov = true
14
- t.rcov_opts = ['--exclude', 'spec']
15
- end
16
-
17
- rescue LoadError
18
- # Rspec 2.0
19
- require 'rspec/core/rake_task'
20
-
21
- desc 'Default: run specs'
22
- task :default => :spec
23
- Rspec::Core::RakeTask.new do |t|
24
- t.pattern = "spec/**/*_spec.rb"
25
- end
26
-
27
- Rspec::Core::RakeTask.new('rcov') do |t|
28
- t.pattern = "spec/**/*_spec.rb"
29
- t.rcov = true
30
- t.rcov_opts = ['--exclude', 'spec']
31
- end
32
-
33
- rescue LoadError
34
- puts "Rspec not available. Install it with: gem install rspec"
35
- end
36
-
37
- begin
38
- require 'jeweler'
39
- Jeweler::Tasks.new do |gemspec|
40
- gemspec.name = "person-name"
41
- gemspec.summary = "Easy editing of person names."
42
- gemspec.description = "Manages all person name fields (prefix, first name, middle name, intercalation, last name, suffix)"
43
- gemspec.email = "matthijs.groen@gmail.com"
44
- gemspec.homepage = "http://github.com/matthijsgroen/person-name"
45
- gemspec.authors = ["Matthijs Groen"]
46
- gemspec.files = FileList["[A-Z]*", "{generators,lib,spec,rails}/**/*"] - FileList["**/*.log"]
47
- end
48
- Jeweler::GemcutterTasks.new
49
- rescue LoadError
50
- puts "Jeweler not available. Install it with: gem install jeweler"
51
- end
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,23 @@
1
+ #
2
+ # Code snippet to create a formtastic input
3
+ # You can use this code in your custom formbuilder
4
+ #
5
+ # Usage: form.input :name, :as => :person_name
6
+ #
7
+
8
+ module Formtastic
9
+ module PersonName
10
+ def person_name_input(method, options)
11
+ html_options = options.delete(:input_html) || {}
12
+ html_options = default_string_options(method, :person_name).merge(html_options)
13
+ html_options[:class] = [html_options[:class], "person-name"].compact.join(" ")
14
+
15
+ part_fields = PersonName::NameSplitter::NAME_PARTS.collect do |field_part|
16
+ self.hidden_field("#{method}_#{field_part}")
17
+ end.join.html_safe
18
+
19
+ self.label(method, options_for_label(options)) <<
20
+ content_tag(:p, self.text_field(method, html_options) << part_fields, :class => "field-group")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,148 @@
1
+ /**
2
+ * JQuery widget for the formtastic person-name field
3
+ * This widget adds an 'expand' button to the name field to popup a dialog to edit all individual fields
4
+ *
5
+ * Usage:
6
+ * // Init person names
7
+ * $('form.formtastic input.person-name').personName({
8
+ * lookupUrl: "/people/split-name.json",
9
+ * formClass: "formtastic"
10
+ * });
11
+ *
12
+ * In the PeopleController:
13
+ *
14
+ * def split_name
15
+ * @result = PersonName::NameSplitter.split(params[:name], params[:values])
16
+ * respond_with(@result) do |format|
17
+ * format.json { render :text => @result.to_json }
18
+ * end
19
+ * end
20
+ *
21
+ *
22
+ */
23
+ (function($, undefined) {
24
+
25
+ $.widget("ui.personName", {
26
+ options: {
27
+ lookupUrl: "",
28
+ dialogId: "person-name-detail-edit-dialog",
29
+ labels: {
30
+ prefix: "Voorvoegsel",
31
+ firstName: "Voornaam",
32
+ middleName: "Extra voornamen",
33
+ intercalation: "Tussenvoegsel",
34
+ lastName: "Achternaam",
35
+ suffix: "Achtervoegsel",
36
+ dialogButton: "Naam bewerken"
37
+ },
38
+ dialog: {
39
+ ajaxErrorMessage: "Naam informatie kon niet automatisch worden gesplitst."
40
+ },
41
+ formClass: ""
42
+ },
43
+ nameFields: ["prefix", "first_name", "middle_name", "intercalation", "last_name", "suffix"],
44
+ _create: function() {
45
+ this.element.after(" <a href=\"#edit-name\">" + this.options.labels.dialogButton + "</a>");
46
+
47
+ this.originalFieldLabel = $("label[for=" + this.element.attr("id") + "]").html();
48
+ this.element.parent().find("a:first").button({
49
+ text: false,
50
+ icons: {
51
+ primary: "ui-icon-newwin"
52
+ }
53
+ }).bind("click", this, this._editClick);
54
+ },
55
+ destroy: function() {
56
+ this.element.parent().find("a:first").unblind("click", this._editClick);
57
+ $.Widget.prototype.destroy.apply(this, arguments);
58
+ },
59
+ _editClick: function(event) {
60
+ if (event.data.options.lookupUrl != "") {
61
+ event.data._requestAndBuildDialog();
62
+ } else {
63
+ event.data._buildDialog();
64
+ }
65
+ return false;
66
+ },
67
+ _requestAndBuildDialog: function() {
68
+ var nameData = { "_method": "PUT"};
69
+ var prefix = "name";
70
+ nameData[prefix] = this.element.val();
71
+ nameData["values"] = {};
72
+ for (var index in this.nameFields) {
73
+ var fieldId = this.element.attr("id") + "_" + this.nameFields[index];
74
+ nameData.values[this.nameFields[index]] = $("#" + fieldId).val();
75
+ }
76
+ var self = this;
77
+ $.ajax({
78
+ data: nameData,
79
+ dataType: "json",
80
+ success: function(data, textStatus, XMLHttpRequest) {
81
+ for (var index in self.nameFields) {
82
+ var fieldId = self.element.attr("id") + "_" + self.nameFields[index];
83
+ $("#" + fieldId).val(data[self.nameFields[index]] || "");
84
+ }
85
+ self._buildDialog();
86
+ },
87
+ error: function() {
88
+ alert(self.options.dialog.ajaxErrorMessage);
89
+ self._buildDialog();
90
+ },
91
+ type: "GET",
92
+ url: this.options.lookupUrl
93
+ });
94
+
95
+ },
96
+ _buildDialog: function() {
97
+ var fieldIdPrefix = "edit_" + this.element.attr("id");
98
+ /**
99
+ * Mimic the html syntax from formtastic
100
+ */
101
+ var dialogCode = "<div id=\"" + this.options.dialogId + "\">";
102
+ dialogCode += "<form class=\"" + this.options.formClass + "\"><fieldset><ol>";
103
+ for (var index in this.nameFields) {
104
+ var dialogFieldId = fieldIdPrefix + "_" + this.nameFields[index];
105
+ var fieldId = this.element.attr("id") + "_" + this.nameFields[index];
106
+
107
+ var labelName = this.nameFields[index].replace(/(\_[a-z])/g, function($1) { return $1.toUpperCase().replace('_',''); });
108
+ dialogCode += "<li><label for=\"" + dialogFieldId + "\">" + this.options.labels[labelName] + "</label>" +
109
+ "<input type=\"text\" id=\"" + dialogFieldId + "\" value=\"" + $("#" + fieldId).val() + "\">" +
110
+ "</li>";
111
+ }
112
+ dialogCode += "</ol></fieldset></form></div>";
113
+ this.element.after(dialogCode);
114
+
115
+ var self = this;
116
+ this.element.parent().find("#" + this.options.dialogId).dialog({
117
+ title: this.originalFieldLabel + " details bewerken",
118
+ buttons: {
119
+ "Opslaan en sluiten": function() {
120
+ self._storeDialog();
121
+ $(this).remove();
122
+ },
123
+ "Annuleren": function() {
124
+ $(this).dialog("close").remove();
125
+ }
126
+ },
127
+ modal: true
128
+ });
129
+ },
130
+ _storeDialog: function() {
131
+ var fieldIdPrefix = "edit_" + this.element.attr("id");
132
+ var values = [];
133
+ for (var index in this.nameFields) {
134
+ var dialogFieldId = fieldIdPrefix + "_" + this.nameFields[index];
135
+ var fieldId = this.element.attr("id") + "_" + this.nameFields[index];
136
+ var fieldValue = $("#" + dialogFieldId).val();
137
+ if (fieldValue != "") values.push(fieldValue);
138
+ $("#" + fieldId).val(fieldValue);
139
+ }
140
+ $(this.element).val(values.join(" "));
141
+ }
142
+ });
143
+
144
+ $.extend($.ui.personName, {
145
+ version: "1.0"
146
+ });
147
+
148
+ })(jQuery);
@@ -0,0 +1,5 @@
1
+ module PersonName
2
+
3
+ VERSION = "0.2.11"
4
+
5
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "person_name/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "person-name"
7
+ s.version = PersonName::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Matthijs Groen"]
10
+ s.email = ["matthijs.groen@gmail.com"]
11
+ s.homepage = %q{http://github.com/matthijsgroen/person-name}
12
+ s.summary = %q{Easy editing of person names.}
13
+ s.description = %q{Manages all person name fields (prefix, first name, middle name, intercalation, last name, suffix)}
14
+
15
+ s.rubyforge_project = "person-name"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,7 @@ begin
5
5
  require "bundler"
6
6
 
7
7
  if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.5")
8
- raise RuntimeError, "Your bundler version is too old." +
8
+ raise RuntimeError, "Your bundler version.rb is too old." +
9
9
  "Run `gem install bundler` to upgrade."
10
10
  end
11
11
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: person-name
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease: false
4
+ hash: 1
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 10
10
- version: 0.2.10
9
+ - 11
10
+ version: 0.2.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthijs Groen
@@ -15,35 +15,37 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-28 00:00:00 +02:00
18
+ date: 2011-02-13 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
22
22
  description: Manages all person name fields (prefix, first name, middle name, intercalation, last name, suffix)
23
- email: matthijs.groen@gmail.com
23
+ email:
24
+ - matthijs.groen@gmail.com
24
25
  executables: []
25
26
 
26
27
  extensions: []
27
28
 
28
- extra_rdoc_files:
29
- - README.markdown
29
+ extra_rdoc_files: []
30
+
30
31
  files:
32
+ - .gitignore
31
33
  - Gemfile
32
- - Gemfile.lock
33
34
  - MIT-LICENSE
34
35
  - README.markdown
35
36
  - Rakefile
36
- - VERSION
37
+ - extras/formtastic_input.rb
38
+ - extras/person-name.jquery.js
37
39
  - lib/person-name.rb
38
40
  - lib/person_name/has_person_name.rb
39
41
  - lib/person_name/migration_support.rb
40
42
  - lib/person_name/name.rb
41
43
  - lib/person_name/name_splitter.rb
44
+ - lib/person_name/version.rb
45
+ - person-name.gemspec
42
46
  - rails/init.rb
43
- - spec/database.yml
44
47
  - spec/database.yml.sample
45
48
  - spec/models.rb
46
- - spec/person_name/has_person_name.sqlite3
47
49
  - spec/person_name/has_person_name_spec.rb
48
50
  - spec/schema.rb
49
51
  - spec/spec_helper.rb
@@ -52,8 +54,8 @@ homepage: http://github.com/matthijsgroen/person-name
52
54
  licenses: []
53
55
 
54
56
  post_install_message:
55
- rdoc_options:
56
- - --charset=UTF-8
57
+ rdoc_options: []
58
+
57
59
  require_paths:
58
60
  - lib
59
61
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -76,13 +78,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
78
  version: "0"
77
79
  requirements: []
78
80
 
79
- rubyforge_project:
80
- rubygems_version: 1.3.7
81
+ rubyforge_project: person-name
82
+ rubygems_version: 1.4.1
81
83
  signing_key:
82
84
  specification_version: 3
83
85
  summary: Easy editing of person names.
84
86
  test_files:
85
- - spec/person_name/has_person_name_spec.rb
86
- - spec/spec_helper.rb
87
+ - spec/database.yml.sample
87
88
  - spec/models.rb
89
+ - spec/person_name/has_person_name_spec.rb
88
90
  - spec/schema.rb
91
+ - spec/spec_helper.rb
data/Gemfile.lock DELETED
@@ -1,101 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- abstract (1.0.0)
5
- actionmailer (3.0.1)
6
- actionpack (= 3.0.1)
7
- mail (~> 2.2.5)
8
- actionpack (3.0.1)
9
- activemodel (= 3.0.1)
10
- activesupport (= 3.0.1)
11
- builder (~> 2.1.2)
12
- erubis (~> 2.6.6)
13
- i18n (~> 0.4.1)
14
- rack (~> 1.2.1)
15
- rack-mount (~> 0.6.12)
16
- rack-test (~> 0.5.4)
17
- tzinfo (~> 0.3.23)
18
- activemodel (3.0.1)
19
- activesupport (= 3.0.1)
20
- builder (~> 2.1.2)
21
- i18n (~> 0.4.1)
22
- activerecord (3.0.1)
23
- activemodel (= 3.0.1)
24
- activesupport (= 3.0.1)
25
- arel (~> 1.0.0)
26
- tzinfo (~> 0.3.23)
27
- activeresource (3.0.1)
28
- activemodel (= 3.0.1)
29
- activesupport (= 3.0.1)
30
- activesupport (3.0.1)
31
- arel (1.0.1)
32
- activesupport (~> 3.0.0)
33
- builder (2.1.2)
34
- diff-lcs (1.1.2)
35
- erubis (2.6.6)
36
- abstract (>= 1.0.0)
37
- gemcutter (0.6.1)
38
- git (1.2.5)
39
- i18n (0.4.1)
40
- jeweler (1.4.0)
41
- gemcutter (>= 0.1.0)
42
- git (>= 1.2.5)
43
- rubyforge (>= 2.0.0)
44
- json_pure (1.4.6)
45
- mail (2.2.7)
46
- activesupport (>= 2.3.6)
47
- mime-types
48
- treetop (>= 1.4.5)
49
- mime-types (1.16)
50
- mysql (2.8.1)
51
- pg (0.9.0)
52
- polyglot (0.3.1)
53
- rack (1.2.1)
54
- rack-mount (0.6.13)
55
- rack (>= 1.0.0)
56
- rack-test (0.5.6)
57
- rack (>= 1.0)
58
- rails (3.0.1)
59
- actionmailer (= 3.0.1)
60
- actionpack (= 3.0.1)
61
- activerecord (= 3.0.1)
62
- activeresource (= 3.0.1)
63
- activesupport (= 3.0.1)
64
- bundler (~> 1.0.0)
65
- railties (= 3.0.1)
66
- railties (3.0.1)
67
- actionpack (= 3.0.1)
68
- activesupport (= 3.0.1)
69
- rake (>= 0.8.4)
70
- thor (~> 0.14.0)
71
- rake (0.8.7)
72
- rcov (0.9.9)
73
- rspec (2.0.1)
74
- rspec-core (~> 2.0.1)
75
- rspec-expectations (~> 2.0.1)
76
- rspec-mocks (~> 2.0.1)
77
- rspec-core (2.0.1)
78
- rspec-expectations (2.0.1)
79
- diff-lcs (>= 1.1.2)
80
- rspec-mocks (2.0.1)
81
- rspec-core (~> 2.0.1)
82
- rspec-expectations (~> 2.0.1)
83
- rubyforge (2.0.4)
84
- json_pure (>= 1.1.7)
85
- sqlite3-ruby (1.3.1)
86
- thor (0.14.3)
87
- treetop (1.4.8)
88
- polyglot (>= 0.3.1)
89
- tzinfo (0.3.23)
90
-
91
- PLATFORMS
92
- ruby
93
-
94
- DEPENDENCIES
95
- jeweler
96
- mysql
97
- pg
98
- rails (= 3.0.1)
99
- rcov
100
- rspec (= 2.0.1)
101
- sqlite3-ruby
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.2.10
data/spec/database.yml DELETED
@@ -1,17 +0,0 @@
1
- sqlite3:
2
- adapter: sqlite3
3
- database: has_person_name.sqlite3
4
-
5
- mysql:
6
- adapter: mysql
7
- hostname: localhost
8
- username: root
9
- password: msdb3181
10
- database: has_person_name
11
-
12
- postgresql:
13
- adapter: postgresql
14
- hostname: localhost
15
- username: postgres
16
- password:
17
- database: has_person_name