From cdff6f523cc4fcce588cba6cf67614d22cbfc61b Mon Sep 17 00:00:00 2001 From: f Date: Fri, 22 Jun 2018 15:58:49 -0300 Subject: [PATCH] agregar otros tipos de campo #51 --- app/models/post/template_field.rb | 42 ++++++++++++++++++- app/views/posts/template_field/_date.haml | 4 ++ app/views/posts/template_field/_email.haml | 4 ++ app/views/posts/template_field/_number.haml | 6 +++ app/views/posts/template_field/_password.haml | 4 ++ app/views/posts/template_field/_url.haml | 4 ++ app/views/posts/template_field/_year.haml | 4 ++ 7 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 app/views/posts/template_field/_date.haml create mode 100644 app/views/posts/template_field/_email.haml create mode 100644 app/views/posts/template_field/_number.haml create mode 100644 app/views/posts/template_field/_password.haml create mode 100644 app/views/posts/template_field/_url.haml create mode 100644 app/views/posts/template_field/_year.haml diff --git a/app/models/post/template_field.rb b/app/models/post/template_field.rb index 72f7310..12b721e 100644 --- a/app/models/post/template_field.rb +++ b/app/models/post/template_field.rb @@ -4,7 +4,7 @@ class Post class TemplateField attr_reader :post, :contents, :key - STRING_VALUES = %w[string text url number email].freeze + STRING_VALUES = %w[string text url number email password date year].freeze def initialize(post, key, contents) @post = post @@ -27,14 +27,29 @@ class Post contents.fetch('min', 0) end + # TODO volver elegante! def type return @type if @type case + when email? + @type = 'email' + when url? + @type = 'url' + when number? + @type = 'number' + when password? + @type = 'password' + when date? + @type = 'date' + when year? + @type = 'year' when text_area? @type = 'text_area' when string? @type = 'text' + # TODO volver a hacer funcionar esto y ahorranos los multiple: + # false when string? && contents.split('/', 2).count == 2 @type = 'select' when nested? @@ -80,6 +95,31 @@ class Post value == 'text' end + def url? + value == 'url' + end + + def email? + value == 'email' || value == 'mail' + end + alias :mail? :email? + + def date? + value == 'date' + end + + def password? + value == 'password' + end + + def number? + value == 'number' + end + + def year? + value == 'year' + end + # Si la plantilla es simple no está admitiendo Hashes como valores def simple? !complex? diff --git a/app/views/posts/template_field/_date.haml b/app/views/posts/template_field/_date.haml new file mode 100644 index 0000000..2ed2329 --- /dev/null +++ b/app/views/posts/template_field/_date.haml @@ -0,0 +1,4 @@ += date_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required? diff --git a/app/views/posts/template_field/_email.haml b/app/views/posts/template_field/_email.haml new file mode 100644 index 0000000..9b6c9a3 --- /dev/null +++ b/app/views/posts/template_field/_email.haml @@ -0,0 +1,4 @@ += email_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required? diff --git a/app/views/posts/template_field/_number.haml b/app/views/posts/template_field/_number.haml new file mode 100644 index 0000000..457b575 --- /dev/null +++ b/app/views/posts/template_field/_number.haml @@ -0,0 +1,6 @@ += number_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required?, + max: template.max > 0 ? template.max : nil, + min: template.min diff --git a/app/views/posts/template_field/_password.haml b/app/views/posts/template_field/_password.haml new file mode 100644 index 0000000..552d48f --- /dev/null +++ b/app/views/posts/template_field/_password.haml @@ -0,0 +1,4 @@ += password_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required? diff --git a/app/views/posts/template_field/_url.haml b/app/views/posts/template_field/_url.haml new file mode 100644 index 0000000..4cf0270 --- /dev/null +++ b/app/views/posts/template_field/_url.haml @@ -0,0 +1,4 @@ += url_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required? diff --git a/app/views/posts/template_field/_year.haml b/app/views/posts/template_field/_year.haml new file mode 100644 index 0000000..dba6e22 --- /dev/null +++ b/app/views/posts/template_field/_year.haml @@ -0,0 +1,4 @@ += number_field_tag field_name_for_post_as_string(name), + value, + class: 'form-control', + required: template.required?