newsly 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/controllers/newsly/newsletters_controller.rb +5 -4
- data/app/controllers/newsly/templates_controller.rb +3 -5
- data/app/mailers/newsly/mailer.rb +2 -2
- data/app/models/newsly/newsletter.rb +4 -3
- data/app/models/newsly/template.rb +17 -4
- data/app/views/newsly/templates/index.html.erb +23 -4
- data/db/migrate/20111025072740_add_friendly_fields_to_templates.rb +6 -0
- data/lib/newsly/version.rb +1 -1
- data/public/javascripts/newsletters.js +21 -22
- data/public/javascripts/templates.js +13 -0
- data/public/mercury/javascripts/mercury.min.js +2 -1
- data/public/stylesheets/application.css +56 -11
- metadata +63 -20
- data/app/models/newsly/recipient.rb +0 -4
- data/db/migrate/20111006122345_create_newsly_recipients.rb +0 -9
@@ -5,10 +5,10 @@ module Newsly
|
|
5
5
|
respond_to :text, :only => :preview
|
6
6
|
|
7
7
|
|
8
|
-
before_filter :get_newsletter, :except => [:index]
|
8
|
+
before_filter :get_newsletter, :except => [:new, :index]
|
9
9
|
|
10
10
|
def index
|
11
|
-
@newsletters = Newsletter.all
|
11
|
+
@newsletters = Newsletter.order('created_at desc').all
|
12
12
|
end
|
13
13
|
|
14
14
|
def show
|
@@ -18,7 +18,8 @@ module Newsly
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def new
|
21
|
-
|
21
|
+
@newsletter = Newsly::Newsletter.create(:title => "Nyhetsbrevs rubrik", :body => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.", :sent => false)
|
22
|
+
redirect_to newsletter_url(@newsletter)
|
22
23
|
end
|
23
24
|
|
24
25
|
def update
|
@@ -64,7 +65,7 @@ module Newsly
|
|
64
65
|
|
65
66
|
protected
|
66
67
|
def get_newsletter
|
67
|
-
@newsletter =
|
68
|
+
@newsletter = Newsly::Newsletter.find(params[:id])
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
@@ -3,7 +3,8 @@ module Newsly
|
|
3
3
|
class TemplatesController < ApplicationController
|
4
4
|
|
5
5
|
def index
|
6
|
-
@templates = Newsly::Template.where(:draft => false)
|
6
|
+
@templates = Newsly::Template.where(:draft => false).order('friendly_name')
|
7
|
+
@template_types = Newsly::Template.all.map(&:template_type).uniq
|
7
8
|
end
|
8
9
|
|
9
10
|
def show
|
@@ -36,10 +37,7 @@ module Newsly
|
|
36
37
|
|
37
38
|
def publish
|
38
39
|
@draft = Newsly::Template.find(params[:id])
|
39
|
-
@
|
40
|
-
@original.subject = @draft.subject
|
41
|
-
@original.body = @draft.body
|
42
|
-
@original.save
|
40
|
+
@draft.publish
|
43
41
|
render :text => "Published"
|
44
42
|
end
|
45
43
|
|
@@ -12,7 +12,7 @@ module Newsly
|
|
12
12
|
self.build_mail(@template.id, to, @template_data, @extra_headers)
|
13
13
|
end
|
14
14
|
|
15
|
-
def build_mail(template_id, to, template_data = {}, extra_headers = {})
|
15
|
+
def build_mail(template_id, to, template_data = {}, extra_headers = {}, layout = "newsly/mailer")
|
16
16
|
headers = {}
|
17
17
|
tmpl = Newsly::Template.find(template_id)
|
18
18
|
headers[:to] = to
|
@@ -20,7 +20,7 @@ module Newsly
|
|
20
20
|
body = tmpl.render(template_data)
|
21
21
|
headers = headers.merge(extra_headers)
|
22
22
|
mail(headers) do |format|
|
23
|
-
format.html { render :inline => body, :layout =>
|
23
|
+
format.html { render :inline => body, :layout => layout }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -3,9 +3,10 @@ module Newsly
|
|
3
3
|
class Newsletter < ActiveRecord::Base
|
4
4
|
liquid_methods :title, :body
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
|
7
|
+
def render(options={})
|
8
|
+
Liquid::Template.parse(self.body).render options
|
9
|
+
end
|
9
10
|
|
10
11
|
def draft?
|
11
12
|
self.sent? || self.batch_sent? ? false : true
|
@@ -1,11 +1,24 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
module Newsly
|
3
3
|
class Template < ActiveRecord::Base
|
4
|
-
|
4
|
+
|
5
|
+
liquid_methods :subject, :body
|
6
|
+
|
7
|
+
validates_presence_of :subject
|
8
|
+
validates_presence_of :body
|
9
|
+
#validates_presence_of :parent_id, :if => :original
|
10
|
+
#validates original is never draft and
|
5
11
|
|
6
12
|
def render(options={})
|
7
|
-
|
13
|
+
Liquid::Template.parse(self.body).render options
|
14
|
+
end
|
15
|
+
|
16
|
+
def publish
|
17
|
+
original = Newsly::Template.find(self.parent_id)
|
18
|
+
original.subject = self.subject
|
19
|
+
original.body = self.body
|
20
|
+
original.save
|
8
21
|
end
|
9
|
-
|
10
|
-
|
22
|
+
|
23
|
+
end
|
11
24
|
end
|
@@ -1,15 +1,34 @@
|
|
1
1
|
<%= render :partial => "/newsly/navigation" %>
|
2
2
|
<div id="content">
|
3
3
|
<h2><%= t("Templates")%></h2>
|
4
|
-
<
|
4
|
+
<ul class="type_tabs">
|
5
|
+
<li class="title">Show type:</li>
|
6
|
+
<li class="active"><%= link_to "All", templates_url %></li>
|
7
|
+
<% @template_types.each do |type| %>
|
8
|
+
<li class="<%=type.nil? ? "notype" : type %>">
|
9
|
+
<% if type.nil? %>
|
10
|
+
<%= link_to "No Type", "#", :data => {:type => "notype"} %>
|
11
|
+
<% else %>
|
12
|
+
<%= link_to type, "#", :data => {:type => type}%>
|
13
|
+
<% end %>
|
14
|
+
</li>
|
15
|
+
<% end %>
|
16
|
+
</ul>
|
17
|
+
<table cellspacing="0" cellpadding="0" id="templates">
|
5
18
|
<tbody>
|
6
19
|
<% @templates.each do |template| %>
|
7
|
-
<tr>
|
8
|
-
<td class="title"
|
20
|
+
<tr class="<%= template.template_type.nil? ? "notype" : template.template_type%>">
|
21
|
+
<td class="title">
|
22
|
+
<%= link_to template.friendly_name || template.name, template, :class => "friendly_name" %>
|
23
|
+
<span class="type"><%=t(template.template_type)%></span>
|
24
|
+
<span class="desc">Lorem ipsum dolor sit amet conseqteur dolor amet.</span>
|
25
|
+
</td>
|
9
26
|
</tr>
|
10
27
|
<% end %>
|
11
28
|
</tbody>
|
12
29
|
</table>
|
13
30
|
</div>
|
14
31
|
<div id="sidebar">
|
15
|
-
</div>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<%= javascript_include_tag "templates" %>
|
data/lib/newsly/version.rb
CHANGED
@@ -14,7 +14,6 @@ jQuery(document).ready(function($) {
|
|
14
14
|
}
|
15
15
|
});
|
16
16
|
}
|
17
|
-
|
18
17
|
|
19
18
|
$('a#deliver_batch').click(function(e){
|
20
19
|
e.preventDefault();
|
@@ -30,7 +29,7 @@ jQuery(document).ready(function($) {
|
|
30
29
|
var batch_size = parseInt($('#batch_size').val());
|
31
30
|
if(answer == "BATCH"){
|
32
31
|
$.ajax({
|
33
|
-
url: url,
|
32
|
+
url: url,
|
34
33
|
type: 'POST',
|
35
34
|
data: {'_method': 'PUT', 'answer': answer, 'recipient_group': recipient_groups[0], 'batch_size': batch_size},
|
36
35
|
success: function(data){
|
@@ -39,23 +38,23 @@ jQuery(document).ready(function($) {
|
|
39
38
|
$('.groups').remove();
|
40
39
|
}
|
41
40
|
});
|
42
|
-
}
|
41
|
+
}
|
43
42
|
} else{
|
44
43
|
alert('You have to select 1 (one) group to send to!');
|
45
44
|
}
|
46
45
|
});
|
47
46
|
|
48
47
|
$('a#deliver').click(function(e){
|
49
|
-
|
48
|
+
e.preventDefault();
|
50
49
|
top.Mercury.trigger('action', {action: 'save'});
|
51
|
-
var url = $(this).attr('href');
|
50
|
+
var url = $(this).attr('href');
|
52
51
|
var recipient_groups = get_recipient_groups();
|
53
52
|
if(recipient_groups.length > 0){
|
54
53
|
var newsletter_id = $("#newsletter").attr('data-id');
|
55
54
|
var answer = prompt('Are you sure? Type "DELIVER"');
|
56
55
|
if(answer == "DELIVER"){
|
57
56
|
$.ajax({
|
58
|
-
url: url,
|
57
|
+
url: url,
|
59
58
|
type: 'POST',
|
60
59
|
data: {'_method': 'PUT', 'answer': answer, 'recipient_groups[]': recipient_groups},
|
61
60
|
success: function(data){
|
@@ -64,26 +63,26 @@ jQuery(document).ready(function($) {
|
|
64
63
|
$('.groups').remove();
|
65
64
|
}
|
66
65
|
});
|
67
|
-
}
|
66
|
+
}
|
68
67
|
} else{
|
69
68
|
alert('You have to select atleast one group to send to!');
|
70
69
|
}
|
71
70
|
});
|
72
71
|
|
73
72
|
$('a#send_test').click(function(e){
|
74
|
-
|
75
|
-
top.Mercury.trigger('action', {action: 'save'});
|
76
|
-
|
77
|
-
var url = $(this).attr('href');
|
73
|
+
e.preventDefault();
|
74
|
+
top.Mercury.trigger('action', {action: 'save'});
|
75
|
+
var newsletter_id = $("#newsletter").attr('data-id');
|
76
|
+
var url = $(this).attr('href');
|
78
77
|
var to = prompt('to what email?');
|
79
|
-
|
78
|
+
$.ajax({
|
80
79
|
url: url,
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
80
|
+
type: 'POST',
|
81
|
+
data: {'_method': "PUT", 'to': to},
|
82
|
+
success: function(data){
|
83
|
+
$("#flash").html(data).show().hide("fade", {}, 1000);
|
84
|
+
}
|
85
|
+
});
|
87
86
|
});
|
88
87
|
|
89
88
|
$('#groupform input[type=checkbox]').change(function(){
|
@@ -95,10 +94,10 @@ jQuery(document).ready(function($) {
|
|
95
94
|
}
|
96
95
|
set_batch_size();
|
97
96
|
} else {
|
98
|
-
$('.deliverbutton').hide();
|
97
|
+
$('.deliverbutton').hide();
|
99
98
|
}
|
100
99
|
});
|
101
|
-
};
|
100
|
+
};
|
102
101
|
|
103
102
|
});
|
104
103
|
|
@@ -127,6 +126,6 @@ var get_maximum_batch_size = function(){
|
|
127
126
|
max_size = max_size + parseInt($(this).attr('data-max'));
|
128
127
|
}
|
129
128
|
});
|
130
|
-
console.log('MAXIMUM SIZE '+ max_size);
|
131
|
-
return max_size;
|
129
|
+
console.log('MAXIMUM SIZE '+ max_size);
|
130
|
+
return max_size;
|
132
131
|
}
|
@@ -38,4 +38,17 @@ jQuery(document).ready(function($) {
|
|
38
38
|
});
|
39
39
|
});
|
40
40
|
|
41
|
+
$('.type_tabs a').click(function(e){
|
42
|
+
e.preventDefault();
|
43
|
+
template_type = ''+$(this).attr('data-type')+'';
|
44
|
+
$('.type_tabs li').removeClass('active');
|
45
|
+
$('table#templates tr').hide();
|
46
|
+
$(this).parent('li').addClass('active');
|
47
|
+
if(template_type != "undefined"){
|
48
|
+
$('table#templates tr.'+template_type+'').show();
|
49
|
+
} else {
|
50
|
+
$('table#templates tr').show();
|
51
|
+
}
|
52
|
+
});
|
53
|
+
|
41
54
|
});
|
@@ -146,7 +146,7 @@ window.MercurySetup = {
|
|
146
146
|
primary: {
|
147
147
|
save: ['Save', 'Save this page'],
|
148
148
|
//send_test: ['Send Test', 'Send Test Email'],
|
149
|
-
//publish: ['Publish', 'Publish'],
|
149
|
+
//publish: ['Publish', 'Publish'],
|
150
150
|
sep1: ' ',
|
151
151
|
undoredo: {
|
152
152
|
undo: ['Undo', 'Undo your last action'],
|
@@ -8761,6 +8761,7 @@ function defaultDisplay( nodeName ) {
|
|
8761
8761
|
iframe.frameBorder = iframe.width = iframe.height = 0;
|
8762
8762
|
}
|
8763
8763
|
|
8764
|
+
|
8764
8765
|
document.body.appendChild( iframe );
|
8765
8766
|
|
8766
8767
|
// Create a cacheable copy of the iframe document on first call.
|
@@ -69,17 +69,17 @@ a:hover {
|
|
69
69
|
}
|
70
70
|
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
72
|
+
table{
|
73
|
+
width: 100%;
|
74
|
+
}
|
75
|
+
td.draft, td.sent, td.batch{
|
76
|
+
width: 20px;
|
77
|
+
}
|
78
|
+
td.action{
|
79
|
+
width: 20px;
|
80
|
+
padding: 5px;
|
81
|
+
font-size: 11px;
|
82
|
+
}
|
83
83
|
td {
|
84
84
|
padding: 5px 10px;
|
85
85
|
text-align: left;
|
@@ -103,6 +103,22 @@ td.batch{
|
|
103
103
|
table tr:nth-child(2n+2){
|
104
104
|
background: #eee;
|
105
105
|
}
|
106
|
+
td.title span.desc{
|
107
|
+
float: left;
|
108
|
+
width: 100%;
|
109
|
+
font-size: 0.8em;
|
110
|
+
color: #555;
|
111
|
+
text-indent: 100px;
|
112
|
+
}
|
113
|
+
td.title span.type{
|
114
|
+
float: left;
|
115
|
+
font-size: 0.8em;
|
116
|
+
width: 100px;
|
117
|
+
}
|
118
|
+
td a.friendly_name{
|
119
|
+
font-weight: bold;
|
120
|
+
text-transform: capitalize;
|
121
|
+
}
|
106
122
|
#sidebar ul {
|
107
123
|
margin: 0;
|
108
124
|
padding: 0;
|
@@ -270,4 +286,33 @@ form{
|
|
270
286
|
}
|
271
287
|
li.deliverbutton{
|
272
288
|
display: none;
|
289
|
+
}
|
290
|
+
|
291
|
+
.type_tabs{
|
292
|
+
float: right;
|
293
|
+
margin-top: -40px;
|
294
|
+
font-size: 0.8em;
|
295
|
+
list-style: none;
|
296
|
+
}
|
297
|
+
.type_tabs li{
|
298
|
+
float: left;
|
299
|
+
}
|
300
|
+
.type_tabs li.title{
|
301
|
+
padding: 3px 5px;
|
302
|
+
}
|
303
|
+
.type_tabs li a {
|
304
|
+
padding: 3px 10px;
|
305
|
+
color: #000;
|
306
|
+
border-left: 1px solid #ccc;
|
307
|
+
float: left;
|
308
|
+
text-decoration: none;
|
309
|
+
}
|
310
|
+
.type_tabs li a:hover{
|
311
|
+
text-indent: 0px;
|
312
|
+
background: #eee;
|
313
|
+
color: #000;
|
314
|
+
}
|
315
|
+
.type_tabs li.active a{
|
316
|
+
font-weight: bold;
|
317
|
+
background: #ccc;
|
273
318
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newsly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-25 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2158529960 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2158529960
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: resque
|
28
|
-
requirement: &
|
28
|
+
requirement: &2158529540 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2158529540
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: liquid
|
39
|
-
requirement: &
|
39
|
+
requirement: &2158529080 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2158529080
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: jquery-rails
|
50
|
-
requirement: &
|
50
|
+
requirement: &2158528660 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2158528660
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: resque-async_deliver
|
61
|
-
requirement: &
|
61
|
+
requirement: &2158528240 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2158528240
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: sqlite3
|
72
|
-
requirement: &
|
72
|
+
requirement: &2158527820 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2158527820
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: letter_opener
|
83
|
-
requirement: &
|
83
|
+
requirement: &2158527400 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2158527400
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: unicorn
|
94
|
-
requirement: &
|
94
|
+
requirement: &2158526980 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,7 +99,51 @@ dependencies:
|
|
99
99
|
version: '0'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2158526980
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rspec-rails
|
105
|
+
requirement: &2158553180 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
type: :development
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *2158553180
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: capybara
|
116
|
+
requirement: &2158552760 !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *2158552760
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: capybara-webkit
|
127
|
+
requirement: &2158552340 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: *2158552340
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
name: database_cleaner
|
138
|
+
requirement: &2158551920 !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
type: :development
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: *2158551920
|
103
147
|
description: Manage mailer templates via wysiwyg and liquid. Uses mercury editor for
|
104
148
|
now. And send out newsletters.
|
105
149
|
email:
|
@@ -115,7 +159,6 @@ files:
|
|
115
159
|
- app/helpers/newsly/application_helper.rb
|
116
160
|
- app/mailers/newsly/mailer.rb
|
117
161
|
- app/models/newsly/newsletter.rb
|
118
|
-
- app/models/newsly/recipient.rb
|
119
162
|
- app/models/newsly/template.rb
|
120
163
|
- app/views/layouts/newsly/application.html.erb
|
121
164
|
- app/views/layouts/newsly/mailer.html.erb
|
@@ -136,7 +179,7 @@ files:
|
|
136
179
|
- db/migrate/20110927120903_add_text_body_fields.rb
|
137
180
|
- db/migrate/20110929142039_remove_text_body_fields.rb
|
138
181
|
- db/migrate/20111004085523_add_fields_to_newsletter.rb
|
139
|
-
- db/migrate/
|
182
|
+
- db/migrate/20111025072740_add_friendly_fields_to_templates.rb
|
140
183
|
- lib/newsly/engine.rb
|
141
184
|
- lib/newsly/version.rb
|
142
185
|
- lib/newsly.rb
|