Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRogelio Mita <rogeliomita@activitycentral.com>2013-07-22 17:49:08 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-07-22 17:52:10 (GMT)
commitcc720312dd4f6f95b2d2a7edd52d5151b66ae332 (patch)
treec7ea6abe912226d6430395efb37373e3578ccdf1
parent1fae6f21dc0ad0225b929a8c73e28a84d791d1a2 (diff)
order in options bug fix
-rw-r--r--webapp/polls/models.py4
-rw-r--r--webapp/polls/templates/mustache/option_image_upload.html2
-rw-r--r--webapp/polls/tests/option_tests.py12
-rw-r--r--webapp/polls/tests/poll_tests.py3
-rw-r--r--webapp/polls/tests/structure_tests.py10
-rw-r--r--webapp/webapp/static/js/dynamic_structure.js34
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);
}
});
}