caboose-cms 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/caboose/model/bound_image.js +22 -7
- data/app/assets/javascripts/caboose/model/bound_select.js +1 -3
- data/app/assets/javascripts/caboose/model/model_binder.js +3 -19
- data/app/views/caboose/login/index.html.erb +6 -6
- data/app/views/caboose/users/edit.html.erb +31 -60
- data/lib/caboose/version.rb +1 -1
- metadata +1 -1
@@ -15,6 +15,9 @@ BoundImage = BoundControl.extend({
|
|
15
15
|
this[thing] = params[thing];
|
16
16
|
|
17
17
|
this.el = this.el ? this.el : this.model.name.toLowerCase() + '_' + this.model.id + '_' + this.attribute.name;
|
18
|
+
|
19
|
+
if (!this.attribute.update_url)
|
20
|
+
this.attribute.update_url = this.model.update_url;
|
18
21
|
|
19
22
|
var this2 = this;
|
20
23
|
$('#'+this.el).wrap($('<div/>').attr('id', this.el + '_container').css('position', 'relative'));
|
@@ -37,7 +40,9 @@ BoundImage = BoundControl.extend({
|
|
37
40
|
$('#'+this2.el+'_iframe').on('load', function() { this2.post_upload(); });
|
38
41
|
})
|
39
42
|
.append($('<input/>').attr('type', 'hidden').attr('name', 'authenticity_token').val(this.binder.authenticity_token))
|
40
|
-
.append($('<input/>').attr('type', 'button').val('Update').click(function() {
|
43
|
+
.append($('<input/>').attr('type', 'button').val('Update ' + this.attribute.nice_name).click(function() {
|
44
|
+
$('#'+this2.el+'_container input[type="file"]').click();
|
45
|
+
}))
|
41
46
|
.append($('<input/>')
|
42
47
|
.attr('type', 'file')
|
43
48
|
.attr('name', this.attribute.name)
|
@@ -54,6 +59,9 @@ BoundImage = BoundControl.extend({
|
|
54
59
|
.css('width', 0)
|
55
60
|
.css('height', 0)
|
56
61
|
.css('border', 0)
|
62
|
+
//.css('width', '100%')
|
63
|
+
//.css('height', 600)
|
64
|
+
//.css('background', '#fff')
|
57
65
|
);
|
58
66
|
$('#'+this.el+'_container').append($('<br/>')
|
59
67
|
.css('clear', 'both')
|
@@ -64,15 +72,22 @@ BoundImage = BoundControl.extend({
|
|
64
72
|
$('#'+this.el+'_message').empty();
|
65
73
|
|
66
74
|
var str = frames[this.el+'_iframe'].document.documentElement.innerHTML;
|
67
|
-
str = str.replace(
|
68
|
-
str = str.
|
69
|
-
str = str.replace(/<head>.*?<\/head>(.*?)/, '$1');
|
75
|
+
str = str.replace(/.*?{(.*?)/, '{$1');
|
76
|
+
str = str.substr(0, str.lastIndexOf('}')+1);
|
70
77
|
|
71
|
-
var resp = $.parseJSON(str);
|
78
|
+
var resp = $.parseJSON(str);
|
79
|
+
if (resp.success)
|
80
|
+
{
|
81
|
+
if (resp.attributes && resp.attributes[this.attribute.name])
|
82
|
+
for (var thing in resp.attributes[this.attribute.name])
|
83
|
+
this.attribute[thing] = resp.attributes[this.attribute.name][thing];
|
84
|
+
this.attribute.value_clean = this.attribute.value;
|
85
|
+
}
|
86
|
+
|
72
87
|
if (resp.error)
|
73
88
|
this.error(resp.error);
|
74
|
-
else
|
75
|
-
$('#'+this.el+'_container img').attr('src',
|
89
|
+
else
|
90
|
+
$('#'+this.el+'_container img').attr('src', this.attribute.value);
|
76
91
|
},
|
77
92
|
|
78
93
|
error: function(str) {
|
@@ -73,8 +73,7 @@ BoundSelect = BoundControl.extend({
|
|
73
73
|
},
|
74
74
|
|
75
75
|
edit: function() {
|
76
|
-
|
77
|
-
this.binder.active_control = this;
|
76
|
+
|
78
77
|
},
|
79
78
|
|
80
79
|
save: function() {
|
@@ -85,7 +84,6 @@ BoundSelect = BoundControl.extend({
|
|
85
84
|
if (resp.error) this2.error(resp.error);
|
86
85
|
else
|
87
86
|
{
|
88
|
-
this2.binder.active_control = this2;
|
89
87
|
if (this2.binder.success)
|
90
88
|
this2.binder.success(this2);
|
91
89
|
this2.view();
|
@@ -4,7 +4,7 @@ var ModelBinder = function(params) { this.init(params); };
|
|
4
4
|
ModelBinder.prototype = {
|
5
5
|
model: false,
|
6
6
|
controls: [],
|
7
|
-
|
7
|
+
on_load: false,
|
8
8
|
success: false,
|
9
9
|
authenticity_token: false,
|
10
10
|
|
@@ -42,23 +42,7 @@ ModelBinder.prototype = {
|
|
42
42
|
this2.controls.push();
|
43
43
|
});
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
// //if (e.keyCode == 13) this2.save_active(); // Enter
|
48
|
-
//});
|
45
|
+
if (this.on_load)
|
46
|
+
this.on_load();
|
49
47
|
},
|
50
|
-
|
51
|
-
//cancel_active: function() {
|
52
|
-
// if (!this.active_control)
|
53
|
-
// return;
|
54
|
-
// this.active_control.cancel();
|
55
|
-
// this.active_control = false;
|
56
|
-
//},
|
57
|
-
|
58
|
-
//save_active: function() {
|
59
|
-
// if (!this.active_control)
|
60
|
-
// return;
|
61
|
-
// this.active_control.save();
|
62
|
-
// this.active_control = false;
|
63
|
-
//},
|
64
48
|
};
|
@@ -25,12 +25,12 @@ function login()
|
|
25
25
|
type: 'post',
|
26
26
|
data: $('#login_form').serialize(),
|
27
27
|
success: function(resp) {
|
28
|
-
if (resp.error)
|
29
|
-
|
30
|
-
else if (resp.redirect != false)
|
31
|
-
|
32
|
-
else
|
33
|
-
|
28
|
+
//if (resp.error)
|
29
|
+
// modal.autosize("<p class='note error'>" + resp.error + "</p>");
|
30
|
+
//else if (resp.redirect != false)
|
31
|
+
// <%= @modal ? "" : "parent." %>window.location = resp.redirect;
|
32
|
+
//else
|
33
|
+
// parent.location.reload(true);
|
34
34
|
},
|
35
35
|
error: function() {
|
36
36
|
modal.autosize("<p class='note error'>Error</p>");
|
@@ -4,10 +4,10 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
|
|
4
4
|
%>
|
5
5
|
<h1>Edit User</h1>
|
6
6
|
<p id='gravatar'><img src='<%= pic %>' /><a href='http://gravatar.com'>Update on gravatar</a></p>
|
7
|
-
<p><
|
8
|
-
<p><
|
9
|
-
<p><
|
10
|
-
<p><
|
7
|
+
<p><div id='user_<%= @edituser.id %>_first_name' ></div></p>
|
8
|
+
<p><div id='user_<%= @edituser.id %>_last_name' ></div></p>
|
9
|
+
<p><div id='user_<%= @edituser.id %>_username' ></div></p>
|
10
|
+
<p><div id='user_<%= @edituser.id %>_email' ></div></p>
|
11
11
|
<div id='message'></div>
|
12
12
|
<div id='controls'>
|
13
13
|
<input type='button' value='Back' onclick="window.location='/admin/users';" />
|
@@ -15,6 +15,32 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
|
|
15
15
|
<input type='button' value='Delete User' onclick="deleteUser();" />
|
16
16
|
</div>
|
17
17
|
|
18
|
+
<% content_for :caboose_js do %>
|
19
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
20
|
+
<script type="text/javascript">
|
21
|
+
var modal = false;
|
22
|
+
$(window).load(function() {
|
23
|
+
modal = new CabooseModal(500);
|
24
|
+
});
|
25
|
+
|
26
|
+
$(document).ready(function() {
|
27
|
+
new ModelBinder({
|
28
|
+
name: 'User',
|
29
|
+
id: <%= @edituser.id %>,
|
30
|
+
update_url: '/admin/users/<%= @edituser.id %>',
|
31
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
32
|
+
attributes: [
|
33
|
+
{ name: 'first_name' , nice_name: 'First name', type: 'text', value: <%= raw Caboose.json(@edituser.first_name) %>, width: 280 },
|
34
|
+
{ name: 'last_name' , nice_name: 'Last name' , type: 'text', value: <%= raw Caboose.json(@edituser.last_name) %>, width: 280 },
|
35
|
+
{ name: 'username' , nice_name: 'Username' , type: 'text', value: <%= raw Caboose.json(@edituser.username) %>, width: 280 },
|
36
|
+
{ name: 'email' , nice_name: 'Email' , type: 'text', value: <%= raw Caboose.json(@edituser.email) %>, width: 280 }
|
37
|
+
],
|
38
|
+
on_load: function() { modal.autosize(); }
|
39
|
+
});
|
40
|
+
});
|
41
|
+
</script>
|
42
|
+
<% end %>
|
43
|
+
|
18
44
|
<% content_for :caboose_css do %>
|
19
45
|
<style type='text/css'>
|
20
46
|
#gravatar {
|
@@ -28,59 +54,4 @@ pic = "http://gravatar.com/avatar/#{gravatar_id}.png?s=150" #&d=/assets/caboose/
|
|
28
54
|
border: #fff 2px solid;
|
29
55
|
}
|
30
56
|
</style>
|
31
|
-
<% end %>
|
32
|
-
|
33
|
-
<% content_for :caboose_js do %>
|
34
|
-
<%= javascript_include_tag "caboose/model_binder.js" %>
|
35
|
-
<script type="text/javascript">
|
36
|
-
|
37
|
-
var model = false;
|
38
|
-
$(document).ready(function() {
|
39
|
-
|
40
|
-
m = new ModelBinder({
|
41
|
-
name: 'User',
|
42
|
-
id: <%= @edituser.id %>,
|
43
|
-
update_url: '/admin/users/<%= @edituser.id %>',
|
44
|
-
attributes: ['first_name', 'last_name', 'username', 'email']
|
45
|
-
});
|
46
|
-
|
47
|
-
modal = new CabooseModal(500);
|
48
|
-
});
|
49
|
-
|
50
|
-
// var user = new Model({
|
51
|
-
// form: 'Model.Form.User',
|
52
|
-
// finished_loading: function() {
|
53
|
-
// modal = new CabooseModal(500);
|
54
|
-
// },
|
55
|
-
// name: 'User',
|
56
|
-
// id: <%= @edituser.id %>,
|
57
|
-
// listing_url: 'get /admin/users',
|
58
|
-
// update_url: 'put /admin/users/<%= @edituser.id %>',
|
59
|
-
// delete_url: 'delete /admin/users/<%= @edituser.id %>',
|
60
|
-
// attributes: [
|
61
|
-
// { name: 'first_name' , type: 'text', value: "<%= @edituser.first_name %>", show_reminder: false },
|
62
|
-
// { name: 'last_name' , type: 'text', value: "<%= @edituser.last_name %>", show_reminder: false },
|
63
|
-
// { name: 'username' , type: 'text', value: "<%= @edituser.username %>", show_reminder: false },
|
64
|
-
// { name: 'email' , type: 'text', value: "<%= @edituser.email %>", show_reminder: false },
|
65
|
-
// { name: 'password' , type: 'password' },
|
66
|
-
// {
|
67
|
-
// name: 'roles',
|
68
|
-
// type: 'checkbox-multiple',
|
69
|
-
// value: <%= @roles.collect{|r| r.id}.to_json %>,
|
70
|
-
// text: "<%= @roles.collect{|r| r.name}.join(', ') %>",
|
71
|
-
// empty_text: '[No roles]',
|
72
|
-
// multiple: true,
|
73
|
-
// loading_message: 'Getting roles...',
|
74
|
-
// options_url: '/admin/roles/options'
|
75
|
-
// },
|
76
|
-
// {
|
77
|
-
// name: 'pic',
|
78
|
-
// type: 'image',
|
79
|
-
// value: '',
|
80
|
-
// update_url: '/admin/users/<%= @edituser.id %>/update-pic'
|
81
|
-
// }
|
82
|
-
// ]
|
83
|
-
// });
|
84
|
-
|
85
|
-
</script>
|
86
|
-
<% end %>
|
57
|
+
<% end %>
|
data/lib/caboose/version.rb
CHANGED