trusty-cms 7.0.28 → 7.0.30
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +15 -1
- data/INSTALL.md +21 -3
- data/README.md +0 -1
- data/app/assets/stylesheets/admin/modules/_buttons.scss +4 -1
- data/app/assets/stylesheets/admin/partials/_forms.scss +4 -0
- data/app/controllers/admin/security_controller.rb +78 -0
- data/app/controllers/admin/sessions_controller.rb +43 -0
- data/app/controllers/admin/two_factor_controller.rb +42 -0
- data/app/controllers/admin/users_controller.rb +9 -0
- data/app/controllers/application_controller.rb +7 -0
- data/app/models/standard_tags.rb +0 -16
- data/app/models/trusty_cms/config.rb +0 -4
- data/app/models/user.rb +1 -1
- data/app/views/admin/configuration/edit.html.haml +0 -7
- data/app/views/admin/configuration/show.html.haml +21 -12
- data/app/views/admin/preferences/edit.html.haml +1 -4
- data/app/views/admin/security/edit.html.haml +57 -0
- data/app/views/{devise → admin}/sessions/new.html.haml +5 -5
- data/app/views/admin/two_factor/show.html.haml +14 -0
- data/app/views/admin/users/_form.html.haml +0 -3
- data/app/views/admin/users/index.html.haml +22 -1
- data/app/views/devise/passwords/edit.html.haml +2 -4
- data/config/initializers/active_record_encryption.rb +5 -0
- data/config/initializers/devise.rb +4 -0
- data/config/initializers/trusty_cms_config.rb +0 -1
- data/config/locales/en.yml +30 -5
- data/config/routes.rb +9 -6
- data/db/migrate/20250502162215_add_devise_two_factor_to_admins.rb +7 -0
- data/lib/generators/trusty_cms/templates/application.rb.erb +1 -1
- data/lib/trusty_cms/admin_ui.rb +12 -7
- data/lib/trusty_cms/engine.rb +0 -3
- data/lib/trusty_cms/version.rb +1 -1
- data/package.json +1 -1
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/config/initializers/trusty_cms_config.rb +0 -1
- data/trusty_cms.gemspec +2 -0
- data/yarn.lock +4 -4
- metadata +38 -18
- data/app/assets/javascripts/rad_social/jquery.validate.min.js +0 -4
- data/app/assets/javascripts/rad_social/rad_ajax_form.js +0 -82
- data/app/assets/javascripts/rad_social/rad_email.js +0 -5
- data/app/assets/javascripts/rad_social/rad_email_form.js +0 -80
- data/app/assets/javascripts/rad_social/rad_email_validator.js +0 -47
- data/app/assets/javascripts/rad_social/rad_widget.js +0 -20
- data/app/assets/stylesheets/rad_social/rad_screen.scss +0 -141
- data/app/controllers/social_mailer_controller.rb +0 -26
- data/app/helpers/rad_social_helper.rb +0 -20
- data/app/mailers/rad_social_mailer.rb +0 -25
- data/app/views/admin/users/_password_fields.html.haml +0 -18
- data/app/views/rad_social_mailer/social_mail.html.haml +0 -5
- data/app/views/rad_social_mailer/social_mail_form.html.haml +0 -39
- data/app/views/widget/_email_form.html.haml +0 -20
- data/app/views/widget/_horizontal_widget.html.haml +0 -16
@@ -1,80 +0,0 @@
|
|
1
|
-
$(document).ready(function() {
|
2
|
-
|
3
|
-
var radModal;
|
4
|
-
|
5
|
-
function centeredPopup(url,w,h){
|
6
|
-
var popupWindow = null;
|
7
|
-
LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
|
8
|
-
TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
|
9
|
-
settings =
|
10
|
-
'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition;
|
11
|
-
popupWindow = window.open(url,"Share",settings);
|
12
|
-
}
|
13
|
-
|
14
|
-
$(".rad-window-close").click(function(event) {
|
15
|
-
event.preventDefault();
|
16
|
-
$("#rad-social-email-form").fadeToggle('slow');
|
17
|
-
});
|
18
|
-
|
19
|
-
$(".rad-popup-window").click(function(event){
|
20
|
-
event.preventDefault();
|
21
|
-
var url = $(this).attr("href");
|
22
|
-
centeredPopup(url, 625, 430)
|
23
|
-
|
24
|
-
});
|
25
|
-
|
26
|
-
var form = $("#rad-social-email-form");
|
27
|
-
|
28
|
-
validator = form.validate({
|
29
|
-
submitHandler: function(form) {
|
30
|
-
var button = $('#rad_email_submit');
|
31
|
-
button.attr('disabled', true);
|
32
|
-
button.removeClass('primary-button').addClass('disabled-button');
|
33
|
-
form.submit();
|
34
|
-
clear_form();
|
35
|
-
}
|
36
|
-
});
|
37
|
-
|
38
|
-
|
39
|
-
var radEmailValidator = new RadEmailValidator(form);
|
40
|
-
radEmailValidator.addRules();
|
41
|
-
|
42
|
-
form.find('#rad_email_submit').click(function(e) {
|
43
|
-
return new RadAjaxForm(form).submit(OnSuccess, OnError, OnComplete);
|
44
|
-
});
|
45
|
-
|
46
|
-
function OnSuccess(data) {
|
47
|
-
$("#rad-social-email-form").addClass('hidden');
|
48
|
-
$("#rad-confirmation").removeClass('hidden');
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
function OnError(xhr) {
|
53
|
-
processFailure(xhr);
|
54
|
-
}
|
55
|
-
|
56
|
-
function OnComplete() {
|
57
|
-
//$('#express_contact_form').find('.continue').attr('disabled', false);
|
58
|
-
//$('#express_contact_form').find(".loader").removeClass('ajax-loader');
|
59
|
-
}
|
60
|
-
|
61
|
-
function clear_form(){
|
62
|
-
$('#rs-from').val('');
|
63
|
-
$('#rs-from_name').val('');
|
64
|
-
$('#rs-to').val('');
|
65
|
-
$('#rs-message').val($('#rs-base-message').val());
|
66
|
-
}
|
67
|
-
|
68
|
-
function processFailure(xhr) {
|
69
|
-
var error_msg = xhr.getResponseHeader("ErrorMsg");
|
70
|
-
displayErrorMessage(error_msg);
|
71
|
-
}
|
72
|
-
|
73
|
-
function displayErrorMessage(msg) {
|
74
|
-
var error_msg_div = $('.rad-email-error');
|
75
|
-
error_msg_div.text(msg);
|
76
|
-
error_msg_div.show();
|
77
|
-
}
|
78
|
-
|
79
|
-
|
80
|
-
});
|
@@ -1,47 +0,0 @@
|
|
1
|
-
function RadEmailValidator(parentElement) {
|
2
|
-
var rules = {
|
3
|
-
"rs-from": {
|
4
|
-
required: true,
|
5
|
-
email: true,
|
6
|
-
messages: {
|
7
|
-
required: "From email is required."
|
8
|
-
}
|
9
|
-
},
|
10
|
-
"rs-from_name": {
|
11
|
-
required: true,
|
12
|
-
messages: {
|
13
|
-
required: "From name is required."
|
14
|
-
}
|
15
|
-
},
|
16
|
-
"rs-to": {
|
17
|
-
required: true,
|
18
|
-
email: true,
|
19
|
-
messages: {
|
20
|
-
required: "To email is required"
|
21
|
-
}
|
22
|
-
},
|
23
|
-
"rs-message": {
|
24
|
-
required: true,
|
25
|
-
messages: {
|
26
|
-
required: "Email message is required."
|
27
|
-
}
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
this.addRules = function() {
|
32
|
-
for (var key in rules) {
|
33
|
-
$(parentElement).find("[id$=" + key + "]").rules("add", rules[key]);
|
34
|
-
}
|
35
|
-
};
|
36
|
-
|
37
|
-
this.removeRules = function() {
|
38
|
-
for (var key in rules) {
|
39
|
-
$(parentElement).find("[id$=" + key + "]").rules("remove");
|
40
|
-
}
|
41
|
-
};
|
42
|
-
|
43
|
-
function elementKeyFor(key) {
|
44
|
-
return "[id$=" + parentElement.attr('id') + '_' + key + ']';
|
45
|
-
}
|
46
|
-
|
47
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
$(document).ready(function() {
|
2
|
-
|
3
|
-
function centeredPopup(url,w,h){
|
4
|
-
var popupWindow = null;
|
5
|
-
LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
|
6
|
-
TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
|
7
|
-
settings =
|
8
|
-
'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition;
|
9
|
-
popupWindow = window.open(url,"Share",settings);
|
10
|
-
}
|
11
|
-
|
12
|
-
$(".rad-popup-window").click(function(event){
|
13
|
-
event.preventDefault();
|
14
|
-
var url = $(this).attr("href");
|
15
|
-
centeredPopup(url, 625, 430)
|
16
|
-
|
17
|
-
});
|
18
|
-
|
19
|
-
|
20
|
-
});
|
@@ -1,141 +0,0 @@
|
|
1
|
-
.rad-icon {
|
2
|
-
float: left;
|
3
|
-
padding-right: 3px;
|
4
|
-
|
5
|
-
.rad-facebook {
|
6
|
-
background-image: url("rad_social/facebook.png");
|
7
|
-
}
|
8
|
-
|
9
|
-
.rad-twitter {
|
10
|
-
background-image: url("rad_social/twitter.png");
|
11
|
-
}
|
12
|
-
|
13
|
-
.rad-email {
|
14
|
-
background-image: url("rad_social/email.png");
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
.rad-email-form {
|
19
|
-
padding: 15px;
|
20
|
-
position: relative;
|
21
|
-
}
|
22
|
-
|
23
|
-
.hidden {
|
24
|
-
display: none;
|
25
|
-
}
|
26
|
-
|
27
|
-
.rad-dialog-titlebar {
|
28
|
-
background: #EDEDED;
|
29
|
-
height: 2em;
|
30
|
-
padding: .5em .3em .3em 1em;
|
31
|
-
}
|
32
|
-
|
33
|
-
.rad-dialog-title {
|
34
|
-
float: left;
|
35
|
-
font-weight: bold;
|
36
|
-
margin: .3em 0 .2em;
|
37
|
-
}
|
38
|
-
|
39
|
-
#rad-social-email-form .form-row .form-fields {
|
40
|
-
float: left;
|
41
|
-
width: 60%;
|
42
|
-
}
|
43
|
-
|
44
|
-
#rad-social-email-form .form-row .input-textbox {
|
45
|
-
display: block;
|
46
|
-
font-size: 12px;
|
47
|
-
}
|
48
|
-
|
49
|
-
|
50
|
-
.rad-email-form #rad_email_submit {
|
51
|
-
float: right;
|
52
|
-
}
|
53
|
-
|
54
|
-
.rad-email-form input.std_input {
|
55
|
-
margin-bottom: 10px;
|
56
|
-
}
|
57
|
-
|
58
|
-
.rad-email-form select {
|
59
|
-
background-color: #fff;
|
60
|
-
border: 1px solid #ccc;
|
61
|
-
color: #6e6e6e;
|
62
|
-
font: 14px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
|
63
|
-
margin-bottom: 10px;
|
64
|
-
}
|
65
|
-
|
66
|
-
#rad-social-email-form .form-label {
|
67
|
-
display: block;
|
68
|
-
float: left;
|
69
|
-
padding: 5px 10px 0 0;
|
70
|
-
text-align: left;
|
71
|
-
width: 15%;
|
72
|
-
}
|
73
|
-
|
74
|
-
#rad-social-email-form .form-row {
|
75
|
-
clear: both;
|
76
|
-
overflow: auto;
|
77
|
-
padding: 5px;
|
78
|
-
}
|
79
|
-
|
80
|
-
|
81
|
-
.rad-email-form input.std_input,
|
82
|
-
.rad-email-form textarea {
|
83
|
-
border: 1px solid #ccc;
|
84
|
-
color: #6e6e6e;
|
85
|
-
font: 15px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
|
86
|
-
padding: 5px;
|
87
|
-
width: 97%;
|
88
|
-
}
|
89
|
-
|
90
|
-
.rad-email-form table {
|
91
|
-
width: 100%;
|
92
|
-
}
|
93
|
-
|
94
|
-
.rad-email-form table input.std_input {
|
95
|
-
width: 93%;
|
96
|
-
}
|
97
|
-
|
98
|
-
.rad-email-form table.three-col input.std_input {
|
99
|
-
width: 90%;
|
100
|
-
}
|
101
|
-
|
102
|
-
.rad-email-form input.form_but {
|
103
|
-
background-color: #93ba31;
|
104
|
-
border: 3px solid #afdd39;
|
105
|
-
color: #fff;
|
106
|
-
font: bold 15px "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
|
107
|
-
margin-top: 10px;
|
108
|
-
padding: 5px 10px;
|
109
|
-
}
|
110
|
-
|
111
|
-
input.error {
|
112
|
-
border: 1px solid #CD0A0A !important;
|
113
|
-
color: #CD0A0A !important;
|
114
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
115
|
-
}
|
116
|
-
|
117
|
-
.rad-email-error, label.error {
|
118
|
-
color: #CD0A0A !important;
|
119
|
-
display: block;
|
120
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
121
|
-
padding: 5px 0px !important;
|
122
|
-
}
|
123
|
-
|
124
|
-
#rad-confirmation {
|
125
|
-
font-weight: bold;
|
126
|
-
padding-top: 25px;
|
127
|
-
text-align: center;
|
128
|
-
}
|
129
|
-
|
130
|
-
body .ajax-loader {
|
131
|
-
background: transparent none no-repeat 50% 50%;
|
132
|
-
background-image: url("ajax-loader.gif");
|
133
|
-
height: 35px;
|
134
|
-
}
|
135
|
-
|
136
|
-
body #rad-social-email-form .primary-button {
|
137
|
-
background: transparent none repeat-x scroll 0 0;
|
138
|
-
background-image: url("bg_primary-btn.png"); /* sprite-ref: cd-backgrounds-sprite; sprite-alignment: repeat; */
|
139
|
-
border: 1px solid #924900;
|
140
|
-
color: white !important;
|
141
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
class SocialMailerController < ApplicationController
|
2
|
-
include ShareLayouts::Controllers::ActionController
|
3
|
-
trusty_layout 'default', { only: :create_social_mail }
|
4
|
-
# no_login_required
|
5
|
-
skip_before_action :authenticate_user!
|
6
|
-
|
7
|
-
def create_social_mail
|
8
|
-
mailer_options = {
|
9
|
-
to: params[:to],
|
10
|
-
from: params[:from],
|
11
|
-
from_name: params[:from_name],
|
12
|
-
message: params[:message],
|
13
|
-
subject: params[:subject],
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
def social_mail_form
|
18
|
-
render template: 'rad_social_mailer/social_mail_form',
|
19
|
-
layout: false,
|
20
|
-
locals: {
|
21
|
-
email_message: params[:email_message],
|
22
|
-
email_subject: params[:email_subject],
|
23
|
-
email_action_url: params[:email_action_url],
|
24
|
-
}
|
25
|
-
end
|
26
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module RadSocialHelper
|
2
|
-
def rad_test_method
|
3
|
-
'SURPRISE SURPRISE SURPRISE'
|
4
|
-
end
|
5
|
-
|
6
|
-
def rad_share_widget(options)
|
7
|
-
url = options[:url].nil? ? request.url : options[:url]
|
8
|
-
message = options[:message].nil? ? "Check out #{options[:title]}." : options[:message]
|
9
|
-
email_subject = options[:email_subject].nil? ? options[:title] : options[:email_subject]
|
10
|
-
email_message = options[:email_message].nil? ? "I thought you might be interested in this: #{url}" : "#{options[:email_message]} #{url}"
|
11
|
-
email_action_url = options[:email_action_url].nil? ? '/rad_social/mail' : options[:email_action_url]
|
12
|
-
|
13
|
-
render partial: 'widget/horizontal_widget',
|
14
|
-
locals: { url: url,
|
15
|
-
message: message,
|
16
|
-
email_subject: email_subject,
|
17
|
-
email_message: email_message,
|
18
|
-
email_action_url: email_action_url }
|
19
|
-
end
|
20
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'roadie-rails'
|
2
|
-
|
3
|
-
class RadSocialMailer < ApplicationMailer
|
4
|
-
include Roadie::Rails::Automatic
|
5
|
-
|
6
|
-
def social_mail(options)
|
7
|
-
from_address = Mail::Address.new options[:from] # ex: "john@example.com"
|
8
|
-
from_address.display_name = options[:from_name] # ex: "John Doe"
|
9
|
-
|
10
|
-
@from_name = from_address.display_name
|
11
|
-
@from_email = from_address
|
12
|
-
@message = options[:message]
|
13
|
-
@actual_from = ENV.fetch('RAD_SOCIAL_FROM_EMAIL')
|
14
|
-
@actual_from = from_address if @actual_from.nil?
|
15
|
-
|
16
|
-
mail({
|
17
|
-
to: options[:to],
|
18
|
-
from: @actual_from,
|
19
|
-
reply_to: @from_email,
|
20
|
-
subject: options[:subject],
|
21
|
-
text: @message,
|
22
|
-
content_type: 'text/html',
|
23
|
-
})
|
24
|
-
end
|
25
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
%fieldset#display_password{:style=> (@user.new_record? or !@user.valid?) ? 'display: none' : nil}
|
2
|
-
%label= t('password')
|
3
|
-
%span.value
|
4
|
-
•••••
|
5
|
-
%a.button{:href=>'#', :onclick=>"$('#display_password').hide(); $('#change_password').show()"}= t('change')
|
6
|
-
%fieldset#change_password{:style=> (!@user.new_record? && @user.valid?) ? 'display: none' : nil}
|
7
|
-
%p
|
8
|
-
= f.label :password, t('new_password')
|
9
|
-
= f.password_field 'password', :value => '', :maxlength => 40, :autocomplete => 'new-password'
|
10
|
-
%p
|
11
|
-
= f.label :password_confirmation, t('password_confirmation')
|
12
|
-
= f.password_field 'password_confirmation', :value => '', :maxlength => 40, :autocomplete => 'new-password'
|
13
|
-
- unless @user.new_record?
|
14
|
-
%span
|
15
|
-
= t('or')
|
16
|
-
%a{:href=>'#', :class=>'cancel-button', :onclick=>" $('#display_password').show(); $('#change_password').hide()"}= t('cancel', class: 'alt')
|
17
|
-
|
18
|
-
|
@@ -1,39 +0,0 @@
|
|
1
|
-
= stylesheet_link_tag('rad_social/rad_screen')
|
2
|
-
= javascript_include_tag('rad_social/rad_email')
|
3
|
-
= csrf_meta_tags
|
4
|
-
|
5
|
-
.rad-dialog-titlebar
|
6
|
-
%span.rad-dialog-title
|
7
|
-
Email a Friend
|
8
|
-
|
9
|
-
%form{:id=>'rad-social-email-form', :class=>'rad-email-form'}
|
10
|
-
.rad-email-error
|
11
|
-
%div.form-row
|
12
|
-
%label.form-label{:type=>'label', :for=>'from'}
|
13
|
-
From Email
|
14
|
-
%div.form-fields
|
15
|
-
%input{:class => 'input-textbox', :type => 'text', :id => 'rs-from', :name => 'from', :size => 30, :maxlength => 35}
|
16
|
-
%div.form-row
|
17
|
-
%label.form-label{:type=>'label', :for=>'from_name'}
|
18
|
-
From Name
|
19
|
-
%div.form-fields
|
20
|
-
%input{:class => 'input-textbox', :type => 'text', :id => 'rs-from_name', :name => 'from_name', :size => 30, :maxlength => 35}
|
21
|
-
%div.form-row
|
22
|
-
%label.form-label{:type=>'label', :for=>'to'}
|
23
|
-
To Email
|
24
|
-
%div.form-fields
|
25
|
-
%input{:class => 'input-textbox', :type => 'text', :id => 'rs-to', :name => 'to', :size => 30, :maxlength => 35}
|
26
|
-
%div.form-row
|
27
|
-
%label.form-label{:type=>'label', :for=>'message'}
|
28
|
-
Message
|
29
|
-
%div.form-fields
|
30
|
-
%textarea{:class => 'input-textbox', :id => 'rs-message', :name => 'message', :rows => 5, :cols => 40}
|
31
|
-
= email_message
|
32
|
-
%input{:type=>'hidden', :name=>'subject', :value=> email_subject}
|
33
|
-
%input{:type=>'hidden', :id=>'rs-base-message', :value=> email_message}
|
34
|
-
%input{:type=>'hidden', :name=>'submit_url', :value=> email_action_url}
|
35
|
-
%input.button.primary-button{:id => 'rad_email_submit', :type=>:button ,:value=>'Submit'}
|
36
|
-
.loader
|
37
|
-
|
38
|
-
#rad-confirmation.hidden
|
39
|
-
Your message has been sent.
|
@@ -1,20 +0,0 @@
|
|
1
|
-
= form_tag
|
2
|
-
%form{:id=>'rad_social_email_form', :class=>'rad-email-form'}
|
3
|
-
%label{:for => 'from'}
|
4
|
-
Your Email:
|
5
|
-
%input{:class => 'std_input', :type => 'text', :id => 'rs-from', :name => 'from', :size => 40, :maxlength => 35}
|
6
|
-
%label{:for => 'from_name'}
|
7
|
-
Your Name:
|
8
|
-
%input{:class => 'std_input', :type => 'text', :id => 'rs-from_name', :name => 'from_name', :size => 40, :maxlength => 35}
|
9
|
-
%label{:for => 'to'}
|
10
|
-
To:
|
11
|
-
%input{:class => 'std_input', :type => 'text', :id => 'rs-to', :name => 'to', :size => 40, :maxlength => 35}
|
12
|
-
%label{:for => 'subject'}
|
13
|
-
To:
|
14
|
-
%input{:class => 'std_input', :type => 'text', :id => 'rs-subject', :name => 'subject', :size => 40, :maxlength => 35}
|
15
|
-
%label{:for => 'Message'}
|
16
|
-
Message:
|
17
|
-
%textarea{:id => 'rs-message', :rows => 18, :cols => 40}
|
18
|
-
%input{:type=>'hidden', :name=>'submit_url', :value=>'contact/email'}
|
19
|
-
%input.button.primary-button{:id => 'email_submit', :type=>:button ,:value=>'Submit'}
|
20
|
-
.loader
|
@@ -1,16 +0,0 @@
|
|
1
|
-
= stylesheet_link_tag('rad_social/rad_screen')
|
2
|
-
= javascript_include_tag('rad_social/rad_widget', async: 'true')
|
3
|
-
- local_variables = defined?(locals) ? locals : local_assigns
|
4
|
-
- url = local_variables[:url]
|
5
|
-
- message = local_variables[:message]
|
6
|
-
- email_action_url = local_variables[:email_action_url]
|
7
|
-
- email_subject = local_variables[:email_subject]
|
8
|
-
- email_message = local_variables[:email_message]
|
9
|
-
|
10
|
-
.rad-widget
|
11
|
-
.rad-icon
|
12
|
-
%a{:class => 'rad-popup-window rad-facebook', :href => "https://www.facebook.com/sharer/sharer.php?u=#{CGI::escape(url)}", :target=> '_blank'}
|
13
|
-
.rad-icon
|
14
|
-
%a{:class => 'rad-popup-window rad-twitter', :href => "https://twitter.com/intent/tweet?text=#{CGI::escape(message + " " + url)}", :target=> '_blank'}
|
15
|
-
.rad-icon
|
16
|
-
%a{:class => 'rad-popup-window rad-email', :href => rad_social_mail_form_url(:email_subject => email_subject, :email_message => email_message, :email_action_url => email_action_url)}
|