From 04ff345b941ea9095087c302cfe6b7dffd9ccc71 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Mon, 23 Sep 2013 20:30:09 +0800 Subject: [PATCH] survey edit completed --- .../survey/app/assets/javascripts/survey.js | 140 +++++++++++++++--- .../survey/back_end/surveys_controller.rb | 18 ++- .../survey/back_end/surveys/_form.html.erb | 31 +--- .../back_end/surveys/_questions.html.erb | 91 +++++------- .../survey/back_end/surveys/edit.html.erb | 4 +- 5 files changed, 172 insertions(+), 112 deletions(-) diff --git a/vendor/built_in_modules/survey/app/assets/javascripts/survey.js b/vendor/built_in_modules/survey/app/assets/javascripts/survey.js index cce9ad63..d21c192c 100644 --- a/vendor/built_in_modules/survey/app/assets/javascripts/survey.js +++ b/vendor/built_in_modules/survey/app/assets/javascripts/survey.js @@ -24,14 +24,67 @@ function setData(l, length, optionsI, className) { _length: length, _className: className, _destroy: [id+l+"_destroy", name+l+"][_destroy]"], - _sequence : [id+l+"_sequence",name+l+"][sequence]"], + _sequence : [id+l+"_sequence",name+l+"][sequence]",length-1], _title_translations: [id+l+"_title_translations", name+l+"][title_translations]", "questions_title_"+l], _description_translations: [id+l+"_description_translations", name+l+"][description_translations]", "questions_depiction_"+l], _type: [id+l+"_type", name+l+"][type]"], - _is_required: [id+l+"_is_required", name+l+"][is_required]"], + _is_required: [id+l+"_is_required", name+l+"][is_required]",false], _option: [id+optionID, name+optionName, "attributes_"+l+"_options_"+optionsI+"_"], _radiogroups: [id+radiogroupsID, name+radiogroupsName, "attributes_"+l+"_radiogroups_"+optionsI+"_"], - _custom_option: [id+l+"_custom_option", name+l+"][custom_option]"] + _custom_option: [id+l+"_custom_option", name+l+"][custom_option]",false] + }; + return data; +}; + +function setEditData(l, length, d, optionsI, className) { + if(!optionsI) { + optionsI = 0; + } + var id = "survey_survey_questions_attributes_", + name = "survey[survey_questions_attributes][", + optionID = l+"_survey_question_options_attributes_"+optionsI+"_name_translations_", + optionName = l+"][survey_question_options_attributes]["+optionsI+"][name_translations]", + radiogroupsID = l+"_survey_question_radiogroups_attributes_"+optionsI+"_name_translations_", + radiogroupsName = l+"][survey_question_radiogroups_attributes]["+optionsI+"][name_translations]"; + data = { + _l: l, + _length: length, + _className: className, + _destroy: [id+l+"__destroy", name+l+"][_destroy]"], + _id: [id+l+"_id", name+l+"][id]",d._id], + _sequence : [id+l+"_sequence",name+l+"][sequence]",d.sequence], + _title_translations: [id+l+"_title_translations", name+l+"][title_translations]", "questions_title_"+l,d.title_translations], + _description_translations: [id+l+"_description_translations", name+l+"][description_translations]", "questions_depiction_"+l,d.description_translations], + _type: [id+l+"_type", name+l+"][type]",d.type], + _is_required: [id+l+"_is_required", name+l+"][is_required]",d.is_required], + _option: [id+optionID, name+optionName, "attributes_"+l+"_options_"+optionsI+"_"], + _radiogroups: [id+radiogroupsID, name+radiogroupsName, "attributes_"+l+"_radiogroups_"+optionsI+"_"], + _custom_option: [id+l+"_custom_option", name+l+"][custom_option]",d.custom_option] + }; + return data; +}; + +function setEditQuestionAttributes(l, length, d, optionsI, className) { + if(!optionsI) { + optionsI = 0; + } + var id = "survey_survey_questions_attributes_", + name = "survey[survey_questions_attributes][", + optionID = l+"_survey_question_options_attributes_"+optionsI+"_name_translations_", + optionName = l+"][survey_question_options_attributes]["+optionsI+"][name_translations]", + radiogroupsID = l+"_survey_question_radiogroups_attributes_"+optionsI+"_name_translations_", + radiogroupsName = l+"][survey_question_radiogroups_attributes]["+optionsI+"][name_translations]", + option_id = l+"][survey_question_options_attributes]["+optionsI+"][id]", + radiogroups_id = l+"][survey_question_radiogroups_attributes]["+optionsI+"][id]"; + data = { + _l: l, + _length: length, + _className: className, + _option: [id+optionID, name+optionName, "attributes_"+l+"_options_"+optionsI+"_", d.name_translations], + _radiogroups: [id+radiogroupsID, name+radiogroupsName, "attributes_"+l+"_radiogroups_"+optionsI+"_",d.name_translations], + _options_id: [name+option_id,d._id], + _radiogroups_id: [name+radiogroups_id,d._id] + }; return data; }; @@ -43,6 +96,47 @@ function inputAppendLength(element, length) { element.closest('.input-append').remove(); } +function editQuestion (dataArray){ + var l = $('.questions > .attributes').length || 0; + $.each(dataArray,function ( i, d ) { + console.log(d) + $('#template-survery').tmpl(setEditData(l, $('.questions > .attributes').length + 1, d)).appendTo($('.questions')); + checkQuestionsLength(); + textareaResizable(); // from textarea-lang-btn.js + if( d.type > 1 && d.type < 5 ){ + onQuestionTypeChanged( $(".questions .field-type:eq("+ i +")"), d.type ); + $.each(d.survey_question_options,function ( x, data ){ + $('#template-survery-option').tmpl(setEditQuestionAttributes( l, "", data, x, "options" )).insertBefore($(".questions .field-type:eq("+ i +") .options .add-btn")); + $(".questions .field-type:eq("+ i +") .options").data("index",x); + }) + } else if( d.type == 5 ) { + onQuestionTypeChanged( $(".questions .field-type:eq("+ i +")"), d.type ); + $.each(d.survey_question_radiogroups,function ( x, data ){ + $('#template-survery-option').tmpl(setEditQuestionAttributes( l, "", data, x, "rgl" )).insertBefore($(".questions .field-type:eq("+ i +") .rgl .add-btn")); + $(".questions .field-type:eq("+ i +") .options").data("index",x); + }) + $.each(d.survey_question_options,function ( x, data ){ + $('#template-survery-option').tmpl(setEditQuestionAttributes( l, "", data, x, "options" )).insertBefore($(".questions .field-type:eq("+ i +") .options .add-btn")); + $(".questions .field-type:eq("+ i +") .options").data("index",x); + }) + } + l++; + }) +} + +function onQuestionTypeChanged ( $fieldType, _val ){ + if(_val < 2) { + $fieldType.fadeOut(300); + } else { + $fieldType.fadeIn(300); + if(_val < 5) { + $fieldType.find('.rgl, hr').addClass('hide').siblings('.allow').removeClass('hide'); + } else { + $fieldType.find('.rgl, hr').removeClass('hide').siblings('.allow').addClass('hide'); + } + }; +} + $(function() { var l = $('.questions > .attributes').length || 0; if($('#survey_redirect_mode').prop('checked')) { @@ -79,22 +173,18 @@ $(function() { }); $('.questions').on('change', '.type-selector', function(event) { - $(this).children("option:selected").each(function () { - var $fieldType = $(this).closest('.control-group').siblings('.field-type'), - _val = $(this).val(), - _index = $(this).closest('.attributes').data().index; - if(_val < 2) { - $fieldType.fadeOut(300); - } else { - $fieldType.fadeIn(300); - if(_val < 5) { - $fieldType.find('.rgl, hr').addClass('hide').siblings('.allow').removeClass('hide'); - } else { - $fieldType.find('.rgl, hr').removeClass('hide').siblings('.allow').addClass('hide'); - } - }; - }); + var $fieldType = $(this).closest('.control-group').siblings('.field-type'), + _val = $(this).val(), + _index = $(this).closest('.attributes').data().index; + + onQuestionTypeChanged( $fieldType, _val ); }); + $('.questions').on(clickEvent, "input[type=checkbox]", function(){ + if( $( this ).is(":checked") ) + $( this ).parent().find( 'input[type=hidden]' ).val("1"); + else + $( this ).parent().find( 'input[type=hidden]' ).val("0"); + }) $('.questions').on('keyup', '.q-title', function(event) { var $questionsTitle = $(this).closest('.attributes-body').siblings('.attributes-header').find('.questions-title'), @@ -118,10 +208,13 @@ $(function() { inputAppendLength($(this), $(this).closest('.add-target').children('.input-append').length); } else if($(this).hasClass('delete')) { $(this).closest('.attributes').fadeOut(300, function() { - $(this).remove(); + $(this).hide(); + $( this ).find( '.should_destroy' ).val(1); checkQuestionsLength(); - $('.questions > .attributes').each(function(index, el) { - $(this).find('h4').find('span:eq(0)').text(index + 1); + $('.questions .attributes').each(function(index, el) { + $( this ).find( "input.sequence" ).val( index ); + $( this ).find( "h4 span:eq(0)" ).text( index + 1 ); + $( this ).attr( "data-index", index ); }); }); } else if($(this).hasClass('icon-caret-up') || $(this).hasClass('icon-caret-down')) { @@ -132,16 +225,15 @@ $(function() { $(this).closest('.attributes-header').siblings('.attributes-body').slideDown(300) $(this).addClass('icon-caret-up').removeClass('icon-caret-down'); } - } else if($(this).parent().hasClass('btn-group')){ + } else if($(this).hasClass('change-title')){ var $questionsTitle = $(this).closest('.attributes-body').siblings('.attributes-header').find('.questions-title'), $tabPane = $(this).closest('.btn-group').siblings('.tab-content'); $questionsTitle.text($tabPane.find('div').not('.active').children('input[type="text"]').val()) } else { - var _i = $(this).closest('.control-group').data('index') || 1, + var _i = $(this).closest('.control-group').data('index') || 0, _className = $(this).closest('.control-group').attr('class').match(/options|rgl/g)[0], _index = $(this).closest('.attributes').data().index, _length = $(this).closest('.add-btn').siblings('.input-append').length; - console.log(_i) $('#template-survery-option').tmpl(setData(_index, "", _i, _className)).insertBefore($(this).closest('.add-btn')); $(this).closest('.add-target').find('.input-append').find('.remove-input').removeClass('hide').prev().removeClass('last'); _i += 1 diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index ba4c2a76..9052d26f 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -48,11 +48,27 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController def edit @survey = ::Survey.find(params[:id]) + @sqs = [] + @survey.survey_questions.each do |sq| + sq['title_translations'] = sq.title_translations + sq['description_translations'] = sq.description_translations + temp = [] + sq.survey_question_options.each do |sqo| + sqo['name_translations'] = sqo.name_translations + temp << sqo + end + temp = [] + sq.survey_question_radiogroups.each do |sqr| + sqr['name_translations'] = sqr.name_translations + temp << sqr + end + sq.survey_question_radiogroups = temp + @sqs << sq + end end def update @survey = ::Survey.find(params[:id]) - @survey.update_user_id = current_user.id respond_to do |format| diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb index 3d9dfa4f..1b86a748 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_form.html.erb @@ -116,31 +116,6 @@ <%= render :partial => "questions" %> -
- - - - - -
-
-
-
-
- <% @survey.survey_questions.each_with_index do |survey_question, i| %> - <%= f.fields_for :survey_questions, survey_question do |f| %> - <%= render :partial => 'form_survey_question', :object => survey_question, :locals => {:f => f, :i => i} %> - <% end %> - <% end %> -
-
- <%= hidden_field_tag 'survey_question_field_count', @survey.survey_questions.count %> -
-
- -
- -
- -
- + diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_questions.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_questions.html.erb index 1ab01ad4..151d2946 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_questions.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/back_end/surveys/_questions.html.erb @@ -3,8 +3,11 @@
Delete - -

Q${_length}

+ + {{if _id}} + + {{/if}} +

Q${_length} ${_title_translations[3].en}

@@ -13,15 +16,15 @@
- +
- +
@@ -35,10 +38,10 @@ Chinese
- +
- +
@@ -46,13 +49,13 @@
- + + + + + +
@@ -64,23 +67,7 @@
-
-
-
- -
-
- -
-
- -
+

Add @@ -95,23 +82,7 @@

-
-
-
- -
-
- -
-
- -
+

Add @@ -123,8 +94,8 @@

@@ -137,8 +108,8 @@
@@ -153,12 +124,15 @@