syphonall support for picker
authorScott Baker <smbaker@gmail.com>
Thu, 18 Dec 2014 00:29:59 +0000 (16:29 -0800)
committerScott Baker <smbaker@gmail.com>
Thu, 18 Dec 2014 00:29:59 +0000 (16:29 -0800)
planetstack/core/xoslib/static/js/xoslib/xosHelper.js
planetstack/core/xoslib/templates/xosAdmin.html

index fe975aa..6c0c2f3 100644 (file)
@@ -48,7 +48,19 @@ XOSRouter = Marionette.AppRouter.extend({
         },
     });\r
 
-
+Backbone.Syphon.InputReaders.register('select', function(el) {
+    // Modify syphon so that if a select has "syphonall" in the class, then
+    // the value of every option will be returned, regardless of whether of
+    // not it is selected.
+    if (el.hasClass("syphonall")) {
+        result = [];
+        _.each(el.find("option"), function(option) {
+            result.push($(option).val());
+        });
+        return result;
+    }
+    return el.val();
+});
 
 XOSApplication = Marionette.Application.extend({
     detailBoxId: "#detailBox",
@@ -474,6 +486,8 @@ XOSDetailView = Marionette.ItemView.extend({
                 var that = this;
                 var isNew = !this.model.id;
 
+                console.log(data);
+
                 this.$el.find(".help-inline").remove();
 
                 /* although model.validate() is called automatically by
index 92b5046..4ad198a 100644 (file)
             <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %><%= readOnly %>></td>\r
         <% } else if (inputType[fieldName] == "picker") { %>\r
             <% lookupFunc = makeIdToName(model.m2mFields[fieldName], "humanReadableName"); %>\r
-            <td><%= xosPickerTemplate({pickedItems: model.attributes[fieldName], unpickedItems: model.getChoices(fieldName,true), id: "picker_" + fieldName, detailView: detailView, lookupFunc: lookupFunc}) %></td>\r
+            <td><%= xosPickerTemplate({pickedItems: model.attributes[fieldName], unpickedItems: model.getChoices(fieldName,true), id: "picker_" + fieldName, fieldName: fieldName, detailView: detailView, lookupFunc: lookupFunc}) %></td>\r
         <% } else if (fieldName=="backend_status") { %>\r
             <td><%= xosBackendStatusTextTemplate.apply(this, args) %></td>\r
         <% } else { %>\r
     </div>\r
     <div class="picker_column">\r
     <div>Selected</div>\r
-    <select name="pickerto" class="select-picker-to" multiple size="5">\r
+    <select name=<%= fieldName %> class="select-picker-to syphonall" multiple size="5">\r
         <% _.each(pickedItems, function(item) { %>\r
            <option value="<%= item %>"><%= lookupFunc ? lookupFunc(item) : item %></option>
         <% }); %>\r