diff options
author | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-07-22 17:49:08 (GMT) |
---|---|---|
committer | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-07-22 17:52:10 (GMT) |
commit | cc720312dd4f6f95b2d2a7edd52d5151b66ae332 (patch) | |
tree | c7ea6abe912226d6430395efb37373e3578ccdf1 | |
parent | 1fae6f21dc0ad0225b929a8c73e28a84d791d1a2 (diff) |
order in options bug fix
-rw-r--r-- | webapp/polls/models.py | 4 | ||||
-rw-r--r-- | webapp/polls/templates/mustache/option_image_upload.html | 2 | ||||
-rw-r--r-- | webapp/polls/tests/option_tests.py | 12 | ||||
-rw-r--r-- | webapp/polls/tests/poll_tests.py | 3 | ||||
-rw-r--r-- | webapp/polls/tests/structure_tests.py | 10 | ||||
-rw-r--r-- | webapp/webapp/static/js/dynamic_structure.js | 34 |
6 files changed, 47 insertions, 18 deletions
diff --git a/webapp/polls/models.py b/webapp/polls/models.py index bc1ad41..1848ffb 100644 --- a/webapp/polls/models.py +++ b/webapp/polls/models.py @@ -316,6 +316,7 @@ class Poll(Document, AbstracErrorObject): field['options'].update({ '%s' % Option.get_offset_id(): { 'text': "", + 'order': "0" } }) @@ -512,6 +513,9 @@ class Option(AbstractObject, ComponentStructure): if self.text: data[self.id].update({'text': self.text}) + if self.order is not None: + data[self.id].update({'order': self.order}) + if self.img_name: if img_serialize: img_path = self.get_absolute_path() diff --git a/webapp/polls/templates/mustache/option_image_upload.html b/webapp/polls/templates/mustache/option_image_upload.html index 67b54c8..f3f6380 100644 --- a/webapp/polls/templates/mustache/option_image_upload.html +++ b/webapp/polls/templates/mustache/option_image_upload.html @@ -1,7 +1,7 @@ <!-- Template: Field Image option upload --> <script type="text/x-mustache-template" name="field_option_image_upload"> - <div class="fileupload fileupload-new span3 well well-small" data-provides="fileupload" style="margin: 10px;"> + <div class="fileupload fileupload-new span3 well well-small WFieldImageOption_container" data-provides="fileupload" style="margin: 10px;"> <label> <b>ID</b>: <span class="draggable"><i class="icon-move"></i>[[ id ]]</span> </label><br /> diff --git a/webapp/polls/tests/option_tests.py b/webapp/polls/tests/option_tests.py index 5a92150..626aa19 100644 --- a/webapp/polls/tests/option_tests.py +++ b/webapp/polls/tests/option_tests.py @@ -114,10 +114,13 @@ class OptionTests(MongoTestCase): def test_to_python(self): + order = 0 + img_option_expected = { "1": { "img_name": "1.jpg", - "weight": 100 + "weight": 100, + "order": order } } @@ -125,13 +128,15 @@ class OptionTests(MongoTestCase): option.id = "1" option.img_name = "1.jpg" option.weight = 100 + option.order = order self.assertEqual(img_option_expected, option.to_python()) basic_option_expected = { "1": { "text": "some text", - "weight": 100 + "weight": 100, + "order": order } } @@ -139,18 +144,21 @@ class OptionTests(MongoTestCase): option.id = "1" option.text = "some text" option.weight = 100 + option.order = order self.assertEqual(basic_option_expected, option.to_python()) default_option_expected = { "1": { "text": "some text", + "order": 0 } } option = Option() option.id = "1" option.text = "some text" + option.order = 0 self.assertEqual(default_option_expected, option.to_python()) diff --git a/webapp/polls/tests/poll_tests.py b/webapp/polls/tests/poll_tests.py index 8b74abc..20043d3 100644 --- a/webapp/polls/tests/poll_tests.py +++ b/webapp/polls/tests/poll_tests.py @@ -272,7 +272,8 @@ class PollTests(MongoTestCase): 'name': 'field_0_0', 'options': { '1': { - 'text': 'Default text' + 'text': 'Default text', + 'order': 0 } }, } diff --git a/webapp/polls/tests/structure_tests.py b/webapp/polls/tests/structure_tests.py index 0c3ef4d..a91f854 100644 --- a/webapp/polls/tests/structure_tests.py +++ b/webapp/polls/tests/structure_tests.py @@ -169,7 +169,8 @@ class StructureTests(MongoTestCase): 'widget_type': Field.TextInput, 'options': { '131212': { - 'text': "text" + 'text': "text", + 'order': 0 } } } @@ -183,7 +184,8 @@ class StructureTests(MongoTestCase): 'widget_type': Field.TextInput, 'options': { '131212': { - 'text': "text" + 'text': "text", + 'order': 0 } } } @@ -199,7 +201,7 @@ class StructureTests(MongoTestCase): 'widget_type': Field.TextInput, 'order': 0 }) - field.add_options({'131212': {'text': "text"}}) + field.add_options({'131212': {'text': "text", 'order': 0}}) group = Group({'name': "group name", 'order': 0}) group.add_field(field, field.order) @@ -210,7 +212,7 @@ class StructureTests(MongoTestCase): 'widget_type': Field.TextInput, 'order': 0 }) - field.add_options({'131212': {'text': "text"}}) + field.add_options({'131212': {'text': "text", 'order': 0}}) group = Group({'name': "group name", 'order': 1}) group.add_field(field, field.order) diff --git a/webapp/webapp/static/js/dynamic_structure.js b/webapp/webapp/static/js/dynamic_structure.js index 57e3609..33c3371 100644 --- a/webapp/webapp/static/js/dynamic_structure.js +++ b/webapp/webapp/static/js/dynamic_structure.js @@ -60,13 +60,27 @@ var _prev_order = function(field_widget){ var options_container = $(field_widget.find('.WFieldOptions_container')[0]); var prev_option = $(options_container).children().last(); var prev_order = $(prev_option.find("[name*='.order']")[0]).val(); - if (prev_order == null){ + if (!prev_order){ order = 0 } else { order = parseInt(prev_order) + 1; } - return order; + return "" + order; +} + +var _prev_order_image = function(field_widget){ + var order; + var options_container = $(field_widget.find('.WFieldImageOption_container')); + var prev_option = $(options_container).last(); + var prev_order = $(prev_option.find("[name*='.order']")[0]).val(); + if (!prev_order){ + order = 0 + } else { + order = parseInt(prev_order) + 1; + } + + return "" + order; } var factoryOptionDefault = function(group_order, field_widget, id, default_value) { @@ -86,7 +100,7 @@ var factoryOptionDefault = function(group_order, field_widget, id, default_value "value": default_value || '', "group_order": group_order, "field_order": field_order, - "order": 0 + "order": "0" }) ); @@ -104,7 +118,7 @@ var factoryImageOptionUpload = function(id, value, container, group_order, field "weight": value['weight'], "group_order": group_order, "field_order": field_order, - "order": order + "order": order || value['order'] }) ), row_fluid = container.find('.row-fluid'); @@ -146,7 +160,7 @@ var factoryImageOptionThumbnail = function(id, value, container, group_order, fi "weight": value['weight'], "group_order": group_order, "field_order": field_order, - "order": order + "order": order || value['order'] }) ), row_fluid = container.find('.row-fluid'); @@ -196,7 +210,7 @@ var factoryOption = function(id, value, container, group_order, field_order, ord "weight": value['weight'], "group_order": group_order, "field_order": field_order, - "order": order + "order": order || value['order'] }) ); @@ -294,10 +308,11 @@ var bindFieldAddOptionButton = function(add_option_button) { // Get current selected widget type for current field var current_widget_type = field_widget.find(".WFieldWidgetType").attr('value'); - var order = _prev_order(field_widget); if ($.inArray(current_widget_type, WITH_IMAGES) == -1){ + var order = _prev_order(field_widget); factoryOption(OFFSET_OPTION_ID, empty_option_widget, options_container, group_order, field_order, order); } else { + var order = _prev_order_image(field_widget); factoryImageOptionUpload(OFFSET_OPTION_ID, empty_option_widget, options_container, group_order, field_order, order); } }); @@ -471,11 +486,10 @@ var factoryField = function(order, value) { // Image option $.each(value['options'] || [], function(id, opt_value){ options_container = field_widget.find('.WFieldOptions_container'); - var option_order = _prev_order(field_widget); if (opt_value.hasOwnProperty('img_name')){ - factoryImageOptionThumbnail(id, opt_value, options_container, group_order, order, option_order); + factoryImageOptionThumbnail(id, opt_value, options_container, group_order, order); } else { - factoryImageOptionUpload(id, opt_value, options_container, group_order, order, option_order); + factoryImageOptionUpload(id, opt_value, options_container, group_order, order); } }); } |