{I" class:ETI"BundledAsset;FI"logical_path;TI",type_station/editables/entity_editor.js;FI" pathname;TI"U/workspace/app/assets/javascripts/type_station/editables/entity_editor.js.coffee;FI"content_type;TI"application/javascript;TI" mtime;Tl+¥*qWI" length;Ti÷+I" digest;TI"%e9d2e755796d111b8b440719e6125306;FI" source;TI"÷+(function() { var buildFields, checkValue, createEntityCall, deleteEntityCall, handleCreateEditEntity, handleDeleteEntity, handleMoveEntity, isArray, moveEntityCall, testValue; isArray = Array.isArray || function(arr) { return {}.toString.call(arr) === '[object Array]'; }; moveEntityCall = function(url, direction) { return $.ajax({ type: "PATCH", url: url, dataType: 'json', contentType: 'application/json', data: JSON.stringify({ direction: direction }), success: function(data, status) { return window.location.reload(); } }); }; deleteEntityCall = function(url) { return $.ajax({ type: "DELETE", url: url, dataType: 'json', contentType: 'application/json', data: {}, success: function(data, status) { return window.location.reload(); } }); }; createEntityCall = function(url, data) { return $.ajax({ type: "POST", url: url, dataType: 'json', contentType: 'application/json', data: JSON.stringify(data), success: function(data, status) { return window.location.reload(); } }); }; buildFields = function(editor) { var defaultValues, field, fields, i, input, inputs, j, label, len, len1, modelValues, o, select; fields = editor.data.fields; inputs = ''; defaultValues = {}; for (i = 0, len = fields.length; i < len; i++) { field = fields[i]; if (field["default"]) { defaultValues[field.name] = field["default"]; } } modelValues = editor.data.action === 'edit' ? editor.data.values : defaultValues; for (j = 0, len1 = fields.length; j < len1; j++) { field = fields[j]; if (field.label) { label = ""; input = (function() { var l, len2, len3, m, ref, ref1; switch (field.type) { case "text": return ""; case "textarea": return ""; case "html": return ""; case "select": select = ""; return select; case "multiple_select": select = ""; select += ""; return select; } })(); inputs += "
" + label + "
" + input + "
"; } else { inputs += ""; } } return inputs; }; handleDeleteEntity = function(editor) { return vex.dialog.confirm({ message: 'Are you sure you want to delete this?', callback: function(value) { if (value) { return deleteEntityCall(editor.data.url); } } }); }; handleMoveEntity = function(editor) { return moveEntityCall(editor.data.url, editor.data.options.direction); }; handleCreateEditEntity = function(editor) { var self, vex_message, vex_message_type; self = editor; vex.dialog.buttons.YES.text = self.data.action === 'edit' ? 'Save' : 'Create'; vex_message_type = self.data.type === 'TypeStation::Page' ? 'Page' : self.data.type; vex_message = (self.data.action === 'edit' ? 'Edit' : 'Create') + " " + (vex_message_type || 'Page'); return vex.dialog.open({ message: vex_message, input: buildFields(self), afterOpen: function($vexContent) { return $("select.multiple_select", $vexContent).chosen(); }, callback: function(data) { var check_value, contents, field, i, j, json, k, len, len1, model, v, val, valid; if (data) { if (self.data.action === 'edit') { model = self.ts.getModel(self.data.url); valid = true; for (k in data) { v = data[k]; field = self.fields[k]; if (valid) { switch (field.type) { case 'html': valid = true; break; default: if (isArray(v)) { for (i = 0, len = v.length; i < len; i++) { val = v[i]; check_value = val.replace(/[\'\"\=\|\@\{\}\.\,\:\;\/\&\?\!\(\)]/g, ''); valid = valid && checkValue(check_value, field); } } else { check_value = v.replace(/[\'\"\=\|\@\{\}\.\,\:\;\/\&\?\!\(\)]/g, ''); valid = checkValue(check_value, field); } } } else { break; } } if (valid) { return vex.dialog.confirm({ message: 'Are you sure you want to save changes?', callback: function(value) { if (value) { self.ts.save(); for (k in data) { v = data[k]; model.set(k, { field: k, value: v, type: self.fields[k].type }); } return model.save(function() { return window.location.reload(); }); } } }); } else { vex.dialog.buttons.YES.text = 'Ok'; return vex.dialog.alert({ message: 'Unable to save: Invalid inputs please check and try again', callback: function() { return self.$el.click(); } }); } } else { json = {}; contents = []; valid = true; for (k in data) { v = data[k]; field = self.fields[k]; if (valid) { switch (field.type) { case 'html': valid = true; break; default: if (isArray(v)) { for (j = 0, len1 = v.length; j < len1; j++) { val = v[j]; check_value = val.replace(/[\'\"\=\|\@\{\}\.\,\:\;\/\&\?\!\(\)]/g, ''); valid = valid && checkValue(check_value); } } else { check_value = v.replace(/[\'\"\=\|\@\{\}\.\,\:\;\/\&\?\!\(\)]/g, ''); valid = checkValue(check_value); } } } else { break; } contents.push({ field: k, value: v, type: field.type }); } json['contents'] = contents; if (self.data.parent_id) { json['parent_id'] = self.data.parent_id; } if (self.data.type) { json['_type'] = self.data.type; } if (valid) { if (self.ts.isChanged()) { vex.dialog.buttons.YES.text = 'Save'; return vex.dialog.confirm({ message: 'You have unsaved changes, Do you want to save them before creating this?', callback: function(value) { if (value) { self.ts.save(); return createEntityCall(self.data.create_url, json); } } }); } else { return createEntityCall(self.data.create_url, json); } } else { vex.dialog.buttons.YES.text = 'Ok'; return vex.dialog.alert({ message: 'Unable to save: Invalid inputs please check and try again', callback: function() { return self.$el.click(); } }); } } } } }); }; checkValue = function(value, field) { if (field.type === 'multiple_select') { return testValue(value); } else { if (value.length > 0) { if (value.length > 1) { return testValue(value); } } } }; testValue = function(value) { var error; try { return !$(value).is('*'); } catch (error) { return false; } }; this.TypeStation.EntityEditor = (function() { function EntityEditor(ts, $el, data1) { var field, i, len, ref; this.ts = ts; this.$el = $el; this.data = data1; vex.defaultOptions.className = 'vex-theme-os'; this.fields = {}; ref = this.data.fields; for (i = 0, len = ref.length; i < len; i++) { field = ref[i]; this.fields[field.name] = field; } } EntityEditor.prototype.enable = function() { var self; this.disable(); self = this; return this.$el.on('click', function() { switch (self.data.action) { case 'edit': case 'create': return handleCreateEditEntity(self); case 'move': return handleMoveEntity(self); case 'delete': return handleDeleteEntity(self); } }); }; EntityEditor.prototype.disable = function() { return this.$el.off('click'); }; return EntityEditor; })(); }).call(this); ;TI"required_assets_digest;TI"%fa9978e9339307b898a6a099c8942341;FI" _version;TI"%64e62ddc273c2f5847f30d698ca14b67;F