Saving dialog, storing change description
[fnpeditor.git] / modules / data / saveDialog.js
diff --git a/modules/data/saveDialog.js b/modules/data/saveDialog.js
new file mode 100644 (file)
index 0000000..a772ba6
--- /dev/null
@@ -0,0 +1,54 @@
+define([\r
+'libs/text!./saveDialog.html',\r
+'libs/underscore-min',\r
+'libs/backbone-min',\r
+'libs/jquery-1.9.1.min'\r
+], function(saveDialogTemplate, _, Backbone, $) {\r
+\r
+    var DialogView = Backbone.View.extend({\r
+        template: _.template(saveDialogTemplate),\r
+        events: {\r
+            'click .save-btn': 'onSave',\r
+            'click .cancel-btn': 'close',\r
+            'click .close': 'close'\r
+        },\r
+        initialize: function() {\r
+            _.bindAll(this);\r
+            this.actionsDisabled = false;\r
+        },\r
+        show: function() {           \r
+            this.setElement(this.template());\r
+            this.$el.modal({backdrop: 'static'});\r
+            this.$el.modal('show');\r
+\r
+        },\r
+        onSave: function(e) {\r
+            e.preventDefault();\r
+            var view = this;\r
+            this.trigger('save', {\r
+                data: {description: view.$el.find('textarea').val()},\r
+                success: function() { view.actionsDisabled = false; view.close(); },\r
+                error: function() { view.actionsDisabled = false; view.close(); },\r
+            })\r
+        },\r
+        close: function(e) {\r
+            if(e)\r
+                e.preventDefault();\r
+            if(!this.actionsDisabled) {\r
+                this.$el.modal('hide');\r
+                this.$el.remove();\r
+            }\r
+        },\r
+        toggleButtons: function(toggle) {\r
+            this.$('.btn, button').toggleClass('disabled', !toggle);\r
+            this.actionsDisabled = !toggle;\r
+        }\r
+    });\r
+\r
+    return {\r
+        create: function() {\r
+            return new DialogView();\r
+        }\r
+    }\r
+\r
+});
\ No newline at end of file