Commit 40a4271112d4cfc2e98dfedf122b0323ae26e55a
Committed by
Parley
1 parent
3ae1972b
Exists in
master
and in
5 other branches
more_inst_for_users: Now add the institutions on a unordered list
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com> Signed-off-by: Gabriela Navarro <navarro1703@gmail.com>
Showing
2 changed files
with
43 additions
and
17 deletions
Show diff stats
lib/mpog_software_plugin.rb
| @@ -42,15 +42,17 @@ class MpogSoftwarePlugin < Noosfero::Plugin | @@ -42,15 +42,17 @@ class MpogSoftwarePlugin < Noosfero::Plugin | ||
| 42 | labelled_form_field( | 42 | labelled_form_field( |
| 43 | _('Institution'), | 43 | _('Institution'), |
| 44 | content_tag(:div, | 44 | content_tag(:div, |
| 45 | - text_field(:institution, :name, :class=>"input_institution"), | 45 | + text_field(:institution, :name, :id=>"input_institution"), |
| 46 | :class => 'institution_container')+ | 46 | :class => 'institution_container')+ |
| 47 | content_tag( | 47 | content_tag( |
| 48 | :small, _('Fill with your institution') ,:class => 'signup-form', :id =>'institution-balloon' | 48 | :small, _('Fill with your institution') ,:class => 'signup-form', :id =>'institution-balloon' |
| 49 | ) + | 49 | ) + |
| 50 | - content_tag(:div, _("The searched institution does not exist"), :id=>"institution_empty_ajax_message", :class=>"errorExplanation hide-field") + | ||
| 51 | - link_to(_("Add new institution"), "#", :class=>'button with-text icon-add add_new_institution') + | 50 | + content_tag(:div, _("The searched institution does not exist"), :id=>"institution_empty_ajax_message", :class=>"errorExplanation hide-field")+ |
| 51 | + link_to(_("Add new institution"), "#", :class=>'button with-text icon-add', :id => 'add_new_institution') + | ||
| 52 | link_to(_("Create new institution"), "#", :id=>"create_institution_link", :class=>'button with-text icon-add')+ | 52 | link_to(_("Create new institution"), "#", :id=>"create_institution_link", :class=>'button with-text icon-add')+ |
| 53 | hidden_field_tag("user[institutions][]", "", :class => 'user_institutions')+ | 53 | hidden_field_tag("user[institutions][]", "", :class => 'user_institutions')+ |
| 54 | + hidden_field_tag("institution_selected", "")+ | ||
| 55 | + content_tag("ul", "",:class=>"institutions_added")+ | ||
| 54 | content_tag(:div, "", :id=>"institution_dialog") | 56 | content_tag(:div, "", :id=>"institution_dialog") |
| 55 | ), | 57 | ), |
| 56 | :id => 'signup-institution' | 58 | :id => 'signup-institution' |
public/mpog-institution-validations.js
| @@ -113,9 +113,15 @@ | @@ -113,9 +113,15 @@ | ||
| 113 | } | 113 | } |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | + function get_clone_institution_data(value) { | ||
| 117 | + var user_institutions = jQuery(".user_institutions").first().clone(); | ||
| 118 | + user_institutions.val(value); | ||
| 119 | + | ||
| 120 | + return user_institutions; | ||
| 121 | + } | ||
| 116 | 122 | ||
| 117 | function institution_autocomplete() { | 123 | function institution_autocomplete() { |
| 118 | - jQuery(".input_institution").autocomplete({ | 124 | + jQuery("#input_institution").autocomplete({ |
| 119 | source : function(request, response){ | 125 | source : function(request, response){ |
| 120 | jQuery.ajax({ | 126 | jQuery.ajax({ |
| 121 | type: "GET", | 127 | type: "GET", |
| @@ -139,22 +145,43 @@ | @@ -139,22 +145,43 @@ | ||
| 139 | minLength: 2, | 145 | minLength: 2, |
| 140 | 146 | ||
| 141 | select : function (event, selected) { | 147 | select : function (event, selected) { |
| 142 | - var user_institutions = jQuery(".user_institutions").first().clone(); | ||
| 143 | - user_institutions.val(selected.item.id); | 148 | + jQuery("#institution_selected").val(selected.item.id).attr("data-name", selected.item.label); |
| 144 | 149 | ||
| 145 | - jQuery(".institution_container").append(user_institutions); | ||
| 146 | } | 150 | } |
| 147 | }); | 151 | }); |
| 148 | } | 152 | } |
| 149 | 153 | ||
| 154 | + function add_selected_institution_to_list(id, name) { | ||
| 155 | + var selected_institution = "<li data-institution='"+id+"'>"+name; | ||
| 156 | + selected_institution += "<a href='#' class='button without-text icon-remove remove-institution'></a></li>"; | ||
| 157 | + | ||
| 158 | + jQuery(".institutions_added").append(selected_institution); | ||
| 159 | + } | ||
| 160 | + | ||
| 150 | function add_new_institution(evt) { | 161 | function add_new_institution(evt) { |
| 151 | evt.preventDefault(); | 162 | evt.preventDefault(); |
| 152 | - var institution_input_field = jQuery(".institution_container .input_institution").first().clone(); | 163 | + var selected = jQuery("#institution_selected"); |
| 164 | + var institution_already_added = jQuery(".institutions_added li[data-institution='"+selected.val()+"']").length; | ||
| 153 | 165 | ||
| 154 | - institution_input_field.val(""); | 166 | + if(selected.val().length > 0 && institution_already_added == 0) { |
| 167 | + //field that send the institutions to the server | ||
| 168 | + jQuery(".institution_container").append(get_clone_institution_data(selected.val())); | ||
| 155 | 169 | ||
| 156 | - jQuery(".institution_container").append(institution_input_field); | ||
| 157 | - institution_autocomplete(); | 170 | + // Visualy add the selected institution to the list |
| 171 | + add_selected_institution_to_list(selected.val(), selected.attr("data-name")); | ||
| 172 | + | ||
| 173 | + // clean the institution flag | ||
| 174 | + selected.val("").attr("data-name", ""); | ||
| 175 | + jQuery("#input_institution").val(""); | ||
| 176 | + | ||
| 177 | + jQuery(".remove-institution").click(remove_institution); | ||
| 178 | + } | ||
| 179 | + } | ||
| 180 | + | ||
| 181 | + function remove_institution(evt) { | ||
| 182 | + evt.preventDefault(); | ||
| 183 | + | ||
| 184 | + jQuery(this).parent().remove(); | ||
| 158 | } | 185 | } |
| 159 | 186 | ||
| 160 | function set_events() { | 187 | function set_events() { |
| @@ -168,14 +195,11 @@ | @@ -168,14 +195,11 @@ | ||
| 168 | 195 | ||
| 169 | jQuery("#community_name").keyup(institution_already_exists); | 196 | jQuery("#community_name").keyup(institution_already_exists); |
| 170 | 197 | ||
| 171 | - jQuery(".add_new_institution").click(add_new_institution); | 198 | + jQuery("#add_new_institution").click(add_new_institution); |
| 172 | 199 | ||
| 173 | - institution_autocomplete(); | 200 | + jQuery(".remove-institution").click(remove_institution); |
| 174 | 201 | ||
| 175 | - jQuery(".input_institution").blur(function(){ | ||
| 176 | - if( this.value == "" ) | ||
| 177 | - jQuery("#user_institution_id").val(""); | ||
| 178 | - }); | 202 | + institution_autocomplete(); |
| 179 | } | 203 | } |
| 180 | 204 | ||
| 181 | jQuery(document).ready(set_events); | 205 | jQuery(document).ready(set_events); |