Commit 9655e48fa6d1908eda310d82e93d29748fd77141

Authored by Fabio Teixeira
Committed by David Silva
1 parent ec80627d

Set lincense link as an autocomplete field

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
controllers/mpog_software_plugin_controller.rb
@@ -130,6 +130,20 @@ class MpogSoftwarePluginController &lt; ApplicationController @@ -130,6 +130,20 @@ class MpogSoftwarePluginController &lt; ApplicationController
130 render :json=> data 130 render :json=> data
131 end 131 end
132 132
  133 + def get_license_data
  134 + return render :json=>{} if !request.xhr? || params[:query].nil?
  135 +
  136 + data = if params[:query].empty?
  137 + LicenseInfo.all
  138 + else
  139 + LicenseInfo.where("version ILIKE ?", "%#{params[:query]}%").select("id, version")
  140 + end
  141 +
  142 + render :json=> data.collect { |license|
  143 + {:id=>license.id, :label=>license.version}
  144 + }
  145 + end
  146 +
133 protected 147 protected
134 148
135 def get_state_list 149 def get_state_list
public/mpog-software-validations.js
1 -(function(){ 1 +(function($){
2 var AJAX_URL = { 2 var AJAX_URL = {
3 get_field_data: 3 get_field_data:
4 - url_with_subdirectory("/plugin/mpog_software/get_field_data") 4 + url_with_subdirectory("/plugin/mpog_software/get_field_data"),
  5 + get_license_data:
  6 + url_with_subdirectory("/plugin/mpog_software/get_license_data")
5 }; 7 };
6 8
7 9
8 function get_hidden_description_field(autocomplete_field, klass) { 10 function get_hidden_description_field(autocomplete_field, klass) {
9 - var field = jQuery(autocomplete_field); 11 + var field = $(autocomplete_field);
10 field = field.parent().parent().find(klass); 12 field = field.parent().parent().find(klass);
11 return field; 13 return field;
12 } 14 }
13 15
  16 +
14 function verify_autocomplete(field, klass) { 17 function verify_autocomplete(field, klass) {
15 - var field = jQuery(field); 18 + var field = $(field);
16 var selected = get_hidden_description_field(field, klass); 19 var selected = get_hidden_description_field(field, klass);
17 - var message_error = jQuery(field).parent().find(".autocomplete_validation_message"); 20 + var message_error = $(field).parent().find(".autocomplete_validation_message");
18 21
19 if( field.length === 0 || selected.val().length === 0 ) { 22 if( field.length === 0 || selected.val().length === 0 ) {
20 message_error.removeClass("hide-field"); 23 message_error.removeClass("hide-field");
@@ -27,6 +30,7 @@ @@ -27,6 +30,7 @@
27 } 30 }
28 } 31 }
29 32
  33 +
30 function database_autocomplete() { 34 function database_autocomplete() {
31 enable_autocomplete("database", ".database_description_id", ".database_autocomplete"); 35 enable_autocomplete("database", ".database_description_id", ".database_autocomplete");
32 } 36 }
@@ -36,10 +40,11 @@ @@ -36,10 +40,11 @@
36 enable_autocomplete("software_language", ".programming_language_id", ".language_autocomplete"); 40 enable_autocomplete("software_language", ".programming_language_id", ".language_autocomplete");
37 } 41 }
38 42
  43 +
39 function enable_autocomplete(field_name, field_value_class, autocomplete_class) { 44 function enable_autocomplete(field_name, field_value_class, autocomplete_class) {
40 - jQuery(autocomplete_class).autocomplete({ 45 + $(autocomplete_class).autocomplete({
41 source : function(request, response){ 46 source : function(request, response){
42 - jQuery.ajax({ 47 + $.ajax({
43 type: "GET", 48 type: "GET",
44 url: AJAX_URL.get_field_data, 49 url: AJAX_URL.get_field_data,
45 data: {query: request.term, field: field_name}, 50 data: {query: request.term, field: field_name},
@@ -59,18 +64,19 @@ @@ -59,18 +64,19 @@
59 }).blur(function(){ 64 }).blur(function(){
60 verify_autocomplete(this, field_value_class); 65 verify_autocomplete(this, field_value_class);
61 }).click(function(){ 66 }).click(function(){
62 - jQuery(this).autocomplete("search", ""); 67 + $(this).autocomplete("search", "");
63 }); 68 });
64 } 69 }
65 70
  71 +
66 function delete_dynamic_table() { 72 function delete_dynamic_table() {
67 - var button = jQuery(".delete-dynamic-table"); 73 + var button = $(".delete-dynamic-table");
68 74
69 button.each(function(){ 75 button.each(function(){
70 - var table = jQuery(this).parent().parent().parent().parent(); 76 + var table = $(this).parent().parent().parent().parent();
71 var color = table.css("background-color"); 77 var color = table.css("background-color");
72 78
73 - jQuery(this).click(function(){ 79 + $(this).click(function(){
74 table.remove(); 80 table.remove();
75 return false; 81 return false;
76 }).mouseover(function(){ 82 }).mouseover(function(){
@@ -81,77 +87,105 @@ @@ -81,77 +87,105 @@
81 }); 87 });
82 } 88 }
83 89
  90 +
84 function has_more_than_one(table_class) { 91 function has_more_than_one(table_class) {
85 - return (jQuery("."+table_class).length > 2); // One is always added by defaul and its hidden 92 + return ($("."+table_class).length > 2); // One is always added by defaul and its hidden
86 } 93 }
87 94
  95 +
88 function add_dynamic_table(element_id, content) { 96 function add_dynamic_table(element_id, content) {
89 Element.insert(element_id, {bottom: content}); 97 Element.insert(element_id, {bottom: content});
90 } 98 }
91 99
92 - function get_license_link(){  
93 - var selected_index = this.options.selectedIndex;  
94 - var selected = this.options[selected_index];  
95 - var link = jQuery("#version_" + this.value).val();  
96 -  
97 - if( selected.textContent == "Another" ) {  
98 - jQuery("#another_license").removeClass("hide-field");  
99 - jQuery("#version_link").addClass("hide-field");  
100 - } else {  
101 - jQuery("#another_license").addClass("hide-field");  
102 - jQuery("#version_link").removeClass("hide-field");  
103 - }  
104 -  
105 - jQuery("#version_link")  
106 - .attr("href", link)  
107 - .text(link);  
108 - }  
109 100
110 function show_another_license_on_page_load() { 101 function show_another_license_on_page_load() {
111 - jQuery("#license_info_id").trigger("change"); 102 + $("#license_info_id").trigger("change");
112 } 103 }
113 104
  105 +
114 function hide_infos() { 106 function hide_infos() {
115 - jQuery(".language-info").hide();  
116 - jQuery(".database-info").hide();  
117 - jQuery(".libraries-info").hide();  
118 - jQuery(".operating-system-info").hide();  
119 - jQuery(".language-button-hide").hide();  
120 - jQuery(".database-button-hide").hide();  
121 - jQuery(".libraries-button-hide").hide();  
122 - jQuery(".operating-system-button-hide").hide(); 107 + $(".language-info").hide();
  108 + $(".database-info").hide();
  109 + $(".libraries-info").hide();
  110 + $(".operating-system-info").hide();
  111 + $(".language-button-hide").hide();
  112 + $(".database-button-hide").hide();
  113 + $(".libraries-button-hide").hide();
  114 + $(".operating-system-button-hide").hide();
123 } 115 }
124 116
125 function hide_show_public_software_fields() { 117 function hide_show_public_software_fields() {
126 - if (jQuery("#software_public_software").prop("checked"))  
127 - jQuery(".public-software-fields").show(); 118 + if ($("#software_public_software").prop("checked"))
  119 + $(".public-software-fields").show();
128 else 120 else
129 - jQuery(".public-software-fields").hide(); 121 + $(".public-software-fields").hide();
130 } 122 }
131 123
  124 +
132 function replace_software_creations_step() { 125 function replace_software_creations_step() {
133 - var software_creation_step = jQuery("#software_creation_step").remove(); 126 + var software_creation_step = $("#software_creation_step").remove();
134 127
135 if( software_creation_step.size() > 0 ) { 128 if( software_creation_step.size() > 0 ) {
136 - jQuery("#profile-data").parent().prepend(software_creation_step); 129 + $("#profile-data").parent().prepend(software_creation_step);
137 } 130 }
138 } 131 }
139 132
140 - jQuery(document).ready(function(){ 133 +
  134 + function display_another_license_fields(selected) {
  135 + if( selected == "Another" ) {
  136 + $("#another_license").removeClass("hide-field");
  137 + $("#version_link").addClass("hide-field");
  138 + } else {
  139 + $("#another_license").addClass("hide-field");
  140 + $("#version_link").removeClass("hide-field");
  141 + }
  142 + }
  143 +
  144 + function trigger_license_info_events() {
  145 + $("#license_info_version").autocomplete({
  146 + source : function(request, response){
  147 + $.ajax({
  148 + type: "GET",
  149 + url: AJAX_URL.get_license_data,
  150 + data: {query: request.term},
  151 + success: function(result){
  152 + response(result);
  153 + }
  154 + });
  155 + },
  156 +
  157 + minLength: 0,
  158 +
  159 + select : function (event, selected) {
  160 + $("#license_info_id").val(selected.item.id);
  161 + var link = $("#version_" + selected.item.id).val();
  162 +
  163 + console.log(link);
  164 +
  165 + display_another_license_fields(selected.item.label);
  166 + $("#version_link").attr("href", link).text(link);
  167 + }
  168 + }).click(function(){
  169 + $(this).autocomplete("search", this.value);
  170 + });
  171 + }
  172 +
  173 +
  174 + $(document).ready(function() {
141 var dynamic_tables = ["dynamic-databases", "dynamic-languages", "dynamic-libraries","dynamic-operating_systems"]; 175 var dynamic_tables = ["dynamic-databases", "dynamic-languages", "dynamic-libraries","dynamic-operating_systems"];
142 176
143 delete_dynamic_table(); 177 delete_dynamic_table();
144 database_autocomplete(); 178 database_autocomplete();
145 language_autocomplete(); 179 language_autocomplete();
146 180
147 - jQuery(".new-dynamic-table").click(function(){  
148 - var link = jQuery(this); 181 + $(".new-dynamic-table").click(function(){
  182 + var link = $(this);
149 183
150 dynamic_tables.each(function(value){ 184 dynamic_tables.each(function(value){
151 if( link.hasClass(value) ) { 185 if( link.hasClass(value) ) {
152 var table_id = value.split("-")[1]; 186 var table_id = value.split("-")[1];
153 187
154 - var table_html = jQuery("#table_structure_"+table_id).html(); 188 + var table_html = $("#table_structure_"+table_id).html();
155 add_dynamic_table(table_id, table_html); 189 add_dynamic_table(table_id, table_html);
156 } 190 }
157 }); 191 });
@@ -162,67 +196,67 @@ @@ -162,67 +196,67 @@
162 return false; 196 return false;
163 }); 197 });
164 198
165 - jQuery(".language-button-hide").click(function(event){ 199 + $(".language-button-hide").click(function(event){
166 event.preventDefault(); 200 event.preventDefault();
167 - jQuery(".language-info").hide();  
168 - jQuery(".language-button-show").show();  
169 - jQuery(".language-button-hide").hide(); 201 + $(".language-info").hide();
  202 + $(".language-button-show").show();
  203 + $(".language-button-hide").hide();
170 }); 204 });
171 205
172 - jQuery(".language-button-show").click(function(event){ 206 + $(".language-button-show").click(function(event){
173 event.preventDefault(); 207 event.preventDefault();
174 - jQuery(".language-info").show();  
175 - jQuery(".language-button-show").hide();  
176 - jQuery(".language-button-hide").show(); 208 + $(".language-info").show();
  209 + $(".language-button-show").hide();
  210 + $(".language-button-hide").show();
177 }); 211 });
178 212
179 - jQuery(".operating-system-button-hide").click(function(event){ 213 + $(".operating-system-button-hide").click(function(event){
180 event.preventDefault(); 214 event.preventDefault();
181 - jQuery(".operating-system-info").hide();  
182 - jQuery(".operating-system-button-show").show();  
183 - jQuery(".operating-system-button-hide").hide(); 215 + $(".operating-system-info").hide();
  216 + $(".operating-system-button-show").show();
  217 + $(".operating-system-button-hide").hide();
184 }); 218 });
185 219
186 - jQuery(".operating-system-button-show").click(function(event){ 220 + $(".operating-system-button-show").click(function(event){
187 event.preventDefault(); 221 event.preventDefault();
188 - jQuery(".operating-system-info").show();  
189 - jQuery(".operating-system-button-show").hide();  
190 - jQuery(".operating-system-button-hide").show(); 222 + $(".operating-system-info").show();
  223 + $(".operating-system-button-show").hide();
  224 + $(".operating-system-button-hide").show();
191 }); 225 });
192 226
193 - jQuery(".database-button-hide").click(function(event){ 227 + $(".database-button-hide").click(function(event){
194 event.preventDefault(); 228 event.preventDefault();
195 - jQuery(".database-info").hide();  
196 - jQuery(".database-button-show").show();  
197 - jQuery(".database-button-hide").hide(); 229 + $(".database-info").hide();
  230 + $(".database-button-show").show();
  231 + $(".database-button-hide").hide();
198 }); 232 });
199 233
200 - jQuery(".database-button-show").click(function(event){ 234 + $(".database-button-show").click(function(event){
201 event.preventDefault(); 235 event.preventDefault();
202 - jQuery(".database-info").show();  
203 - jQuery(".database-button-show").hide();  
204 - jQuery(".database-button-hide").show(); 236 + $(".database-info").show();
  237 + $(".database-button-show").hide();
  238 + $(".database-button-hide").show();
205 }); 239 });
206 240
207 - jQuery(".libraries-button-hide").click(function(event){ 241 + $(".libraries-button-hide").click(function(event){
208 event.preventDefault(); 242 event.preventDefault();
209 - jQuery(".libraries-info").hide();  
210 - jQuery(".libraries-button-show").show();  
211 - jQuery(".libraries-button-hide").hide(); 243 + $(".libraries-info").hide();
  244 + $(".libraries-button-show").show();
  245 + $(".libraries-button-hide").hide();
212 }); 246 });
213 247
214 - jQuery(".libraries-button-show").click(function(event){ 248 + $(".libraries-button-show").click(function(event){
215 event.preventDefault(); 249 event.preventDefault();
216 - jQuery(".libraries-info").show();  
217 - jQuery(".libraries-button-show").hide();  
218 - jQuery(".libraries-button-hide").show(); 250 + $(".libraries-info").show();
  251 + $(".libraries-button-show").hide();
  252 + $(".libraries-button-hide").show();
219 }); 253 });
  254 +
220 hide_show_public_software_fields(); 255 hide_show_public_software_fields();
221 - jQuery("#software_public_software").click(hide_show_public_software_fields); 256 + $("#software_public_software").click(hide_show_public_software_fields);
222 257
223 replace_software_creations_step(); 258 replace_software_creations_step();
224 259
225 - jQuery("#license_info_id").change(get_license_link);  
226 - show_another_license_on_page_load(); 260 + trigger_license_info_events();
227 }); 261 });
228 -})(); 262 +})(jQuery);
views/mpog_software_plugin_myprofile/_main_software_editor_extras.html.erb
@@ -13,6 +13,9 @@ @@ -13,6 +13,9 @@
13 <h3> <%= _("Licenses") %> </h3> 13 <h3> <%= _("Licenses") %> </h3>
14 <div id='licenses'> 14 <div id='licenses'>
15 <%= select_tag("license[license_infos_id]", options_for_select(LicenseHelper.getListLicenses.collect{|l| [l.version, l.id]}, :selected => @profile.software_info.license_info_id), :id => "license_info_id") %> 15 <%= select_tag("license[license_infos_id]", options_for_select(LicenseHelper.getListLicenses.collect{|l| [l.version, l.id]}, :selected => @profile.software_info.license_info_id), :id => "license_info_id") %>
  16 +
  17 + <%= labelled_text_field _("License Version: "), "license_info[version]", @profile.software_info.license_info.version, :id=>"license_info_version" %>
  18 + <%= hidden_field_tag "license[license_infos_id]", @profile.software_info.license_info_id, :id=>"license_info_id" %>
16 <br /> 19 <br />
17 20
18 <h4> <%= _("License link") %> </h4> 21 <h4> <%= _("License link") %> </h4>
views/mpog_software_plugin_myprofile/new_software.html.erb
@@ -44,8 +44,8 @@ @@ -44,8 +44,8 @@
44 44
45 <%= fields_for @license_info do |lcv| %> 45 <%= fields_for @license_info do |lcv| %>
46 <div class="formfieldline"> 46 <div class="formfieldline">
47 - <h4> <%= lcv.label _("License Version: ") %> </h4>  
48 - <%= lcv.select(:id, LicenseInfo.all.map {|l| [l.version, l.id]}, {:selected => 1}) %> 47 + <%= labelled_text_field _("License Version: "), "license_info[version]", "", :id=>"license_info_version" %>
  48 + <%= hidden_field_tag "license[license_infos_id]", "", :id=>"license_info_id" %>
49 49
50 <h4> <%= _("License link") %> </h4> 50 <h4> <%= _("License link") %> </h4>
51 <% LicenseHelper.getListLicenses.each do | license | %> 51 <% LicenseHelper.getListLicenses.each do | license | %>