Last general linting sweep (#1947)
* Fixed HTML errors in /app/views/additional_content_boxes * Fixed indentation * Fixed linting error in /app/views/comments * Fixed indentation in /app/views/html_variants * Fixed HTML errors + Fixed indentation in /app/views/internal * Fixed HTML errors + Fixed indentation in /app/views/layouts * Fixed indentation in /app/views/mailers * Fixed indentation in /app/views/moderations * Fixed HTML errors + Fixed indentation in /app/views/notifications * Fixed HTML errors in /app/views/pages * Fixed HTML errors + Fixed indentation in /app/views/social_previews * Fixed indentation in /app/views/stories * Fixed indentation in /app/views/stripe_subscriptions * Fixed indentation in /app/views/tags * Fixed indentation in /app/views/users
This commit is contained in:
parent
40e6078a32
commit
bcce614a80
79 changed files with 1295 additions and 1041 deletions
|
|
@ -1,20 +1,20 @@
|
|||
<div class="container show-page-content-display"
|
||||
data-details="<%= article.organization&.slug %>__<%= article.slug %>"
|
||||
id="<%= classification == "boosted" ? "partner-content-display" : "classic_article_#{article.id}" %>">
|
||||
data-details="<%= article.organization&.slug %>__<%= article.slug %>"
|
||||
id="<%= classification == "boosted" ? "partner-content-display" : "classic_article_#{article.id}" %>">
|
||||
<div class="content-classification">
|
||||
<span class="content-classification-text"><%= classification_text %></span>
|
||||
</div>
|
||||
<div class="main-content-display">
|
||||
<%= render "additional_content_boxes/article_content_area",
|
||||
article: article,
|
||||
classification: classification,
|
||||
organization: article.organization %>
|
||||
article: article,
|
||||
classification: classification,
|
||||
organization: article.organization %>
|
||||
</div>
|
||||
<div class="secondary-content-display">
|
||||
<%= render "additional_content_boxes/article_followable_area",
|
||||
article: article,
|
||||
followable: article.organization || article.user,
|
||||
classification: classification,
|
||||
follow_cue: follow_cue %>
|
||||
article: article,
|
||||
followable: article.organization || article.user,
|
||||
classification: classification,
|
||||
follow_cue: follow_cue %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
<h2><a href="<%= article.path + article.decorate.internal_utm_params %>" class="<%= "partner-link" if classification == "boosted" %>" data-details="<%= organization&.slug %>__<%= article.slug %>"><%= article.title %></a></h2>
|
||||
<h2>
|
||||
<a href="<%= article.path + article.decorate.internal_utm_params %>" class="<%= "partner-link" if classification == "boosted" %>" data-details="<%= organization&.slug %>__<%= article.slug %>"><%= article.title %></a>
|
||||
</h2>
|
||||
<div class="content-author">
|
||||
<a href="<%= article.user.path + article.decorate.internal_utm_params %>">
|
||||
<img class="profile-pic" src="<%= ProfileImage.new(article.user).get(50) %>" alt="<%= article.user.username %> profile image" />
|
||||
|
|
@ -9,12 +11,12 @@
|
|||
<a href="<%= article.path + article.decorate.internal_utm_params %>" class="<%= "partner-link" if classification == "boosted" %>" data-details="<%= organization&.slug %>__<%= article.slug %>">
|
||||
<%= article.description %>
|
||||
</a>
|
||||
<div class="engagement-count">
|
||||
<% if article.positive_reactions_count > 0 %>
|
||||
<img src="<%= asset_path("reactions-stack.png") %>" alt="Reactions" /> <%= article.positive_reactions_count %>
|
||||
<% end %>
|
||||
<% if article.comments_count > 0 %>
|
||||
<img src="<%= asset_path("comments-bubble.png") %>" alt="Reactions" class="comments-bubble" /> <%= article.comments_count %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="engagement-count">
|
||||
<% if article.positive_reactions_count > 0 %>
|
||||
<img src="<%= asset_path("reactions-stack.png") %>" alt="Reactions" /> <%= article.positive_reactions_count %>
|
||||
<% end %>
|
||||
<% if article.comments_count > 0 %>
|
||||
<img src="<%= asset_path("comments-bubble.png") %>" alt="Reactions" class="comments-bubble" /> <%= article.comments_count %>
|
||||
<% end %>
|
||||
</div>
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,32 +1,33 @@
|
|||
<% if followable.class.name == "Organization" && followable.nav_image.present? %>
|
||||
<div class="profile-pic-wrapper wide-profile-image-wrapper">
|
||||
<a href="<%= followable.path + article.decorate.internal_utm_params %>" />
|
||||
<img class="wide-image" src="<%= cl_image_path(followable.nav_image_url,
|
||||
type: "fetch",
|
||||
crop: "fill",
|
||||
width: 220,
|
||||
quality: "auto",
|
||||
flags: "progressive",
|
||||
fetch_format: "auto",
|
||||
sign_url: true) %>" />
|
||||
<div class="profile-pic-wrapper wide-profile-image-wrapper">
|
||||
<a href="<%= followable.path + article.decorate.internal_utm_params %>">
|
||||
<img class="wide-image" src="<%= cl_image_path(followable.nav_image_url,
|
||||
type: "fetch",
|
||||
crop: "fill",
|
||||
width: 220,
|
||||
quality: "auto",
|
||||
flags: "progressive",
|
||||
fetch_format: "auto",
|
||||
sign_url: true) %>" />
|
||||
</a>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="profile-pic-wrapper">
|
||||
<a href="<%= followable.path + article.decorate.internal_utm_params %>"
|
||||
class="<%= "partner-link" if classification == "boosted" %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE" />
|
||||
<img class="profile-image"
|
||||
src="<%= ProfileImage.new(followable).get(200) %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE"
|
||||
style="border: 4px solid <%= followable.bg_color_hex %>" />
|
||||
<a href="<%= followable.path + article.decorate.internal_utm_params %>"
|
||||
class="<%= "partner-link" if classification == "boosted" %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE">
|
||||
<img class="profile-image"
|
||||
src="<%= ProfileImage.new(followable).get(200) %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE"
|
||||
style="border: 4px solid <%= followable.bg_color_hex %>" /></a>
|
||||
</div>
|
||||
<div class="org-name">
|
||||
<a href="<%= followable.path + article.decorate.internal_utm_params %>"
|
||||
class="<%= "partner-link" if classification == "boosted" %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE" /><%= followable.name %></a>
|
||||
class="<%= "partner-link" if classification == "boosted" %>"
|
||||
data-details="<%= followable&.slug if classification == "boosted" %>__PROFILE"><%= followable.name %></a>
|
||||
</div>
|
||||
<% end %>
|
||||
<button class="cta follow-action-button user-profile-follow-button <%= "partner-link" if classification == "boosted" %>"
|
||||
style="color:<%= user_colors(followable)[:text] %>;background-color:<%= user_colors(followable)[:bg] %>"
|
||||
data-info='{"id":<%= followable.id %>,"className":"<%= followable.class.name %>"}'> </button>
|
||||
style="color:<%= user_colors(followable)[:text] %>;background-color:<%= user_colors(followable)[:bg] %>"
|
||||
data-info='{"id":<%= followable.id %>,"className":"<%= followable.class.name %>"}'>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<% if @boosted_article %>
|
||||
<%= render "additional_content_boxes/article_box",
|
||||
article: @boosted_article,
|
||||
classification: "boosted",
|
||||
classification_text: "From one of our Community Sponsors",
|
||||
follow_cue: @boosted_article.organization&.tag_line || @boosted_article.organization&.tag_line %>
|
||||
article: @boosted_article,
|
||||
classification: "boosted",
|
||||
classification_text: "From one of our Community Sponsors",
|
||||
follow_cue: @boosted_article.organization&.tag_line || @boosted_article.organization&.tag_line %>
|
||||
<% end %>
|
||||
<% if @suggested_articles.any? %>
|
||||
<% @suggested_articles.each do |article| %>
|
||||
<%= render "additional_content_boxes/article_box",
|
||||
article: article,
|
||||
classification: "for_user_article",
|
||||
classification_text: "Another Post You Might Like",
|
||||
follow_cue: article.organization&.tag_line || "Follow <a href='#{article.user.path}'>@#{article.user.username}</a> to see more of their posts in your feed." %>
|
||||
<% end %>
|
||||
article: article,
|
||||
classification: "for_user_article",
|
||||
classification_text: "Another Post You Might Like",
|
||||
follow_cue: article.organization&.tag_line || "Follow <a href='#{article.user.path}'>@#{article.user.username}</a> to see more of their posts in your feed." %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -20,14 +20,14 @@ to display a collection of resources in an HTML table.
|
|||
|
||||
<table aria-labelledby="<%= table_title %>">
|
||||
<thead>
|
||||
<tr>
|
||||
<% collection_presenter.attribute_types.each do |attr_name, attr_type| %>
|
||||
<th class="cell-label
|
||||
<tr>
|
||||
<% collection_presenter.attribute_types.each do |attr_name, attr_type| %>
|
||||
<th class="cell-label
|
||||
cell-label--<%= attr_type.html_class %>
|
||||
cell-label--<%= collection_presenter.ordered_html_class(attr_name) %>"
|
||||
scope="col"
|
||||
role="columnheader"
|
||||
aria-sort="<%= sort_order(collection_presenter.ordered_html_class(attr_name)) %>">
|
||||
scope="col"
|
||||
role="columnheader"
|
||||
aria-sort="<%= sort_order(collection_presenter.ordered_html_class(attr_name)) %>">
|
||||
<%= link_to(sanitized_order_params(
|
||||
page, collection_field_name
|
||||
).merge(
|
||||
|
|
@ -45,59 +45,59 @@ to display a collection of resources in an HTML table.
|
|||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</th>
|
||||
<% end %>
|
||||
<% [valid_action?(:edit, collection_presenter.resource_name),
|
||||
valid_action?(:destroy, collection_presenter.resource_name)].count(true).times do %>
|
||||
<th scope="col"></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</th>
|
||||
<% end %>
|
||||
<% [valid_action?(:edit, collection_presenter.resource_name),
|
||||
valid_action?(:destroy, collection_presenter.resource_name)].count(true).times do %>
|
||||
<th scope="col"></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<% resources.each do |resource| %>
|
||||
<tr class="js-table-row"
|
||||
tabindex="0"
|
||||
<% if valid_action? :show, collection_presenter.resource_name %>
|
||||
<%= %(role=link data-url=#{polymorphic_path([namespace, resource])}) %>
|
||||
<% end %>>
|
||||
<% collection_presenter.attributes_for(resource).each do |attribute| %>
|
||||
<td class="cell-data cell-data--<%= attribute.html_class %>">
|
||||
<% if show_action? :show, resource -%>
|
||||
<a href="<%= polymorphic_path([namespace, resource]) -%>"
|
||||
class="action-show">
|
||||
<%= render_field attribute %>
|
||||
</a>
|
||||
<% end -%>
|
||||
</td>
|
||||
<% end %>
|
||||
<% resources.each do |resource| %>
|
||||
<tr class="js-table-row"
|
||||
tabindex="0"
|
||||
<% if valid_action? :show, collection_presenter.resource_name %>
|
||||
<%= %(role=link data-url=#{polymorphic_path([namespace, resource])}) %>
|
||||
<% end %>>
|
||||
<% collection_presenter.attributes_for(resource).each do |attribute| %>
|
||||
<td class="cell-data cell-data--<%= attribute.html_class %>">
|
||||
<% if show_action? :show, resource -%>
|
||||
<a href="<%= polymorphic_path([namespace, resource]) -%>"
|
||||
class="action-show">
|
||||
<%= render_field attribute %>
|
||||
</a>
|
||||
<% end -%>
|
||||
</td>
|
||||
<% end %>
|
||||
|
||||
<% if valid_action? :edit, collection_presenter.resource_name %>
|
||||
<td>
|
||||
<% if show_action? :edit, resource %>
|
||||
<%= link_to(
|
||||
t("administrate.actions.edit"),
|
||||
[:edit, namespace, resource],
|
||||
class: "action-edit",
|
||||
) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
<% if valid_action? :edit, collection_presenter.resource_name %>
|
||||
<td>
|
||||
<% if show_action? :edit, resource %>
|
||||
<%= link_to(
|
||||
t("administrate.actions.edit"),
|
||||
[:edit, namespace, resource],
|
||||
class: "action-edit",
|
||||
) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
|
||||
<% if valid_action? :destroy, collection_presenter.resource_name %>
|
||||
<td>
|
||||
<% if show_action? :destroy, resource %>
|
||||
<%= link_to(
|
||||
t("administrate.actions.destroy"),
|
||||
[namespace, resource],
|
||||
class: "text-color-red",
|
||||
method: :delete,
|
||||
data: { confirm: t("administrate.actions.confirm") },
|
||||
) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% if valid_action? :destroy, collection_presenter.resource_name %>
|
||||
<td>
|
||||
<% if show_action? :destroy, resource %>
|
||||
<%= link_to(
|
||||
t("administrate.actions.destroy"),
|
||||
[namespace, resource],
|
||||
class: "text-color-red",
|
||||
method: :delete,
|
||||
data: { confirm: t("administrate.actions.confirm") },
|
||||
) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<%= image_tag("github-logo.svg", class: "icon-img") %>
|
||||
</a>
|
||||
<% end %>
|
||||
<% if commentable_author_is_op?(commentable, comment)%>
|
||||
<% if commentable_author_is_op?(commentable, comment) %>
|
||||
<span class="op-marker"><%= get_ama_or_op_banner(commentable) %></span>
|
||||
<% end %>
|
||||
<div class="comment-date">
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
<h2><%= pluralize(@html_variant.errors.count, "error") %> prohibited this block from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% @html_variant.errors.full_messages.each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
<% @html_variant.errors.full_messages.each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -5,12 +5,14 @@
|
|||
max-width: 96%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.html-variants-page nav a {
|
||||
display: inline-block;
|
||||
padding: 5px 12px;
|
||||
border-radius: 3px;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.html-variants-page nav a.selected {
|
||||
background: blue;
|
||||
color: white;
|
||||
|
|
@ -23,6 +25,7 @@
|
|||
padding: 10px 40px;
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
.flash {
|
||||
background: green;
|
||||
color: white;
|
||||
|
|
@ -31,6 +34,7 @@
|
|||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
width: 100%;
|
||||
font-size: 20px;
|
||||
|
|
@ -38,6 +42,7 @@
|
|||
padding: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
background: blue;
|
||||
color: white;
|
||||
|
|
@ -45,23 +50,28 @@
|
|||
padding: 15px 0px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: calc(100vh - 500px);
|
||||
font-size: 0.8em;
|
||||
overflow-x: scroll;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
|
||||
.form-sub-details input {
|
||||
display: inline-block;
|
||||
max-width: 40%;
|
||||
margin-left: 1%;
|
||||
}
|
||||
|
||||
.form-sub-details input[type="checkbox"] {
|
||||
max-width: 5%;
|
||||
}
|
||||
|
||||
#error_explanation {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.html-variants-page-single-variant {
|
||||
border: 1px solid black;
|
||||
padding: 15px 15px 5px;
|
||||
|
|
@ -73,29 +83,37 @@
|
|||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.html-variants-page-single-big {
|
||||
width: 962px;
|
||||
}
|
||||
|
||||
.html-variants-page-single-variant h3 {
|
||||
margin-top: 0px;
|
||||
font-size:1.3em;
|
||||
font-size: 1.3em;
|
||||
|
||||
}
|
||||
|
||||
.html-variants-page-single-variant iframe {
|
||||
border: 0px;
|
||||
width: 310px;
|
||||
height: 350px;
|
||||
border: 1px solid #888888;
|
||||
}
|
||||
|
||||
.html-variants-page-single-big iframe {
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
.html-variants-page-single-variant-details {
|
||||
padding: 10px;
|
||||
border-top: 1px solid gray;
|
||||
position: absolute;
|
||||
bottom:0;left:0;right:0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.pill {
|
||||
padding: 3px 10px;
|
||||
display: inline-block;
|
||||
|
|
@ -104,16 +122,19 @@
|
|||
background: gray;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.published {
|
||||
background: blue;
|
||||
}
|
||||
|
||||
.approved {
|
||||
background: green;
|
||||
}
|
||||
|
||||
.html-variants-page-single-variant-details input {
|
||||
background: green;
|
||||
padding: 20px;
|
||||
font-size:35px;
|
||||
font-size: 35px;
|
||||
border-radius: 3px;
|
||||
border: 0px;
|
||||
margin-top: 15px;
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
<iframe src="/html_variants/<%= html_variant.id %>"></iframe>
|
||||
<div class="html-variants-page-single-variant-details">
|
||||
<% if html_variant.published %>
|
||||
<span class='pill published'>published</span>
|
||||
<a class='pill' href="/html_variants/new?fork_id=<%= html_variant.id %>">fork</a>
|
||||
<span class='pill published'>published</span>
|
||||
<a class='pill' href="/html_variants/new?fork_id=<%= html_variant.id %>">fork</a>
|
||||
<% else %>
|
||||
<a class='pill' href="/html_variants/<%= html_variant.id %>/edit">view/edit</a>
|
||||
<a class='pill' href="/html_variants/<%= html_variant.id %>/edit">view/edit</a>
|
||||
<% end %>
|
||||
<% if html_variant.approved %>
|
||||
<span class='pill approved'><%= html_variant.success_rate %></span>
|
||||
<span class='pill approved'><%= html_variant.success_rate %></span>
|
||||
<% elsif admin %>
|
||||
<%= form_for(html_variant) do |f| %>
|
||||
<%= f.hidden_field :approved, value: "true" %>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
</nav>
|
||||
<% if params[:state] == "mine" %>
|
||||
<h2>My Entries</h2>
|
||||
<% elsif params[:state] == "admin" %>
|
||||
<% elsif params[:state] == "admin" %>
|
||||
<h2>All Published Entries</h2>
|
||||
<% else %>
|
||||
<h2>Leaderboard</h2>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<style>
|
||||
body {
|
||||
all: unset;
|
||||
}
|
||||
body {
|
||||
all: unset;
|
||||
}
|
||||
</style>
|
||||
<%= render "layouts/styles" %>
|
||||
<style>
|
||||
body{padding-top: 20px !important; }
|
||||
body {
|
||||
padding-top: 20px !important;
|
||||
}
|
||||
</style>
|
||||
<% if @html_variant.group == "article_show_below_article_cta" %>
|
||||
<div class="home">
|
||||
|
|
|
|||
|
|
@ -1,28 +1,29 @@
|
|||
<script>
|
||||
function timeNow(objectID){
|
||||
function timeNow(objectID) {
|
||||
var seconds = new Date().getTime() / 1000;
|
||||
document.getElementById("featured_number_"+objectID).value = Math.round(seconds);
|
||||
}
|
||||
function sink(objectID){
|
||||
var seconds = new Date().getTime() / 1080;
|
||||
document.getElementById("featured_number_"+objectID).value = Math.round(seconds);
|
||||
document.getElementById("featured_number_" + objectID).value = Math.round(seconds);
|
||||
}
|
||||
|
||||
$('.row').on("submit", "form", function() {
|
||||
function sink(objectID) {
|
||||
var seconds = new Date().getTime() / 1080;
|
||||
document.getElementById("featured_number_" + objectID).value = Math.round(seconds);
|
||||
}
|
||||
|
||||
$('.row').on("submit", "form", function () {
|
||||
var form = $(this);
|
||||
var valuesToSubmit = $(this).serialize();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: $(this).attr('action'), //sumbits it to the given url of the form
|
||||
data: valuesToSubmit,
|
||||
// dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
|
||||
}).success(function(json){
|
||||
type: "POST",
|
||||
url: $(this).attr('action'), //sumbits it to the given url of the form
|
||||
data: valuesToSubmit,
|
||||
// dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
|
||||
}).success(function (json) {
|
||||
console.log("success")
|
||||
form.parents(".row").addClass("highlighted-bg")
|
||||
form.parents(".row").addClass("highlighted-border")
|
||||
setTimeout(function(){
|
||||
setTimeout(function () {
|
||||
form.parents(".row").removeClass("highlighted-bg")
|
||||
},350)
|
||||
}, 350)
|
||||
});
|
||||
return false; // prevents normal behaviour
|
||||
});
|
||||
|
|
@ -44,10 +45,10 @@
|
|||
document.getElementById('image-upload-file-label').innerHTML = "Uploading...";
|
||||
document.getElementById('uploaded-image').style = 'display:none';
|
||||
document.getElementById('image-upload-submit').value = "uploading";
|
||||
setTimeout(function(){
|
||||
document.getElementById('image-upload-submit').click(function(){
|
||||
setTimeout(function () {
|
||||
document.getElementById('image-upload-submit').click(function () {
|
||||
});
|
||||
},50)
|
||||
}, 50)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -86,9 +87,9 @@
|
|||
|
||||
function createAjaxReq() {
|
||||
if (window.XMLHttpRequest) {
|
||||
return new XMLHttpRequest();
|
||||
return new XMLHttpRequest();
|
||||
} else {
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@
|
|||
<% if article.user&.notes&.any? %>
|
||||
<h2>User Notes (<%= article.user&.notes&.size %> total)</h2>
|
||||
<% article.user&.notes&.last(3)&.each do |note| %>
|
||||
<p><em><%= note.created_at.strftime("%d %B %Y %H:%M UTC") %> by <%= note.author_id ? User.find(note.author_id).username : "No Author" %></em> - <%= note.content %></p>
|
||||
<p>
|
||||
<em><%= note.created_at.strftime("%d %B %Y %H:%M UTC") %> by <%= note.author_id ? User.find(note.author_id).username : "No Author" %></em> - <%= note.content %>
|
||||
</p>
|
||||
<% end %>
|
||||
<p><a href="/internal/users/<%= article.user_id %>">View All</a></p>
|
||||
<% end %>
|
||||
|
|
@ -27,20 +29,21 @@
|
|||
Originally Published <%= article.published_at&.strftime("%b %d, %Y") %>
|
||||
</p>
|
||||
<% elsif article.crossposted_at? %>
|
||||
<p>
|
||||
Crossposted <%= article.crossposted_at.strftime("%b %d, %Y") %> & Published <%= article.published_at&.strftime("%b %d, %Y") %>
|
||||
</p>
|
||||
<p>
|
||||
Crossposted <%= article.crossposted_at.strftime("%b %d, %Y") %> & Published <%= article.published_at&.strftime("%b %d, %Y") %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p>
|
||||
Published <%= article.published_at&.strftime("%b %d, %Y") %>
|
||||
</p>
|
||||
<p>
|
||||
Published <%= article.published_at&.strftime("%b %d, %Y") %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% if article.main_image.present? %>
|
||||
<div style="max-height:450px;overflow:hidden;">
|
||||
<img src="<%= cloud_cover_url(article.main_image) %>" style="width:100%;" alt="cover image" /><br />
|
||||
</div>
|
||||
<div style="max-height:450px;overflow:hidden;">
|
||||
<img src="<%= cloud_cover_url(article.main_image) %>" style="width:100%;" alt="cover image" /><br />
|
||||
</div>
|
||||
<% end %>
|
||||
<b><a href="<%= article.path %>" target="_blank"><%= article.title %></a></b> <a href="<%= article.path %>/edit" target="_blank" style="background:#00da8b;color:white;padding:1px 6px">EDIT</a>
|
||||
<b><a href="<%= article.path %>" target="_blank"><%= article.title %></a></b>
|
||||
<a href="<%= article.path %>/edit" target="_blank" style="background:#00da8b;color:white;padding:1px 6px">EDIT</a>
|
||||
<% article.decorate.cached_tag_list_array.each do |tag| %>
|
||||
<a href='/t/<%= tag %>'>#<%= tag %></a>
|
||||
<% end %>
|
||||
|
|
@ -51,24 +54,33 @@
|
|||
<input name="utf8" type="hidden" value="✓">
|
||||
<input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" />
|
||||
<input type="hidden" name="_method" value="patch" />
|
||||
Featured Number: <input name="article[featured_number]" value="<%= article.featured_number %>" id="featured_number_<%= article.id %>" style="max-width:140px"><button onclick="timeNow(<%= article.id %>);return false;">☝️</button><button onclick="sink(<%= article.id %>);return false;">👇 SPAM!</button>
|
||||
Featured Number:
|
||||
<input name="article[featured_number]" value="<%= article.featured_number %>" id="featured_number_<%= article.id %>" style="max-width:140px">
|
||||
<button onclick="timeNow(<%= article.id %>);return false;">☝️</button>
|
||||
<button onclick="sink(<%= article.id %>);return false;">👇 SPAM!</button>
|
||||
Change author: <input size="6" name="article[user_id]" value="<%= article.user_id %>" />
|
||||
  Featured: <input name="article[featured]" type="checkbox" <%= "checked" if article.featured %>>
|
||||
  Approved: <input name="article[approved]" type="checkbox" <%= "checked" if article.approved %>>
|
||||
  Live Now: <input name="article[live_now]" type="checkbox" <%= "checked" if article.live_now %>>
|
||||
  Email Digest Eligible: <input name="article[email_digest_eligible]" type="checkbox" <%= "checked" if article.email_digest_eligible %>>
|
||||
  Image BG color: <input name="article[main_image_background_hex_color]" value="<%= article.main_image_background_hex_color %>" id="featured_number_<%= article.id %>">
|
||||
Social Image: <input name="article[social_image]" value="<%= article.social_image %>" id="featured_number_<%= article.id %>">
|
||||
  Email Digest Eligible:
|
||||
<input name="article[email_digest_eligible]" type="checkbox" <%= "checked" if article.email_digest_eligible %>>
|
||||
  Image BG color:
|
||||
<input name="article[main_image_background_hex_color]" value="<%= article.main_image_background_hex_color %>" id="featured_number_<%= article.id %>">
|
||||
Social Image:
|
||||
<input name="article[social_image]" value="<%= article.social_image %>" id="featured_number_<%= article.id %>">
|
||||
<br /><br />
|
||||
Boosted (Additional articles): <input name="article[boosted_additional_articles]" type="checkbox" <%= "checked" if article.boosted_additional_articles %>>
|
||||
  Boosted (DEV Digest): <input name="article[boosted_dev_digest_email]" type="checkbox" <%= "checked" if article.boosted_dev_digest_email %>>
|
||||
Boosted (Additional articles):
|
||||
<input name="article[boosted_additional_articles]" type="checkbox" <%= "checked" if article.boosted_additional_articles %>>
|
||||
  Boosted (DEV Digest):
|
||||
<input name="article[boosted_dev_digest_email]" type="checkbox" <%= "checked" if article.boosted_dev_digest_email %>>
|
||||
|
||||
<% if params[:state]&.include?("classic") %>
|
||||
<br /><br />
|
||||
<textarea cols="70" rows="6" wrap="hard" name="article[body_markdown]"><%= article.body_markdown %></textarea>
|
||||
<% end %>
|
||||
|
||||
    <button class="btn btn-primary">SUBMIT</button>
|
||||
   
|
||||
<button class="btn btn-primary">SUBMIT</button>
|
||||
</form>
|
||||
<div>
|
||||
<% article.buffer_updates.order("created_at ASC").each do |buffer_update| %>
|
||||
|
|
@ -92,14 +104,14 @@
|
|||
<b>BOOSTED IN <%= EmailMessage.where("subject LIKE ?", "%#{phrase}%").where.not(opened_at: nil).size %> EMAILS</b>
|
||||
<br />
|
||||
<b>BOOSTED IN <%= EmailMessage.where("subject LIKE ?", "%#{phrase}%").where.not(opened_at: nil).where("sent_at > ?", 1.week.ago).size %> EMAILS IN THE PAST WEEK</b>
|
||||
<br /></br />
|
||||
<br /><br />
|
||||
<b>BOOSTED IN <%= EmailMessage.where("subject LIKE ?", "%#{phrase}%").where.not(opened_at: nil).where.not(opened_at: nil).size %> OPENED EMAILS</b>
|
||||
<br />
|
||||
<b>BOOSTED IN <%= EmailMessage.where("subject LIKE ?", "%#{phrase}%").where.not(opened_at: nil).where.not(opened_at: nil).where("sent_at > ?", 1.week.ago).size %> OPENED EMAILS IN THE PAST WEEK</b>
|
||||
<% end %>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn toggle-buffering-butt" style="margin:10px;0px;padding:10px 30px;border: 2px solid black;font-size:1.1em">
|
||||
<button class="btn toggle-buffering-butt" style="margin:10px 0px;padding:10px 30px;border: 2px solid black;font-size:1.1em">
|
||||
Share to Buffer
|
||||
</button>
|
||||
<% if (article.decorate.cached_tag_list_array & Tag.bufferized_tags).any? %>
|
||||
|
|
@ -117,7 +129,8 @@
|
|||
<input type="hidden" name="social_channel" value="main_twitter" />
|
||||
<input type="hidden" name="article_id" value="<%= article.id %>" />
|
||||
<p> Twitter MAIN</p>
|
||||
<textarea cols="37" rows="6" wrap="hard" name="tweet" maxlength="255"><%= article.title %><% if !article.user.twitter_username.blank? %>
{ author: @<%= article.user.twitter_username %> }<% end %></textarea>
|
||||
<textarea cols="37" rows="6" wrap="hard" name="tweet" maxlength="255"><%= article.title %>
|
||||
<% if !article.user.twitter_username.blank? %>
{ author: @<%= article.user.twitter_username %> }<% end %></textarea>
|
||||
<button class="btn btn-info" style="font-size:1em;">🦅 Tweet to @ThePracticalDev</button>
|
||||
<% end %>
|
||||
<% if (article.decorate.cached_tag_list_array & Tag.bufferized_tags).any? %>
|
||||
|
|
@ -125,7 +138,8 @@
|
|||
<input type="hidden" name="social_channel" value="satellite_twitter" />
|
||||
<input type="hidden" name="article_id" value="<%= article.id %>" />
|
||||
<p> Twitter Satellite</p>
|
||||
<textarea cols="37" rows="6" wrap="hard" name="tweet" maxlength="255"><%= article.title %><% if !article.user.twitter_username.blank? %>
{ author: @<%= article.user.twitter_username %> }<% end %></textarea>
|
||||
<textarea cols="37" rows="6" wrap="hard" name="tweet" maxlength="255"><%= article.title %>
|
||||
<% if !article.user.twitter_username.blank? %>
{ author: @<%= article.user.twitter_username %> }<% end %></textarea>
|
||||
<button class="btn btn-info" style="font-size:1em;">🐦 Tweet to satellites</button>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<style>
|
||||
.top-nav{
|
||||
.top-nav {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
.top-nav a {
|
||||
display: inline-block;
|
||||
}
|
||||
|
|
@ -18,7 +19,12 @@
|
|||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<style>.top-nav a {border: 1px solid #d8d8d8;font-weight: bold;margin-right: 3px;font-size:0.66em}</style>
|
||||
<style>.top-nav a {
|
||||
border: 1px solid #d8d8d8;
|
||||
font-weight: bold;
|
||||
margin-right: 3px;
|
||||
font-size: 0.66em
|
||||
}</style>
|
||||
<h3 class="top-nav">
|
||||
<a href="/internal/articles" class="btn <%= "btn-success" if params[:state].blank? %>">Hot</a>
|
||||
<a href="/internal/articles?state=chronological" class="btn <%= "btn-success" if params[:state] == "chronological" %>">Chronological</a>
|
||||
|
|
@ -32,10 +38,10 @@
|
|||
<a href="/internal/articles?state=boosted-additional-articles" class="btn <%= "btn-success" if params[:state] == "boosted-additional-articles" %>">Boosted</a>
|
||||
</h3>
|
||||
<br />
|
||||
<% if params[:state] && params[:state].include?("top-") && params[:state] != "top-3" && params[:state] != "top-6" %>
|
||||
<h1 style="color:red">
|
||||
<%= params[:state] %>-months
|
||||
</h1>
|
||||
<% if params[:state] && params[:state].include?("top-") && params[:state] != "top-3" && params[:state] != "top-6" %>
|
||||
<h1 style="color:red">
|
||||
<%= params[:state] %>-months
|
||||
</h1>
|
||||
<% end %>
|
||||
|
||||
<% if @featured_articles && @featured_articles.any? %>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@
|
|||
<% other_classes = [published, featured, publish_permission].join(" ") %>
|
||||
|
||||
<div class="row main-group <%= other_classes %>" data-retrieveddate="<%= article.created_at %>" style="<%= "background:#f2fff2;" if article.user.feed_admin_publish_permission %> <%= "background:#daf7ff;" if article.published %>">
|
||||
<b><a href="<%= article.path %>" target="_blank"><%= article.title %></a></b> <a href="<%= article.path %>/edit" target="_blank" style="background:#00da8b;color:white;padding:1px 6px">EDIT</a><br />
|
||||
<b><a href="<%= article.path %>" target="_blank"><%= article.title %></a></b>
|
||||
<a href="<%= article.path %>/edit" target="_blank" style="background:#00da8b;color:white;padding:1px 6px">EDIT</a><br />
|
||||
by <b><a href="<%= article.user.path %>" target="_blank"><%= article.username %></a></b>
|
||||
<br />
|
||||
<br />
|
||||
|
|
@ -30,11 +31,16 @@
|
|||
<form action="/internal/articles/<%= article.id %>" accept-charset="UTF-8" method="post">
|
||||
<input name="utf8" type="hidden" value="✓">
|
||||
<input type="hidden" name="_method" value="patch" />
|
||||
Featured Number: <input name="article[featured_number]" value="<%= article.featured_number %>" id="featured_number_<%= article.id %>" style="max-width:140px"><button onclick="timeNow(<%= article.id %>);return false;">☝️</button>
|
||||
Featured Number:
|
||||
<input name="article[featured_number]" value="<%= article.featured_number %>" id="featured_number_<%= article.id %>" style="max-width:140px">
|
||||
<button onclick="timeNow(<%= article.id %>);return false;">☝️</button>
|
||||
  Featured: <input name="article[featured]" type="checkbox" <%= "checked" if article.featured %>>
|
||||
  Image BG color: <input name="article[main_image_background_hex_color]" value="<%= article.main_image_background_hex_color %>" id="featured_number_<%= article.id %>"><br /><br />
|
||||
Social Image: <input name="article[social_image]" value="<%= article.social_image %>" id="featured_number_<%= article.id %>">
|
||||
    <button class="btn btn-primary">SUBMIT</button>
|
||||
  Image BG color:
|
||||
<input name="article[main_image_background_hex_color]" value="<%= article.main_image_background_hex_color %>" id="featured_number_<%= article.id %>"><br /><br />
|
||||
Social Image:
|
||||
<input name="article[social_image]" value="<%= article.social_image %>" id="featured_number_<%= article.id %>">
|
||||
   
|
||||
<button class="btn btn-primary">SUBMIT</button>
|
||||
</form>
|
||||
<% if article.published %>
|
||||
<div class="row" style="background:#00b0e3;color:white;">PUBLISHED <%= "<strong>AND FEATURED</strong>".html_safe if article.featured %></div>
|
||||
|
|
@ -53,26 +59,26 @@
|
|||
<br /><br />
|
||||
|
||||
<script>
|
||||
function timeNow(objectID){
|
||||
function timeNow(objectID) {
|
||||
var seconds = new Date().getTime() / 1000;
|
||||
document.getElementById("featured_number_"+objectID).value = Math.round(seconds);
|
||||
document.getElementById("featured_number_" + objectID).value = Math.round(seconds);
|
||||
}
|
||||
|
||||
$('.row').on("submit", "form", function() {
|
||||
$('.row').on("submit", "form", function () {
|
||||
var form = $(this);
|
||||
var valuesToSubmit = $(this).serialize();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: $(this).attr('action'), //sumbits it to the given url of the form
|
||||
data: valuesToSubmit,
|
||||
// dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
|
||||
}).success(function(json){
|
||||
type: "POST",
|
||||
url: $(this).attr('action'), //sumbits it to the given url of the form
|
||||
data: valuesToSubmit,
|
||||
// dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
|
||||
}).success(function (json) {
|
||||
console.log("success")
|
||||
form.parents(".row").addClass("highlighted-bg")
|
||||
form.parents(".row").addClass("highlighted-border")
|
||||
setTimeout(function(){
|
||||
setTimeout(function () {
|
||||
form.parents(".row").removeClass("highlighted-bg")
|
||||
},350)
|
||||
}, 350)
|
||||
});
|
||||
return false; // prevents normal behaviour
|
||||
});
|
||||
|
|
@ -81,7 +87,7 @@
|
|||
return document.getElementById(id).checked;
|
||||
}
|
||||
|
||||
document.getElementById("submit").onclick = function(e) {
|
||||
document.getElementById("submit").onclick = function (e) {
|
||||
e.preventDefault();
|
||||
var ids = ["cb_published", "cb_featured", "cb_admin_allowed", "cb_only_user"];
|
||||
var corres_classes = ["published", "featured", "admin-allowed", "only-user"];
|
||||
|
|
@ -91,15 +97,15 @@
|
|||
}
|
||||
|
||||
for (var i = 0; i < ids.length; i++) {
|
||||
if (check(ids[i]) === false) {
|
||||
if (check(ids[i]) === false) {
|
||||
var things = document.getElementsByClassName(corres_classes[i])
|
||||
for (var x = 0; x < things.length; x++){
|
||||
for (var x = 0; x < things.length; x++) {
|
||||
things[x].style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(check("cb_retrieved_today") === true) {
|
||||
if (check("cb_retrieved_today") === true) {
|
||||
var todayDate = new Date().toDateString();
|
||||
for (var i = 0; i < all.length; i++) {
|
||||
var dateOfArticle = new Date(all[i].dataset.retrieveddate).toDateString();
|
||||
|
|
|
|||
|
|
@ -4,11 +4,13 @@
|
|||
<div class="row comment-row">
|
||||
<div class="inner-row col-md-8 col-md-offset-2">
|
||||
<% if comment.commentable %>
|
||||
<p class="lead"><strong><a href="<%= comment.commentable.path %>">re: <%= comment.commentable.title %></a> (<%= comment.positive_reactions_count %> ❤️)</strong></p>
|
||||
<p class="lead">
|
||||
<strong><a href="<%= comment.commentable.path %>">re: <%= comment.commentable.title %></a> (<%= comment.positive_reactions_count %> ❤️)</strong>
|
||||
</p>
|
||||
<% end %>
|
||||
<%= sanitize comment.processed_html.html_safe,
|
||||
tags: %w(strong em p h1 h2 h3 h4 h5 h6 i u b code pre br ul ol li small sup img a span hr blockquote),
|
||||
attributes: %w(href strong em ref rel src title alt class) %>
|
||||
<%= sanitize comment.processed_html.html_safe,
|
||||
tags: %w(strong em p h1 h2 h3 h4 h5 h6 i u b code pre br ul ol li small sup img a span hr blockquote),
|
||||
attributes: %w(href strong em ref rel src title alt class) %>
|
||||
<div class="row">
|
||||
<div class="inner-row col-xs-8">
|
||||
<% if comment.user %>
|
||||
|
|
@ -17,7 +19,7 @@
|
|||
</a>
|
||||
<% end %>
|
||||
<% if comment.user && comment.user.twitter_username.present? %>
|
||||
|
|
||||
|
|
||||
<a href="https://twitter.com/<%= comment.user.twitter_username %>">
|
||||
<i class="fa fa-twitter" aria-hidden="true"></i> @<%= comment.user.twitter_username %>
|
||||
</a>
|
||||
|
|
@ -43,7 +45,7 @@
|
|||
</div>
|
||||
|
||||
<script>
|
||||
$("form").submit(function(e){
|
||||
$("form").submit(function (e) {
|
||||
$(this).fadeOut();
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
<br /><br />
|
||||
|
||||
<script>
|
||||
setInterval(function(){
|
||||
setInterval(function () {
|
||||
location.reload();
|
||||
},180000)
|
||||
}, 180000)
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -18,125 +18,131 @@
|
|||
</div>
|
||||
<div class="panel-collapse collapse in" id="collapse<%= feedback_message.id %>" role="tabpanel" aria-labelledby="heading">
|
||||
<div class="panel-body">
|
||||
<h2>
|
||||
Reporter:
|
||||
<% if feedback_message.reporter_id? %>
|
||||
<%= feedback_message.reporter.name %>
|
||||
<a href="<%= feedback_message.reporter.path %>">@<%= feedback_message.reporter.username %></a>
|
||||
<% else %>
|
||||
Anonymous
|
||||
<% end %>
|
||||
</h2>
|
||||
<h3>
|
||||
Reported URL (new tab):
|
||||
<br>
|
||||
<a href="<%= feedback_message.reported_url %>" target="_blank"><%= feedback_message.reported_url %></a>
|
||||
</h3>
|
||||
<h3>Category: <%= feedback_message.category %></h3>
|
||||
<h3>
|
||||
Message:
|
||||
</h3>
|
||||
<p>
|
||||
<% if feedback_message.message.blank? %>
|
||||
<span class="blankmessage">No message was left.</span>
|
||||
<% else %>
|
||||
<%= feedback_message.message %>
|
||||
<% end %>
|
||||
</p>
|
||||
<hr>
|
||||
<h3>Previous Emails:</h3>
|
||||
<div class="previous__emails__container">
|
||||
<% feedback_message_emails.each do |email| %>
|
||||
<div class="email__container">
|
||||
<p class="to__subject">Type: <%= email.utm_campaign.capitalize %></p>
|
||||
<p class="to__subject">To: <%= email.to %></p>
|
||||
<p class="to__subject">Subject: <%= email.subject %></p>
|
||||
<%= email.body_html_content.html_safe %>
|
||||
<h2>
|
||||
Reporter:
|
||||
<% if feedback_message.reporter_id? %>
|
||||
<%= feedback_message.reporter.name %>
|
||||
<a href="<%= feedback_message.reporter.path %>">@<%= feedback_message.reporter.username %></a>
|
||||
<% else %>
|
||||
Anonymous
|
||||
<% end %>
|
||||
</h2>
|
||||
<h3>
|
||||
Reported URL (new tab):
|
||||
<br>
|
||||
<a href="<%= feedback_message.reported_url %>" target="_blank"><%= feedback_message.reported_url %></a>
|
||||
</h3>
|
||||
<h3>Category: <%= feedback_message.category %></h3>
|
||||
<h3>
|
||||
Message:
|
||||
</h3>
|
||||
<p>
|
||||
<% if feedback_message.message.blank? %>
|
||||
<span class="blankmessage">No message was left.</span>
|
||||
<% else %>
|
||||
<%= feedback_message.message %>
|
||||
<% end %>
|
||||
</p>
|
||||
<hr>
|
||||
<h3>Previous Emails:</h3>
|
||||
<div class="previous__emails__container">
|
||||
<% feedback_message_emails.each do |email| %>
|
||||
<div class="email__container">
|
||||
<p class="to__subject">Type: <%= email.utm_campaign.capitalize %></p>
|
||||
<p class="to__subject">To: <%= email.to %></p>
|
||||
<p class="to__subject">Subject: <%= email.subject %></p>
|
||||
<%= email.body_html_content.html_safe %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<h3>Email Form:</h3>
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="active"><a href="#reporter-<%= feedback_message.id %>" aria-controls="reporter-<%= feedback_message.id %>" role="tab" data-toggle="tab">Reporter</a></li>
|
||||
<li role="presentation"><a href="#offender-<%= feedback_message.id %>" aria-controls="offender-<%= feedback_message.id %>" role="tab" data-toggle="tab">Offender</a></li>
|
||||
<li role="presentation"><a href="#affected-<%= feedback_message.id %>" aria-controls="affected-<%= feedback_message.id %>" role="tab" data-toggle="tab">Affected</a></li>
|
||||
</ul>
|
||||
<h3>Email Form:</h3>
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li role="presentation" class="active">
|
||||
<a href="#reporter-<%= feedback_message.id %>" aria-controls="reporter-<%= feedback_message.id %>" role="tab" data-toggle="tab">Reporter</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#offender-<%= feedback_message.id %>" aria-controls="offender-<%= feedback_message.id %>" role="tab" data-toggle="tab">Offender</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#affected-<%= feedback_message.id %>" aria-controls="affected-<%= feedback_message.id %>" role="tab" data-toggle="tab">Affected</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade in active" data-id="<%= feedback_message.id %>" data-userType="reporter" id="reporter-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :reporter_email_to, feedback_message.reporter&.email, class: "form-control", id: "reporter__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade in active" data-id="<%= feedback_message.id %>" data-userType="reporter" id="reporter-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :reporter_email_to, feedback_message.reporter&.email, class: "form-control", id: "reporter__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
<%= text_field_tag :reporter_email_subject, reporter_email_details[:subject], class: "form-control", id: "reporter__subject__#{feedback_message.id}" %>
|
||||
<h3>Body:</h3>
|
||||
<%= text_area_tag :reporter_email_body, reporter_email_details[:body], class: "form-control", style: "height: 300px;", id: "reporter__body__#{feedback_message.id}" %>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane fade" data-id="<%= feedback_message.id %>" data-userType="offender" id="offender-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :offender_email_to, feedback_message.offender&.email, class: "form-control", id: "offender__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
<h3>Body:</h3>
|
||||
<%= text_area_tag :reporter_email_body, reporter_email_details[:body], class: "form-control", style: "height: 300px;", id: "reporter__body__#{feedback_message.id}" %>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane fade" data-id="<%= feedback_message.id %>" data-userType="offender" id="offender-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :offender_email_to, feedback_message.offender&.email, class: "form-control", id: "offender__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
<%= text_field_tag :offender_email_subject, offender_email_details[:subject], class: "form-control", id: "offender__subject__#{feedback_message.id}" %>
|
||||
<h3>Body:</h3>
|
||||
<h3>Body:</h3>
|
||||
<%= text_area_tag :offender_email_body, offender_email_details[:body], class: "form-control", style: "height: 300px;", id: "offender__body__#{feedback_message.id}" %>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane fade" data-id="<%= feedback_message.id %>" data-userType="affected" id="affected-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :affected_email_to, feedback_message.affected&.email, class: "form-control", id: "affected__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane fade" data-id="<%= feedback_message.id %>" data-userType="affected" id="affected-<%= feedback_message.id %>">
|
||||
<h3>
|
||||
Send to:
|
||||
<br>
|
||||
<%= email_field_tag :affected_email_to, feedback_message.affected&.email, class: "form-control", id: "affected__emailto__#{feedback_message.id}", required: true %>
|
||||
</h3>
|
||||
<h3>Subject:</h3>
|
||||
<%= text_field_tag :affected_email_subject, affected_email_details[:subject], class: "form-control", id: "affected__subject__#{feedback_message.id}" %>
|
||||
<h3>Body:</h3>
|
||||
<h3>Body:</h3>
|
||||
<%= text_area_tag :affected_email_body, affected_email_details[:body], class: "form-control", style: "height: 300px;", id: "affected__body__#{feedback_message.id}" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit" id="send__email__btn__<%= feedback_message.id %>">SEND EMAIL ✉️ </button>
|
||||
<div class="email__alert alert fade in" id="email__alert__<%= feedback_message.id %>">
|
||||
</div>
|
||||
<h3>
|
||||
Status: <%= f.select :status, ["Open", "Invalid", "Resolved"], {}, id: "status__#{feedback_message.id}" %>
|
||||
<button class="btn btn-primary" role="button" id="save__status__<%= feedback_message.id %>">SAVE STATUS</button>
|
||||
</h3>
|
||||
<h3>Notes:</h3>
|
||||
<div class="notes__container" id="notes__<%= feedback_message.id %>">
|
||||
<% feedback_message.notes&.order("created_at")&.each do |note| %>
|
||||
<div class="single__note">
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit" id="send__email__btn__<%= feedback_message.id %>">SEND EMAIL ✉️</button>
|
||||
<div class="email__alert alert fade in" id="email__alert__<%= feedback_message.id %>">
|
||||
</div>
|
||||
<h3>
|
||||
Status: <%= f.select :status, ["Open", "Invalid", "Resolved"], {}, id: "status__#{feedback_message.id}" %>
|
||||
<button class="btn btn-primary" role="button" id="save__status__<%= feedback_message.id %>">SAVE STATUS</button>
|
||||
</h3>
|
||||
<h3>Notes:</h3>
|
||||
<div class="notes__container" id="notes__<%= feedback_message.id %>">
|
||||
<% feedback_message.notes&.order("created_at")&.each do |note| %>
|
||||
<div class="single__note">
|
||||
<span class="badge time__badge">
|
||||
<%= time_ago_in_words note.created_at %> ago
|
||||
</span>
|
||||
<p class="note-content">
|
||||
<%= note.author.name %>: <%= note.content %>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<input type="hidden" name="reason" value="<%= feedback_message.feedback_type %>" id="note__reason__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="noteable_id" value="<%= feedback_message.id %>" id="note__noteable-id__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="noteable_type" value="FeedbackMessage" id="note__noteable-type__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="author_id" value="<%= current_user.id %>" id="note__author-id__<%= feedback_message.id %>">
|
||||
<input
|
||||
type="textarea"
|
||||
name="content"
|
||||
placeholder="Leave some notes about the status and context of this report."
|
||||
class="notefield"
|
||||
id="note__content__<%= feedback_message.id %>"
|
||||
required>
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit" id="note__submit__<%= feedback_message.id %>">SUBMIT NOTE 📝 </button>
|
||||
<br>
|
||||
<br>
|
||||
<button class="btn btn-primary" type="button" id="minimize__report__button__<%= feedback_message.id %>">
|
||||
Minimize Report
|
||||
</button>
|
||||
<p class="note-content">
|
||||
<%= note.author.name %>: <%= note.content %>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<input type="hidden" name="reason" value="<%= feedback_message.feedback_type %>" id="note__reason__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="noteable_id" value="<%= feedback_message.id %>" id="note__noteable-id__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="noteable_type" value="FeedbackMessage" id="note__noteable-type__<%= feedback_message.id %>">
|
||||
<input type="hidden" name="author_id" value="<%= current_user.id %>" id="note__author-id__<%= feedback_message.id %>">
|
||||
<input
|
||||
type="textarea"
|
||||
name="content"
|
||||
placeholder="Leave some notes about the status and context of this report."
|
||||
class="notefield"
|
||||
id="note__content__<%= feedback_message.id %>"
|
||||
required>
|
||||
<br>
|
||||
<button class="btn btn-primary" type="submit" id="note__submit__<%= feedback_message.id %>">SUBMIT NOTE 📝</button>
|
||||
<br>
|
||||
<br>
|
||||
<button class="btn btn-primary" type="button" id="minimize__report__button__<%= feedback_message.id %>">
|
||||
Minimize Report
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -158,23 +164,23 @@
|
|||
body: formData,
|
||||
credentials: 'same-origin'
|
||||
})
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === 'Success') {
|
||||
console.log(json.outcome)
|
||||
statusBtn.innerText = "Saved!";
|
||||
setTimeout(function() {
|
||||
statusBtn.innerText = "SAVE STATUS"
|
||||
}, 1000);
|
||||
} else {
|
||||
}
|
||||
}))
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === 'Success') {
|
||||
console.log(json.outcome)
|
||||
statusBtn.innerText = "Saved!";
|
||||
setTimeout(function () {
|
||||
statusBtn.innerText = "SAVE STATUS"
|
||||
}, 1000);
|
||||
} else {
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
||||
document.getElementById('save__status__' + <%= feedback_message.id %>).addEventListener('click', function(event) {
|
||||
document.getElementById('save__status__' + <%= feedback_message.id %>).addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
var reportId = <%= feedback_message.id %>
|
||||
saveStatus(reportId);
|
||||
saveStatus(reportId);
|
||||
});
|
||||
|
||||
function successfulEmail(alert) {
|
||||
|
|
@ -203,7 +209,7 @@
|
|||
alert.classList.remove("alert-success");
|
||||
alert.classList.remove("alert-danger");
|
||||
|
||||
if(emailToAddress === "") {
|
||||
if (emailToAddress === "") {
|
||||
alert.style.display = 'inline-block';
|
||||
alert.classList.add("alert-warning");
|
||||
alert.innerHTML = "Email can't be blank!"
|
||||
|
|
@ -225,22 +231,22 @@
|
|||
body: formData,
|
||||
credentials: 'same-origin'
|
||||
})
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === "Success") {
|
||||
successfulEmail(alert);
|
||||
} else {
|
||||
console.log('email failed')
|
||||
failedEmail(alert);
|
||||
}
|
||||
}))
|
||||
.catch(error => {
|
||||
failedEmail(alert);
|
||||
console.log(error);
|
||||
})
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === "Success") {
|
||||
successfulEmail(alert);
|
||||
} else {
|
||||
console.log('email failed')
|
||||
failedEmail(alert);
|
||||
}
|
||||
}))
|
||||
.catch(error => {
|
||||
failedEmail(alert);
|
||||
console.log(error);
|
||||
})
|
||||
}
|
||||
|
||||
document.getElementById('send__email__btn__' + <%= feedback_message.id %>).addEventListener('click', function(event) {
|
||||
document.getElementById('send__email__btn__' + <%= feedback_message.id %>).addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
var reportId = <%= feedback_message.id %>;
|
||||
sendEmail(reportId);
|
||||
|
|
@ -286,27 +292,27 @@
|
|||
body: formData,
|
||||
credentials: 'same-origin'
|
||||
})
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === 'Success') {
|
||||
addNoteToPage(json, id);
|
||||
clearNote(id);
|
||||
} else {
|
||||
.then(response => response.json()
|
||||
.then(json => {
|
||||
if (json.outcome === 'Success') {
|
||||
addNoteToPage(json, id);
|
||||
clearNote(id);
|
||||
} else {
|
||||
// failedNote();
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
// failedNote();
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
// failedNote();
|
||||
console.log(error);
|
||||
}))
|
||||
console.log(error);
|
||||
}))
|
||||
}
|
||||
|
||||
document.getElementById('note__submit__<%= feedback_message.id %>').addEventListener('click', function() {
|
||||
document.getElementById('note__submit__<%= feedback_message.id %>').addEventListener('click', function () {
|
||||
var reportId = <%= feedback_message.id %>;
|
||||
submitNote(reportId);
|
||||
});
|
||||
|
||||
document.getElementById('minimize__report__button__<%= feedback_message.id %>').addEventListener('click', function() {
|
||||
document.getElementById('minimize__report__button__<%= feedback_message.id %>').addEventListener('click', function () {
|
||||
document.getElementById('collapse__header__link-<%= feedback_message.id %>').click();
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,42 @@
|
|||
<style>
|
||||
.top-nav{
|
||||
.top-nav {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
@media (max-width:991px) and (min-width:768px) {
|
||||
.top-nav{
|
||||
|
||||
@media (max-width: 991px) and (min-width: 768px) {
|
||||
.top-nav {
|
||||
margin-top: 100px;
|
||||
}
|
||||
.alert{
|
||||
|
||||
.alert {
|
||||
margin-top: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.top-nav a {
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.active-state {
|
||||
background-color:#89ffba;
|
||||
background-color: #89ffba;
|
||||
}
|
||||
.notefield{
|
||||
width: 100%;
|
||||
resize: none;
|
||||
font-size: 18px;
|
||||
height: 50px;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
margin: 10px 0px;
|
||||
|
||||
.notefield {
|
||||
width: 100%;
|
||||
resize: none;
|
||||
font-size: 18px;
|
||||
height: 50px;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
.blankmessage{
|
||||
|
||||
.blankmessage {
|
||||
font-style: italic;
|
||||
}
|
||||
.note-content{
|
||||
|
||||
.note-content {
|
||||
border: 1px dashed black;
|
||||
border-radius: 5px;
|
||||
width: 100%;
|
||||
|
|
@ -37,31 +44,37 @@
|
|||
padding-top: 25px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.email__alert{
|
||||
|
||||
.email__alert {
|
||||
display: none;
|
||||
margin: 0;
|
||||
}
|
||||
.panel-right-elements{
|
||||
|
||||
.panel-right-elements {
|
||||
float: right;
|
||||
}
|
||||
.email__container{
|
||||
|
||||
.email__container {
|
||||
border: 1px solid gray;
|
||||
margin: 10px;
|
||||
padding-left: 50px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.to__subject{
|
||||
|
||||
.to__subject {
|
||||
margin: 5px;
|
||||
font-size: 20px;
|
||||
color: black;
|
||||
text-align: center;
|
||||
}
|
||||
.time__badge{
|
||||
|
||||
.time__badge {
|
||||
float: right;
|
||||
margin-top: 7px;
|
||||
margin-right: 7px;
|
||||
}
|
||||
.single__note{
|
||||
|
||||
.single__note {
|
||||
width: 60%;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -10,36 +10,37 @@
|
|||
|
||||
<%= paginate @feedback_messages %>
|
||||
|
||||
<% @vomits.each do |reaction| %>
|
||||
<% next unless reaction.user && reaction.reactable %>
|
||||
<div class="row">
|
||||
<div class="inner-row col-md-3">
|
||||
<strong>🤢 <a href="<%= reaction.user.path %>">@<%= reaction.user.username %></a></strong>
|
||||
</div>
|
||||
<div class="inner-row col-md-<%= params[:status] == "Open" || params[:status].blank? ? "5" : "9" %>">
|
||||
<strong><%= reaction.reactable_type %>:</strong> <a href="<%= reaction.reactable.path %>"><%= reaction.reactable.title %></a>
|
||||
</div>
|
||||
<% if params[:status] == "Open" || params[:status].blank? %>
|
||||
<div class="inner-row col-md-2">
|
||||
<%= form_for [:internal, reaction] do |f| %>
|
||||
<%= f.hidden_field :status, value: "confirmed" %>
|
||||
<%= f.submit "CONFIRMED", class: "btn btn-success btn-lg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="inner-row col-md-2">
|
||||
<%= form_for [:internal, reaction] do |f| %>
|
||||
<%= f.hidden_field :status, value: "invalid" %>
|
||||
<%= f.submit "INVALID", class: "btn btn-danger btn-lg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% @vomits.each do |reaction| %>
|
||||
<% next unless reaction.user && reaction.reactable %>
|
||||
<div class="row">
|
||||
<div class="inner-row col-md-3">
|
||||
<strong>🤢 <a href="<%= reaction.user.path %>">@<%= reaction.user.username %></a></strong>
|
||||
</div>
|
||||
<div class="inner-row col-md-<%= params[:status] == "Open" || params[:status].blank? ? "5" : "9" %>">
|
||||
<strong><%= reaction.reactable_type %>:</strong>
|
||||
<a href="<%= reaction.reactable.path %>"><%= reaction.reactable.title %></a>
|
||||
</div>
|
||||
<% if params[:status] == "Open" || params[:status].blank? %>
|
||||
<div class="inner-row col-md-2">
|
||||
<%= form_for [:internal, reaction] do |f| %>
|
||||
<%= f.hidden_field :status, value: "confirmed" %>
|
||||
<%= f.submit "CONFIRMED", class: "btn btn-success btn-lg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="inner-row col-md-2">
|
||||
<%= form_for [:internal, reaction] do |f| %>
|
||||
<%= f.hidden_field :status, value: "invalid" %>
|
||||
<%= f.submit "INVALID", class: "btn btn-danger btn-lg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<br>
|
||||
<% @feedback_messages.each do |feedback_message| %>
|
||||
<%= form_for [:internal, feedback_message] do |f| %>
|
||||
<%= render "feedback_message", f: f, feedback_message: feedback_message %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<br>
|
||||
<% @feedback_messages.each do |feedback_message| %>
|
||||
<%= form_for [:internal, feedback_message] do |f| %>
|
||||
<%= render "feedback_message", f: f, feedback_message: feedback_message %>
|
||||
<% end %>
|
||||
<br>
|
||||
<br>
|
||||
<% end %>
|
||||
<br>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>
|
||||
<style>
|
||||
textarea{
|
||||
textarea {
|
||||
height: 140px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -9,18 +9,18 @@
|
|||
<%= label_tag(:search, "Find by tag name:") %>
|
||||
<%= text_field_tag(:search, params[:search]) %>
|
||||
<% if params[:state].present? %>
|
||||
<%= hidden_field_tag(:state, params[:state]) %>
|
||||
<%= hidden_field_tag(:state, params[:state]) %>
|
||||
<% end %>
|
||||
<%= submit_tag("Search") %>
|
||||
<% end %>
|
||||
|
||||
<h3>
|
||||
<a href="/internal/tags"
|
||||
style="<%= "background: yellow" if params[:state].blank? %>">All</a> |
|
||||
<a href="/internal/tags?state=supported"
|
||||
style="<%= "background: yellow" if params[:state] == "supported" %>">Supported</a> |
|
||||
<a href="/internal/tags?state=unsupported"
|
||||
style="<%= "background: yellow" if params[:state] == "unsupported" %>">Unsupported</a> |
|
||||
<a href="/internal/tags"
|
||||
style="<%= "background: yellow" if params[:state].blank? %>">All</a> |
|
||||
<a href="/internal/tags?state=supported"
|
||||
style="<%= "background: yellow" if params[:state] == "supported" %>">Supported</a> |
|
||||
<a href="/internal/tags?state=unsupported"
|
||||
style="<%= "background: yellow" if params[:state] == "unsupported" %>">Unsupported</a> |
|
||||
</h3>
|
||||
|
||||
<%= paginate @tags %>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
<h1><a href="/t/<%= @tag.name %>" style="background:<%= @tag.bg_color_hex %>;color:<%= @tag.text_color_hex %>;">#<%= @tag.name %></a>, tagged <%= @tag.taggings_count %> times.</h1>
|
||||
<h1>
|
||||
<a href="/t/<%= @tag.name %>" style="background:<%= @tag.bg_color_hex %>;color:<%= @tag.text_color_hex %>;">#<%= @tag.name %></a>, tagged <%= @tag.taggings_count %> times.
|
||||
</h1>
|
||||
<% if @tag.tag_moderator_ids.any? %>
|
||||
<p><strong>Moderators: </strong></p>
|
||||
<% else %>
|
||||
|
|
@ -6,7 +8,7 @@
|
|||
<% end %>
|
||||
<ul>
|
||||
<% @tag.tag_moderator_ids.each do |id| %>
|
||||
<%= form_for [:internal, @tag] do |f| %>
|
||||
<%= form_for [:internal, @tag] do |f| %>
|
||||
<li>
|
||||
<a href="/<%= User.find(id).username %>">@<%= User.find(id).username %></a>
|
||||
<%= f.hidden_field :remove_moderator_id, value: id %>
|
||||
|
|
|
|||
|
|
@ -1,43 +1,43 @@
|
|||
<% if @user.seeking_mentorship && @user.mentee_description.present? && !@user.banned_from_mentorship %>
|
||||
<% if @user.seeking_mentorship && @user.mentee_description.present? && !@user.banned_from_mentorship %>
|
||||
<h2> Mentee Description </h2>
|
||||
<div class="row" style="font-size:0.85em;position:sticky;top:50px;background:white;z-index:1000;border:2px solid black">
|
||||
<div class="col-md-2">
|
||||
<img src="<%= @user.profile_image_90 %>" style="border-radius:100px;width:50px;height:50px;" />
|
||||
<br/>
|
||||
<a href="/<%= @user.username %>" target="_blank">@<%= @user.username %></a>
|
||||
<br/>
|
||||
</div>
|
||||
<div class="col-md-3" style="border-left:1px solid black">
|
||||
<h4>Tags</h4>
|
||||
<%= @user.cached_followed_tag_names.join(", ") %>
|
||||
</div>
|
||||
<div class="col-md-3" style="max-height: 22vh;overflow:auto">
|
||||
<h4>Mentee description</h4>
|
||||
<%= @user.mentee_description %>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<h4>Skills/Languages</h4>
|
||||
<%= @user.mostly_work_with %>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
</div>
|
||||
<div class="row" style="font-size:0.85em;position:sticky;top:50px;background:white;z-index:1000;border:2px solid black">
|
||||
<div class="col-md-2">
|
||||
<img src="<%= @user.profile_image_90 %>" style="border-radius:100px;width:50px;height:50px;" />
|
||||
<br />
|
||||
<a href="/<%= @user.username %>" target="_blank">@<%= @user.username %></a>
|
||||
<br />
|
||||
</div>
|
||||
<div class="col-md-3" style="border-left:1px solid black">
|
||||
<h4>Tags</h4>
|
||||
<%= @user.cached_followed_tag_names.join(", ") %>
|
||||
</div>
|
||||
<div class="col-md-3" style="max-height: 22vh;overflow:auto">
|
||||
<h4>Mentee description</h4>
|
||||
<%= @user.mentee_description %>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<h4>Skills/Languages</h4>
|
||||
<%= @user.mostly_work_with %>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2> Possible Mentors </h2>
|
||||
<% count = 0 %>
|
||||
<% MentorRelationship.
|
||||
unmatched_mentors.where.not(mentor_form_updated_at: nil, id: @user.id, mentor_description: [nil,""]).
|
||||
order("mentor_form_updated_at DESC").limit(175).
|
||||
sort_by { |possible_mentor| UserSimilarity.new(@user, possible_mentor).score }.reverse.
|
||||
first(40).each do |possible_mentor| %>
|
||||
unmatched_mentors.where.not(mentor_form_updated_at: nil, id: @user.id, mentor_description: [nil, ""]).
|
||||
order("mentor_form_updated_at DESC").limit(175).
|
||||
sort_by {|possible_mentor| UserSimilarity.new(@user, possible_mentor).score}.reverse.
|
||||
first(40).each do |possible_mentor| %>
|
||||
|
||||
<% if !possible_mentor.banned_from_mentorship %>
|
||||
<div class="row" style="font-size:0.9em">
|
||||
<div class="col-md-2">
|
||||
<img src="<%= possible_mentor.profile_image_90 %>" style="border-radius:100px;width:50px;height:50px;" />
|
||||
<br/>
|
||||
<br />
|
||||
<a href="/<%= possible_mentor.username %>" target="_blank">@<%= possible_mentor.username %></a>
|
||||
<br/>
|
||||
<br />
|
||||
<a href="/internal/users/<%= possible_mentor.id %>" target="_blank">Internal Profile (id #<%= possible_mentor.id %>)</a>
|
||||
</div>
|
||||
<div class="col-md-3" style="border-left:1px solid black">
|
||||
|
|
@ -63,4 +63,4 @@
|
|||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<h1>
|
||||
<%= @user.name %><a href="/<%= @user.username %>" target="_blank"> (@<%= @user.username %>)</a>
|
||||
<%= @user.name %><a href="/<%= @user.username %>" target="_blank"> (@<%= @user.username %>)</a>
|
||||
</h1>
|
||||
<p><u><a style="color: green" href="/internal/users/<%= @user.id %>">click here view user details & take other actions</a></u></p>
|
||||
<p>
|
||||
<u><a style="color: green" href="/internal/users/<%= @user.id %>">click here view user details & take other actions</a></u>
|
||||
</p>
|
||||
<p><em>Member since <%= @user.created_at.strftime("%b %e '%y") %></em></p>
|
||||
<p><strong>Activity:</strong></p>
|
||||
<ul>
|
||||
|
|
@ -9,32 +11,39 @@
|
|||
<li><%= @user.articles.size %> articles</li>
|
||||
<li><%= @user.reactions.size %> reactions</li>
|
||||
</ul>
|
||||
<div class="row">
|
||||
<h2>Banish User</h2>
|
||||
<% if @user.banished? %>
|
||||
<p>User has been banished.</p>
|
||||
<% elsif @user.comments.where("created_at < ?", 100.days.ago).empty? && @user.created_at < 100.days.ago %>
|
||||
<p><em>This is extremely destructive. Banishing will delete all the user's existing content and change their username to @spam_###.</em></p>
|
||||
<p><strong>Do not do this lightly.</strong></p>
|
||||
<%= form_for(@user, url: banish_internal_user_path(@user), html: { method: :post, onsumbit: "return confirm('Are you sure? This is extremely destructive and irreversible. Banishing will delete all articles and turn their username into @spam_###')" }) do %>
|
||||
<button class="btn btn-danger" style="font-size:2em;">Banish User for Spam</button>
|
||||
<% end %>
|
||||
<% elsif current_user.has_role?(:super_admin) %>
|
||||
<p><strong>This is not a new user.</strong> You are only allowed to take this action because you are a <strong>super admin.</strong></p>
|
||||
<p><em>This is extremely destructive. Banishing will delete all the user's existing content and change their username to @spam_###.</em></p>
|
||||
<p><strong>Do not do this lightly.</strong></p>
|
||||
<%= form_for(@user, url: banish_internal_user_path(@user), html: { method: :post, onsumbit: "return confirm('Are you sure? This is extremely destructive and irreversible.Banishing will delete all articles and turn their username into @spam_###')" }) do %>
|
||||
<button class="btn btn-danger" style="font-size:2em;">Banish User for Spam!</button>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p><em>This is not a new user so you'll need to contact a super admin to banish this user.</em></p>
|
||||
<div class="row">
|
||||
<h2>Banish User</h2>
|
||||
<% if @user.banished? %>
|
||||
<p>User has been banished.</p>
|
||||
<% elsif @user.comments.where("created_at < ?", 100.days.ago).empty? && @user.created_at < 100.days.ago %>
|
||||
<p>
|
||||
<em>This is extremely destructive. Banishing will delete all the user's existing content and change their username to @spam_###.</em>
|
||||
</p>
|
||||
<p><strong>Do not do this lightly.</strong></p>
|
||||
<%= form_for(@user, url: banish_internal_user_path(@user), html: { method: :post, onsumbit: "return confirm('Are you sure? This is extremely destructive and irreversible. Banishing will delete all articles and turn their username into @spam_###')" }) do %>
|
||||
<button class="btn btn-danger" style="font-size:2em;">Banish User for Spam</button>
|
||||
<% end %>
|
||||
</div>
|
||||
<% elsif current_user.has_role?(:super_admin) %>
|
||||
<p><strong>This is not a new user.</strong> You are only allowed to take this action because you are a
|
||||
<strong>super admin.</strong></p>
|
||||
<p>
|
||||
<em>This is extremely destructive. Banishing will delete all the user's existing content and change their username to @spam_###.</em>
|
||||
</p>
|
||||
<p><strong>Do not do this lightly.</strong></p>
|
||||
<%= form_for(@user, url: banish_internal_user_path(@user), html: { method: :post, onsumbit: "return confirm('Are you sure? This is extremely destructive and irreversible.Banishing will delete all articles and turn their username into @spam_###')" }) do %>
|
||||
<button class="btn btn-danger" style="font-size:2em;">Banish User for Spam!</button>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p><em>This is not a new user so you'll need to contact a super admin to banish this user.</em></p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<h2>Fully Delete User</h2>
|
||||
<% if current_user.has_role?(:super_admin) %>
|
||||
<p>This will <strong>completely destroy the user</strong> and all of their activity from our database. This action is irreversible.</p>
|
||||
<p>This will
|
||||
<strong>completely destroy the user</strong> and all of their activity from our database. This action is irreversible.
|
||||
</p>
|
||||
<p><strong>Do not do this lightly.</strong></p>
|
||||
<%= form_for(@user, url: full_delete_internal_user_path(@user), html: { method: :post, onsubmit: "return confirm('Are you sure? This is extremely destructive and irreversible.')" }) do %>
|
||||
<button class="btn btn-danger" style="font-size:2em;">Fully Delete User & All Activity</button>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<%= label_tag(:search, "Find by:") %>
|
||||
<%= text_field_tag(:search, params[:search]) %>
|
||||
<% if params[:state].present? %>
|
||||
<%= hidden_field_tag(:state, params[:state]) %>
|
||||
<%= hidden_field_tag(:state, params[:state]) %>
|
||||
<% end %>
|
||||
<%= submit_tag("Search") %>
|
||||
<em style="font-size:0.78em;">(<b>fields:</b> name, username, twitter_username, github_username, email)</em>
|
||||
|
|
|
|||
|
|
@ -3,27 +3,37 @@
|
|||
width: calc(20% - 1rem);
|
||||
float: left;
|
||||
}
|
||||
|
||||
dd {
|
||||
width: calc(80% - 1rem)
|
||||
}
|
||||
</style>
|
||||
<div class="row">
|
||||
<h1>
|
||||
<%= @user.name %><a href="/<%= @user.username %>" target="_blank"> (@<%= @user.username %>)</a>
|
||||
<%= @user.name %><a href="/<%= @user.username %>" target="_blank"> (@<%= @user.username %>)</a>
|
||||
</h1>
|
||||
<p><u><a style="color: red" href="/internal/users/<%= @user.id %>/edit">click here to banish or delete user</a></u></p>
|
||||
<p><u><a style="color: red" href="/internal/users/<%= @user.id %>/edit">click here to banish or delete user</a></u>
|
||||
</p>
|
||||
<p><em>Member since <%= @user.created_at.strftime("%b %e '%y") %></em></p>
|
||||
<p><strong><u>General Info</u></strong></p>
|
||||
<dl>
|
||||
<dt>ID:</dt><dd><%= @user.id %></span></dd>
|
||||
<dt>Username:</dt><dd><%= @user.username %></dd>
|
||||
<dt>Name:</dt><dd><%= @user.name %></dd>
|
||||
<dt>Email:</dt><dd><%= @user.email %></dd>
|
||||
<dt>Twitter:</dt><dd><%= @user.twitter_username || "N/A" %></dd>
|
||||
<dt>GitHub:</dt><dd><%= @user.github_username || "N/A" %></dd>
|
||||
<dt>Sustaining Member:</dt><dd><%= @user.a_sustaining_member? %></dd>
|
||||
<dt>ID:</dt>
|
||||
<dd><%= @user.id %></span></dd>
|
||||
<dt>Username:</dt>
|
||||
<dd><%= @user.username %></dd>
|
||||
<dt>Name:</dt>
|
||||
<dd><%= @user.name %></dd>
|
||||
<dt>Email:</dt>
|
||||
<dd><%= @user.email %></dd>
|
||||
<dt>Twitter:</dt>
|
||||
<dd><%= @user.twitter_username || "N/A" %></dd>
|
||||
<dt>GitHub:</dt>
|
||||
<dd><%= @user.github_username || "N/A" %></dd>
|
||||
<dt>Sustaining Member:</dt>
|
||||
<dd><%= @user.a_sustaining_member? %></dd>
|
||||
<% if @user.a_sustaining_member? %>
|
||||
<dt>Monthly Dues:</dt><dd><%= @user.monthly_dues %></dd>
|
||||
<dt>Monthly Dues:</dt>
|
||||
<dd><%= @user.monthly_dues %></dd>
|
||||
<% end %>
|
||||
</dl>
|
||||
|
||||
|
|
@ -44,19 +54,19 @@
|
|||
<p>(view full history in notes below)</p>
|
||||
<ul>
|
||||
<% @user.roles.each do |role| %>
|
||||
<li><%= role.name %> <em><%= "- " + Tag.find(role.resource_id).name if role.resource_id.present? %></em></li>
|
||||
<li><%= role.name %> <em><%= "- " + Tag.find(role.resource_id).name if role.resource_id.present? %></em></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<h3><u>Privileges</u></h3>
|
||||
<% if !@user.banned && !@user.warned %>
|
||||
<%= form_for [:internal, @user] do |f| %>
|
||||
<p>Add Trusted Role (Community Moderator)
|
||||
<% if !@user.banned && !@user.warned %>
|
||||
<%= form_for [:internal, @user] do |f| %>
|
||||
<p>Add Trusted Role (Community Moderator)
|
||||
<%= f.check_box :trusted_user, checked: @user.trusted %></p>
|
||||
<%= f.submit "Update Privileges" %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
User must be in good standing to have heigtened privileges of any kind.
|
||||
<%= f.submit "Update Privileges" %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
User must be in good standing to have heigtened privileges of any kind.
|
||||
<% end %>
|
||||
<br>
|
||||
<h3><u>Warn or Ban User</u></h3>
|
||||
<% if @user.banned %>
|
||||
|
|
@ -84,30 +94,30 @@
|
|||
<% if @user.mentors.count > 0 %>
|
||||
<h4> Mentor(s):</h4>
|
||||
<ul>
|
||||
<% @user_mentor_relationships.each do |relationship| %>
|
||||
<li>
|
||||
<a href="https://dev.to/<%= User.find(relationship.mentor_id).username %>" target=">blank">@<%= User.find(relationship.mentor_id).username %></a>
|
||||
<% if relationship.active %>
|
||||
<span style="color:green"><em> (active)</em></span>
|
||||
<% else %>
|
||||
<span style="color:red"><em> (inactive)</em></span>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<% @user_mentor_relationships.each do |relationship| %>
|
||||
<li>
|
||||
<a href="https://dev.to/<%= User.find(relationship.mentor_id).username %>" target=">blank">@<%= User.find(relationship.mentor_id).username %></a>
|
||||
<% if relationship.active %>
|
||||
<span style="color:green"><em> (active)</em></span>
|
||||
<% else %>
|
||||
<span style="color:red"><em> (inactive)</em></span>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% elsif @user.mentees.count > 0 %>
|
||||
<h4>Mentee(s):</h4>
|
||||
<ul>
|
||||
<% @user_mentee_relationships.each do |relationship| %>
|
||||
<li>
|
||||
<a href="https://dev.to/<%= User.find(relationship.mentee_id).username %>" target=">blank">@<%= User.find(relationship.mentee_id).username %></a>
|
||||
<% if relationship.active %>
|
||||
<span style="color:green"><em> (active)</em></span>
|
||||
<% else %>
|
||||
<span style="color:red"><em> (inactive)</em></span>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<% @user_mentee_relationships.each do |relationship| %>
|
||||
<li>
|
||||
<a href="https://dev.to/<%= User.find(relationship.mentee_id).username %>" target=">blank">@<%= User.find(relationship.mentee_id).username %></a>
|
||||
<% if relationship.active %>
|
||||
<span style="color:green"><em> (active)</em></span>
|
||||
<% else %>
|
||||
<span style="color:red"><em> (inactive)</em></span>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
<%= form_for [:internal, @user] do |f| %>
|
||||
|
|
@ -126,7 +136,8 @@
|
|||
<% if @user.notes.count > 0 %>
|
||||
<% @user.notes.each do |note| %>
|
||||
<p><em><%= note.created_at.strftime("%d %B %Y %H:%M UTC") %> by <%= User.find(note.author_id).username %></em> -
|
||||
<% if !note.reason.blank? %><strong><%= note.reason %>:</strong> <% end %><%= note.content %></p>
|
||||
<% if !note.reason.blank? %><strong><%= note.reason %>:</strong>
|
||||
<% end %><%= note.content %></p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p><em>No notes yet!</em></p>
|
||||
|
|
@ -145,7 +156,8 @@
|
|||
<h2><u>Recent Emails</u></h2>
|
||||
<ul>
|
||||
<% @user.email_messages.order("sent_at DESC").limit(50).each do |email| %>
|
||||
<li><a href="/admin/email_messages/<%= email.id %>"><%= email.subject %></a> <em><%= email.sent_at&.strftime("%b %e '%y") %></em></li>
|
||||
<li><a href="/admin/email_messages/<%= email.id %>"><%= email.subject %></a>
|
||||
<em><%= email.sent_at&.strftime("%b %e '%y") %></em></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<br>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@
|
|||
<h1>All Welcome Threads</h1>
|
||||
<hr>
|
||||
<% @daily_threads.each do |thread| %>
|
||||
<a href="<%= thread.path %>"><%= thread.title %></a>
|
||||
<hr style="border-top: dotted 1px;">
|
||||
<a href="<%= thread.path %>"><%= thread.title %></a>
|
||||
<hr style="border-top: dotted 1px;">
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<footer>
|
||||
<div id="footer-container" class="container <%= "centered-footer" unless current_page.include?("stories-show") %>">
|
||||
<div class="inner-footer-container">
|
||||
<a href="/">Home</a> <a href="/about">About</a> <a href="/privacy">Privacy Policy</a> <a href="/terms">Terms of Use</a> <a href="/contact">Contact</a> <a href="/code-of-conduct">Code of Conduct</a>
|
||||
<a href="/">Home</a> <a href="/about">About</a> <a href="/privacy">Privacy Policy</a>
|
||||
<a href="/terms">Terms of Use</a> <a href="/contact">Contact</a> <a href="/code-of-conduct">Code of Conduct</a>
|
||||
DEV Community copyright 2016 - <%= Time.new.year %> 🔥
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
</div>
|
||||
<div class="global-signup-modal--inner-a">
|
||||
<%= image_tag(cl_image_path(asset_path("/assets/sloan.png"),
|
||||
type: "fetch",
|
||||
width: 300,
|
||||
crop: "imagga_scale",
|
||||
quality: "auto",
|
||||
flags: "progressive",
|
||||
fetch_format: "auto",
|
||||
sign_url: true), class: "sloan", alt: "sloth-mascot") %>
|
||||
type: "fetch",
|
||||
width: 300,
|
||||
crop: "imagga_scale",
|
||||
quality: "auto",
|
||||
flags: "progressive",
|
||||
fetch_format: "auto",
|
||||
sign_url: true), class: "sloan", alt: "sloth-mascot") %>
|
||||
<h1>Join our DEV Community :)</h1>
|
||||
<p>
|
||||
We’re a place where coders share, stay up-to-date and grow their careers.
|
||||
|
|
|
|||
|
|
@ -5,16 +5,16 @@
|
|||
<%= Rails.application.assets["scaffolds.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["top-bar.css"].to_s.html_safe %>
|
||||
<% if @article_show %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["comments.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["more-articles.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["syntax.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["ltags/LiquidTags.scss"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["sticky-nav.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["comments.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["more-articles.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["syntax.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["ltags/LiquidTags.scss"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["sticky-nav.css"].to_s.html_safe %>
|
||||
<% else %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["podcast-episodes-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["comments.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["podcast-episodes-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["comments.css"].to_s.html_safe %>
|
||||
<% end %>
|
||||
<%= Rails.application.assets["footer.css"].to_s.html_safe %>
|
||||
</style>
|
||||
|
|
@ -25,13 +25,13 @@
|
|||
<%= Rails.application.assets["articles.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["top-bar.css"].to_s.html_safe %>
|
||||
<% unless @home_page %>
|
||||
<%= Rails.application.assets["user-profile-header.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["sidebar-data.scss"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["index-comments.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["footer.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["user-profile-header.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["sidebar-data.scss"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["index-comments.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["footer.css"].to_s.html_safe %>
|
||||
<% end %>
|
||||
<% if @tag_model %>
|
||||
<%= Rails.application.assets["preact/sidebar-widget.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["preact/sidebar-widget.css"].to_s.html_safe %>
|
||||
<% end %>
|
||||
</style>
|
||||
<% elsif @notifications_index || @reading_list_items_index %>
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
<%= Rails.application.assets["ltags/LiquidTags.scss"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["syntax.css"].to_s.html_safe %>
|
||||
<% if view_class.include? "comments-settings" %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<%= Rails.application.assets["article-show.css"].to_s.html_safe %>
|
||||
<% end %>
|
||||
</style>
|
||||
<% elsif view_class.include? "registrations" %>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<div class="navbar-menu-wrapper" id="navbar-menu-wrapper">
|
||||
<button class="navigation-butt" id="navigation-butt" aria-label="Navigation">
|
||||
<% if user_signed_in? %>
|
||||
<div class="nav-profile-image-wrapper"><img alt="" class="nav-profile-image" id="nav-profile-image" />
|
||||
<div class="nav-profile-image-wrapper"><img alt="" class="nav-profile-image" id="nav-profile-image" /></div>
|
||||
<% else %>
|
||||
<%= inline_svg("menu.svg", class: "bars", size: "20% * 20%") %>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<title><%= title || "DEV Community" %></title>
|
||||
<% if internal_navigation? %>
|
||||
<style>
|
||||
.universal-page-content-wrapper{
|
||||
.universal-page-content-wrapper {
|
||||
visibility: hidden;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -20,16 +20,17 @@
|
|||
<%= render "layouts/styles" %>
|
||||
<style>
|
||||
.home {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
min-height: 440px;
|
||||
margin: auto;
|
||||
max-width: 1250px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
min-height: 440px;
|
||||
margin: auto;
|
||||
max-width: 1250px;
|
||||
}
|
||||
@media screen and (min-width: 950px){
|
||||
|
||||
@media screen and (min-width: 950px) {
|
||||
.home {
|
||||
margin-top: 26px;
|
||||
margin-top: 26px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -76,28 +77,28 @@
|
|||
<% end %>
|
||||
</head>
|
||||
<body data-user-status="<%= user_logged_in_status %>" data-pusher-key="<%= ApplicationConfig["PUSHER_KEY"] %>">
|
||||
<% unless internal_navigation? %>
|
||||
<div id="audiocontent">
|
||||
<%= yield(:audio) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% cache("application-top-bar--#{user_signed_in?}--#{internal_navigation?}", expires_in: 100.hours) do %>
|
||||
<%= render "layouts/top_bar" unless internal_navigation? %>
|
||||
<% end %>
|
||||
<div id="message-notice"></div>
|
||||
<div id="page-content" class="universal-page-content-wrapper <%= view_class %>" data-current-page="<%= current_page %>">
|
||||
<div id="page-content-inner">
|
||||
<%= yield %>
|
||||
</div>
|
||||
<% unless internal_navigation? %>
|
||||
<div id="audiocontent">
|
||||
<%= yield(:audio) %>
|
||||
</div>
|
||||
<% unless internal_navigation? %>
|
||||
<% cache("footer-and-signup-modal--#{user_signed_in?}--#{ApplicationConfig['DEPLOYMENT_SIGNATURE']}", expires_in: 200.hours) do %>
|
||||
<%= render "layouts/footer" %>
|
||||
<%= render "layouts/signup_modal" unless user_signed_in? %>
|
||||
<% end %>
|
||||
<div id="live-article-indicator" class="live-article-indicator"></div>
|
||||
<%= image_tag("twitter-logo.svg", class: "icon-img", style: "display:none") %>
|
||||
<%= image_tag("github-logo.svg", class: "icon-img", style: "display:none") %>
|
||||
<% end %>
|
||||
<% cache("application-top-bar--#{user_signed_in?}--#{internal_navigation?}", expires_in: 100.hours) do %>
|
||||
<%= render "layouts/top_bar" unless internal_navigation? %>
|
||||
<% end %>
|
||||
<div id="message-notice"></div>
|
||||
<div id="page-content" class="universal-page-content-wrapper <%= view_class %>" data-current-page="<%= current_page %>">
|
||||
<div id="page-content-inner">
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
<% unless internal_navigation? %>
|
||||
<% cache("footer-and-signup-modal--#{user_signed_in?}--#{ApplicationConfig['DEPLOYMENT_SIGNATURE']}", expires_in: 200.hours) do %>
|
||||
<%= render "layouts/footer" %>
|
||||
<%= render "layouts/signup_modal" unless user_signed_in? %>
|
||||
<% end %>
|
||||
<div id="live-article-indicator" class="live-article-indicator"></div>
|
||||
<%= image_tag("twitter-logo.svg", class: "icon-img", style: "display:none") %>
|
||||
<%= image_tag("github-logo.svg", class: "icon-img", style: "display:none") %>
|
||||
<% end %>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,125 +1,143 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<%= csrf_meta_tags %>
|
||||
<%= favicon_link_tag %>
|
||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<%= csrf_meta_tags %>
|
||||
<%= favicon_link_tag %>
|
||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
|
||||
|
||||
<title><%= controller_name %></title>
|
||||
<title><%= controller_name %></title>
|
||||
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||
<!-- Latest compiled and minified CSS -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||
|
||||
<!-- Optional theme -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||
<!-- Optional theme -->
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||
|
||||
<!-- Latest compiled and minified JavaScript -->
|
||||
<%= javascript_include_tag "internal" %>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> </head>
|
||||
<style>
|
||||
.starter-template{padding-top:60px;font-size:1.4em;}
|
||||
.row{
|
||||
margin-top:1vw;
|
||||
border:1px solid gray;
|
||||
padding:1vw;
|
||||
border-radius:3px;
|
||||
}
|
||||
.wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 20% 20% 20% 20% 20%;
|
||||
padding: 2px;
|
||||
}
|
||||
.grid-item {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.inner-row form{
|
||||
display:inline-block;
|
||||
}
|
||||
textarea {
|
||||
font-size: 12px;
|
||||
width: 75%;
|
||||
}
|
||||
.btn{
|
||||
min-width:100px;
|
||||
}
|
||||
.tab{
|
||||
padding-top:10px;
|
||||
padding-bottom:10px;
|
||||
border-bottom:10px solid white;
|
||||
}
|
||||
.tab-current{
|
||||
border-bottom:10px solid rgb(193, 209, 224);
|
||||
}
|
||||
.tab-current .btn{
|
||||
opacity:0.9;
|
||||
}
|
||||
.row-plain{
|
||||
padding:0;
|
||||
border:0;
|
||||
}
|
||||
.featured-bg{
|
||||
background:#bbffd2
|
||||
}
|
||||
.approved-bg{
|
||||
background:#92e8ae;
|
||||
border: 12px solid #ff9900;
|
||||
a{
|
||||
color:white !important;
|
||||
}
|
||||
}
|
||||
.highlighted-bg{
|
||||
background:#2effa8 !important;
|
||||
border:20px solid black;
|
||||
}
|
||||
.highlighted-border{
|
||||
border:20px solid black;
|
||||
}
|
||||
<!-- Latest compiled and minified JavaScript -->
|
||||
<%= javascript_include_tag "internal" %>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||
</head>
|
||||
<style>
|
||||
.starter-template {
|
||||
padding-top: 60px;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
.row {
|
||||
margin-top: 1vw;
|
||||
border: 1px solid gray;
|
||||
padding: 1vw;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Internal DEV</a>
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<% controller_names = %w(comments articles users members dogfood tags welcome broadcasts reports) %>
|
||||
<% controller_names.each do |name| %>
|
||||
<li class="<%= "active" if controller_name == name %>"><a href="/internal/<%= name %>"><%= name %></a></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
.wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 20% 20% 20% 20% 20%;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
<div class="container">
|
||||
.grid-item {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
<div class="starter-template">
|
||||
<% flash.each do |type, message| %>
|
||||
<div class="alert alert-<%= type %>">
|
||||
<button class="close" data-dismiss="alert">X</button>
|
||||
<%= message %>
|
||||
</div>
|
||||
.inner-row form {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-size: 12px;
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.btn {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
.tab {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 10px solid white;
|
||||
}
|
||||
|
||||
.tab-current {
|
||||
border-bottom: 10px solid rgb(193, 209, 224);
|
||||
}
|
||||
|
||||
.tab-current .btn {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.row-plain {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.featured-bg {
|
||||
background: #bbffd2
|
||||
}
|
||||
|
||||
.approved-bg {
|
||||
background: #92e8ae;
|
||||
border: 12px solid #ff9900;
|
||||
}
|
||||
|
||||
a {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.highlighted-bg {
|
||||
background: #2effa8 !important;
|
||||
border: 20px solid black;
|
||||
}
|
||||
|
||||
.highlighted-border {
|
||||
border: 20px solid black;
|
||||
}
|
||||
|
||||
</style>
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Internal DEV</a>
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<% controller_names = %w(comments articles users members dogfood tags welcome broadcasts reports) %>
|
||||
<% controller_names.each do |name| %>
|
||||
<li class="<%= "active" if controller_name == name %>"><a href="/internal/<%= name %>"><%= name %></a></li>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="starter-template">
|
||||
<% flash.each do |type, message| %>
|
||||
<div class="alert alert-<%= type %>">
|
||||
<button class="close" data-dismiss="alert">X</button>
|
||||
<%= message %>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
</div>
|
||||
|
||||
</div><!-- /.container -->
|
||||
</div><!-- /.container -->
|
||||
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,30 +1,32 @@
|
|||
<html>
|
||||
<body style='font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, sans-serif;'>
|
||||
<table style="width:100%;max-width:700px;margin:auto;font-size:18px">
|
||||
<tr>
|
||||
<td style="padding:4%;">
|
||||
<%= yield %>
|
||||
</td>
|
||||
</tr>
|
||||
<% if @user %>
|
||||
<tr>
|
||||
<td style="padding:3% 12% 2% 4%;font-size:18px;line-height:22px;color:#7d7d7d">
|
||||
<% if @user.twitter_username.blank? %>
|
||||
Reminder: You used <b>GitHub</b> to authenticate your account, so use that to sign in if prompted.
|
||||
<% else %>
|
||||
Reminder: You used <b>Twitter</b> to authenticate your account, so use that to sign in if prompted.
|
||||
<% end %>
|
||||
<br /><br />
|
||||
<div style="font-size:0.78em">
|
||||
<% if @unsubscribe %>
|
||||
<%= link_to "Unsubscribe", email_subscriptions_unsubscribe_url(ut: @unsubscribe), style: "color:#7d7d7d" %> | <a href="https://dev.to/settings/notifications" style="color:#7d7d7d">Adjust your email settings</a>
|
||||
<% else %>
|
||||
Don't want to get emails like this? Adjust your email settings at <a href="https://dev.to/settings/notifications">dev.to/settings/notifications</a>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
</body>
|
||||
<body style='font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, sans-serif;'>
|
||||
<table style="width:100%;max-width:700px;margin:auto;font-size:18px">
|
||||
<tr>
|
||||
<td style="padding:4%;">
|
||||
<%= yield %>
|
||||
</td>
|
||||
</tr>
|
||||
<% if @user %>
|
||||
<tr>
|
||||
<td style="padding:3% 12% 2% 4%;font-size:18px;line-height:22px;color:#7d7d7d">
|
||||
<% if @user.twitter_username.blank? %>
|
||||
Reminder: You used <b>GitHub</b> to authenticate your account, so use that to sign in if prompted.
|
||||
<% else %>
|
||||
Reminder: You used <b>Twitter</b> to authenticate your account, so use that to sign in if prompted.
|
||||
<% end %>
|
||||
<br /><br />
|
||||
<div style="font-size:0.78em">
|
||||
<% if @unsubscribe %>
|
||||
<%= link_to "Unsubscribe", email_subscriptions_unsubscribe_url(ut: @unsubscribe), style: "color:#7d7d7d" %> |
|
||||
<a href="https://dev.to/settings/notifications" style="color:#7d7d7d">Adjust your email settings</a>
|
||||
<% else %>
|
||||
Don't want to get emails like this? Adjust your email settings at
|
||||
<a href="https://dev.to/settings/notifications">dev.to/settings/notifications</a>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@
|
|||
DEV Digest is a new periodic email featuring the best posts from our community of developers.
|
||||
</b>
|
||||
<br /><br />
|
||||
Your digest is not yet customized. Follow the people and technologies on <a href="https://dev.to" style="text-decoration: none;">dev.to</a> that interest you in order to receive the most relevant posts in your inbox.
|
||||
Your digest is not yet customized. Follow the people and technologies on
|
||||
<a href="https://dev.to" style="text-decoration: none;">dev.to</a> that interest you in order to receive the most relevant posts in your inbox.
|
||||
<% else %>
|
||||
<% tip_rand = rand(5) %>
|
||||
<% if tip_rand == 0 %>
|
||||
|
|
|
|||
|
|
@ -1,106 +1,114 @@
|
|||
<img src="https://thepracticaldev.s3.amazonaws.com/i/186bp9xbue90w504wn97.png" style="height:200px; display: block; margin-left: auto; margin-right: auto;" />
|
||||
<% if @subscription_type == "triple_unicorn_member" %>
|
||||
<p>
|
||||
Whoa! You’re the best, and so generous. We tip our hats to you.
|
||||
Whoa! You’re the best, and so generous. We tip our hats to you.
|
||||
</p>
|
||||
<p>
|
||||
As a triple-unicorn, you have full access to all dev.to workshops! We’ll be releasing our workshop schedule Early February.
|
||||
As a triple-unicorn, you have full access to all dev.to workshops! We’ll be releasing our workshop schedule Early February.
|
||||
</p>
|
||||
<p>
|
||||
You’ll see your name at the featured position on our ‘Wall of Patrons and Scholars’ within the next few days, and you can claim your swag pack now by visiting your <a href="https://dev.to/settings/membership">settings page</a>.
|
||||
You’ll see your name at the featured position on our ‘Wall of Patrons and Scholars’ within the next few days, and you can claim your swag pack now by visiting your
|
||||
<a href="https://dev.to/settings/membership">settings page</a>.
|
||||
</p>
|
||||
<p>
|
||||
We’ll be in touch to schedule a time for all of us to chat together, and we’ll also be putting together some additional goodies.
|
||||
We’ll be in touch to schedule a time for all of us to chat together, and we’ll also be putting together some additional goodies.
|
||||
</p>
|
||||
<p>
|
||||
Thank you again for supporting The DEV Community. Your membership means a lot to us, and all the recipients of our scholarship fund. You went above and beyond on this one.
|
||||
Thank you again for supporting The DEV Community. Your membership means a lot to us, and all the recipients of our scholarship fund. You went above and beyond on this one.
|
||||
</p>
|
||||
<% elsif @subscription_type == "level_4_member" %>
|
||||
<p>
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
</p>
|
||||
<p>
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your <a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your
|
||||
<a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
</p>
|
||||
<p>
|
||||
On your <a href="https://dev.to/settings/membership">membership settings page</a>, you’ll find the coupon that you’ll use to request your exclusive sticker pack and t-shirt combo.
|
||||
On your
|
||||
<a href="https://dev.to/settings/membership">membership settings page</a>, you’ll find the coupon that you’ll use to request your exclusive sticker pack and t-shirt combo.
|
||||
</p>
|
||||
<p>
|
||||
Your name will appear on our “Wall of Patrons and Scholars” soon, and you’ll also be receiving full access to all dev.to workshops! We’ll be releasing our first workshop schedule in early February.
|
||||
Your name will appear on our “Wall of Patrons and Scholars” soon, and you’ll also be receiving full access to all dev.to workshops! We’ll be releasing our first workshop schedule in early February.
|
||||
</p>
|
||||
<p>
|
||||
Above all, thank you for supporting The DEV Community. Your additional contribution means so much to us, and to all the recipients of our scholarship fund. You really went above and beyond on this one.
|
||||
Above all, thank you for supporting The DEV Community. Your additional contribution means so much to us, and to all the recipients of our scholarship fund. You really went above and beyond on this one.
|
||||
</p>
|
||||
<p>
|
||||
With sincere gratitude...
|
||||
With sincere gratitude...
|
||||
</p>
|
||||
<p>
|
||||
❤️
|
||||
<br />
|
||||
PBJ
|
||||
❤️
|
||||
<br />
|
||||
PBJ
|
||||
</p>
|
||||
<p>
|
||||
PS — feel free to reply to this email with any questions.
|
||||
PS — feel free to reply to this email with any questions.
|
||||
</p>
|
||||
<% elsif @subscription_type == "level_3_member" %>
|
||||
<p>
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
</p>
|
||||
<p>
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your <a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your
|
||||
<a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
</p>
|
||||
<p>
|
||||
On your membership <a href="https://dev.to/settings/membership">settings page</a>, you’ll find the coupon that you’ll use to request your exclusive sticker pack and t-shirt combo.
|
||||
On your membership
|
||||
<a href="https://dev.to/settings/membership">settings page</a>, you’ll find the coupon that you’ll use to request your exclusive sticker pack and t-shirt combo.
|
||||
</p>
|
||||
<p>
|
||||
Your name will appear on our “Wall of Patrons and Scholars” soon, and you’ll also be receiving full access to all dev.to workshops! We’ll be releasing our first workshop schedule in early February.
|
||||
Your name will appear on our “Wall of Patrons and Scholars” soon, and you’ll also be receiving full access to all dev.to workshops! We’ll be releasing our first workshop schedule in early February.
|
||||
</p>
|
||||
<p>
|
||||
Feel free to reply to this email with any questions :)
|
||||
Feel free to reply to this email with any questions :)
|
||||
</p>
|
||||
<p>
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
</p>
|
||||
<% elsif @subscription_type == "level_2_member" %>
|
||||
<p>
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
</p>
|
||||
<p>
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your <a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your
|
||||
<a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
</p>
|
||||
<p>
|
||||
On your <a href="https://dev.to/settings/membership">membership settings</a> page, you’ll find the coupon that you’ll use to request your exclusive sticker pack. Within the next few days, you’ll be appearing on our ‘Wall of Patrons and Scholars.’
|
||||
On your
|
||||
<a href="https://dev.to/settings/membership">membership settings</a> page, you’ll find the coupon that you’ll use to request your exclusive sticker pack. Within the next few days, you’ll be appearing on our ‘Wall of Patrons and Scholars.’
|
||||
</p>
|
||||
<p>
|
||||
Feel free to reply to this email with any questions :)
|
||||
Feel free to reply to this email with any questions :)
|
||||
</p>
|
||||
<p>
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
</p>
|
||||
<% elsif @subscription_type == "level_1_member" %>
|
||||
<p>
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
Thank you for becoming a DEV sustaining member. Your support means the world to us.
|
||||
</p>
|
||||
<p>
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your <a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
As part of your membership, you’ll have early access to beta features on the site. For instance, post analytics have now been added to your
|
||||
<a href="https://dev.to/dashboard/">dashboard</a>.
|
||||
</p>
|
||||
<p>
|
||||
Within the next few days, you’ll also appear on our ‘Wall of Patrons and Scholars.’
|
||||
Within the next few days, you’ll also appear on our ‘Wall of Patrons and Scholars.’
|
||||
</p>
|
||||
<p>
|
||||
Feel free to reply to this email with any questions :)
|
||||
Feel free to reply to this email with any questions :)
|
||||
</p>
|
||||
<p>
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
Thanks again! ❤️
|
||||
<br />
|
||||
PBJ
|
||||
</p>
|
||||
<% end %>
|
||||
<h2 style="font-size:25px;">Thank you so much for your support.</h2>
|
||||
<p>
|
||||
Visit <a href="https://dev.to/settings/membership">Your membership settings page</a> for all details.
|
||||
Visit <a href="https://dev.to/settings/membership">Your membership settings page</a> for all details.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<p>
|
||||
Your DEV sustaining membership has been cancelled. Thank you so much for your support to date.
|
||||
Your DEV sustaining membership has been cancelled. Thank you so much for your support to date.
|
||||
</p>
|
||||
<p>
|
||||
If you have any feedback that can help us improve the membership experience, please feel free to reply to this email.
|
||||
If you have any feedback that can help us improve the membership experience, please feel free to reply to this email.
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
Thanks again,
|
||||
<br />
|
||||
PBJ
|
||||
Thanks again,
|
||||
<br />
|
||||
PBJ
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
If you could send feedback to yo@dev.to to help us improve it would be much appreciated.
|
||||
If you could send feedback to yo@dev.to to help us improve it would be much appreciated.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<img src="<%= asset_path "sustaining-membership.svg" %>" style="height:200px; display: block; margin-left: auto; margin-right: auto;" />
|
||||
<p>
|
||||
Your DEV sustaining membership monthly contribution amount has been updated. Be sure to check your <a href="https://dev.to/settings/membership">membership settings</a> page to see the most up-to-date information.
|
||||
Your DEV sustaining membership monthly contribution amount has been updated. Be sure to check your
|
||||
<a href="https://dev.to/settings/membership">membership settings</a> page to see the most up-to-date information.
|
||||
</p>
|
||||
<p>
|
||||
Thank you so much for the support, and please email members@dev.to with any questions.
|
||||
Thank you so much for the support, and please email members@dev.to with any questions.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<h3 style="font-weight:300">Your content has been exported.</h3>
|
||||
<p>
|
||||
Please check the attached file.
|
||||
Please check the attached file.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
Hey <b>@<%= @mentee.username %></b>!
|
||||
</p>
|
||||
<p>
|
||||
Let me get straight to the point: your mentor is <b><a href="https://dev.to/<%= @mentor.username %>">@<%= @mentor.username %></a></b>. We have had you two automatically follow each other, so you can find them on DEV Connect, and introduce yourself!
|
||||
Let me get straight to the point: your mentor is
|
||||
<b><a href="https://dev.to/<%= @mentor.username %>">@<%= @mentor.username %></a></b>. We have had you two automatically follow each other, so you can find them on DEV Connect, and introduce yourself!
|
||||
</p>
|
||||
<p>
|
||||
A few notes:
|
||||
|
|
@ -12,7 +13,8 @@
|
|||
Every person is different so every mentor/mentee relationship is unique. We expect some mentorships to last longer than others and hope that at the very least, you’ll have made a solid new connection.
|
||||
</li>
|
||||
<li>
|
||||
We expect everyone to abide by our <a href="https://dev.to/code-of-conduct">Code of Conduct</a>, especially in this setting. Should your mentor demonstrate inappropriate behavior, please contact us immediately.
|
||||
We expect everyone to abide by our
|
||||
<a href="https://dev.to/code-of-conduct">Code of Conduct</a>, especially in this setting. Should your mentor demonstrate inappropriate behavior, please contact us immediately.
|
||||
</li>
|
||||
<li>
|
||||
If you feel like this was a mismatch, or if your mentor is unresponsive after several days, let us know.
|
||||
|
|
@ -21,7 +23,8 @@
|
|||
We highly recommend setting goals and expectations with your mentor from Day 1.
|
||||
</li>
|
||||
<li>
|
||||
To help you all get started, we’ve put together some <a href="https://dev.to/jess/mentorship-resources-19p0">resources</a>.
|
||||
To help you all get started, we’ve put together some
|
||||
<a href="https://dev.to/jess/mentorship-resources-19p0">resources</a>.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@ Hey!
|
|||
|
||||
Let me get straight to the point: your mentor is: https://dev.to/<%= @mentor.username %>. We have had you two automatically follow each other, so you can find them on DEV Connect, and introduce yourself!
|
||||
|
||||
A few notes:
|
||||
A few notes:
|
||||
- Every person is different so every mentor/mentee relationship is unique. We expect some mentorships to last longer than others and hope that at the very least, you’ll have made a solid new connection.
|
||||
- We expect everyone to abide by our Code of Conduct: https://dev.to/code-of-conduct, especially in this setting. Should your mentor demonstrate inappropriate behavior, please contact us immediately.
|
||||
- If you feel like this was a mismatch, or if your mentor is unresponsive after several days, let us know.
|
||||
- We highly recommend setting goals and expectations with your mentor from Day 1.
|
||||
- If you feel like this was a mismatch, or if your mentor is unresponsive after several days, let us know.
|
||||
- We highly recommend setting goals and expectations with your mentor from Day 1.
|
||||
- To help you all get started, we’ve put together some resources: https://dev.to/jess/mentorship-resources-19p0
|
||||
|
||||
Thanks again for participating in our program.
|
||||
Thanks again for participating in our program.
|
||||
|
||||
Good luck!
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,21 @@
|
|||
<p>
|
||||
Hey!
|
||||
Hey!
|
||||
</p>
|
||||
<p>
|
||||
Let me get straight to the point: your mentee is <b><a href="https://dev.to/<%= @mentee.username %>">@<%= @mentee.username %></a></b>. We had you two automatically follow each other, so you can find them <b><a href="https://dev.to/connect">DEV Connect</a></b>, and introduce yourself!
|
||||
Let me get straight to the point: your mentee is
|
||||
<b><a href="https://dev.to/<%= @mentee.username %>">@<%= @mentee.username %></a></b>. We had you two automatically follow each other, so you can find them
|
||||
<b><a href="https://dev.to/connect">DEV Connect</a></b>, and introduce yourself!
|
||||
</p>
|
||||
<p>
|
||||
A few notes:
|
||||
A few notes:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Every person is different so every mentor/mentee relationship is unique. We expect some mentorships to last longer than others and hope that at the very least, you’ll have made a solid new connection.
|
||||
</li>
|
||||
<li>
|
||||
We expect everyone to abide by our <b><a href="https://dev.to/code-of-conduct">Code of Conduct</a></b>, especially in this setting. Should your mentee demonstrate inappropriate behavior, please contact us immediately.
|
||||
We expect everyone to abide by our
|
||||
<b><a href="https://dev.to/code-of-conduct">Code of Conduct</a></b>, especially in this setting. Should your mentee demonstrate inappropriate behavior, please contact us immediately.
|
||||
</li>
|
||||
<li>
|
||||
If you feel like this was a mismatch, or if your mentee is unresponsive after several days, let us know.
|
||||
|
|
@ -21,13 +24,14 @@ A few notes:
|
|||
We highly recommend setting goals and expectations with your mentee from Day 1.
|
||||
</li>
|
||||
<li>
|
||||
To help you all get started, we’ve put together some <b><a href="https://dev.to/jess/mentorship-resources-19p0">Mentorship Resources</a></b>
|
||||
To help you all get started, we’ve put together some
|
||||
<b><a href="https://dev.to/jess/mentorship-resources-19p0">Mentorship Resources</a></b>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Thank you for volunteering your time to help someone along in their career. As this is the very first iteration of DEV Mentorships, please let us know if there’s anything we can do to better support you and your mentee.
|
||||
Thank you for volunteering your time to help someone along in their career. As this is the very first iteration of DEV Mentorships, please let us know if there’s anything we can do to better support you and your mentee.
|
||||
</p>
|
||||
<p>
|
||||
Thanks again. You are awesome.
|
||||
Thanks again. You are awesome.
|
||||
</p>
|
||||
Liana
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ Congratulations, <%= @user.name %>! You got the <%= @badge.title %> badge! Be su
|
|||
|
||||
<%= strip_tags @badge_achievement.rewarding_context_message %>
|
||||
|
||||
https://dev.to/<%= @user.username%>
|
||||
https://dev.to/<%= @user.username %>
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@
|
|||
<h3 style="font-weight:600;font-size:0.95em;color:#3ac1b4">You have <%= Follow.where(followable_id: @user.id, followable_type: "User").where("created_at > ?", 24.hours.ago).size %> new DEV followers in the past day!</h3>
|
||||
<% end %>
|
||||
|
||||
<h2 style="font-size:32px;"><a href="https://dev.to/<%= @follower.username %>"><%= @follower.name %></a> just followed you 🤗</h2>
|
||||
<h3 style="font-weight:600">You now have <%= pluralize(@user.followers_count, "total follower") %>. See all of your recent followers <a href="https://dev.to/dashboard/user_followers">right here</a>.</h3>
|
||||
<h2 style="font-size:32px;">
|
||||
<a href="https://dev.to/<%= @follower.username %>"><%= @follower.name %></a> just followed you 🤗</h2>
|
||||
<h3 style="font-weight:600">You now have <%= pluralize(@user.followers_count, "total follower") %>. See all of your recent followers
|
||||
<a href="https://dev.to/dashboard/user_followers">right here</a>.</h3>
|
||||
<p>
|
||||
When someone follows you on <a href="https://dev.to">dev.to</a>, your posts will be prioritized in their feed and notifications. The perks of popularity I suppose.
|
||||
When someone follows you on
|
||||
<a href="https://dev.to">dev.to</a>, your posts will be prioritized in their feed and notifications. The perks of popularity I suppose.
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,16 @@
|
|||
<h2 style="font-size:25px;"><a href="https://dev.to/<%= @mentioner.username %>"><%= @mentioner.name %></a> just mentioned you in their <%= @mention.mentionable_type.downcase %>!</h2>
|
||||
<table><tr><td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
<h2 style="font-size:25px;">
|
||||
<a href="https://dev.to/<%= @mentioner.username %>"><%= @mentioner.name %></a> just mentioned you in their <%= @mention.mentionable_type.downcase %>!
|
||||
</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
|
||||
</td></tr><tr><td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<%= @mentionable.processed_html.html_safe %>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @mention.mentionable.path %>'>view on dev.to</a>
|
||||
</td></tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<%= @mentionable.processed_html.html_safe %>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @mention.mentionable.path %>'>view on dev.to</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
<h2 style="font-size:25px;"><%= link_to(@message.user.name, "https://dev.to/#{@message.user.username}") %> sent you a message on DEV Connect</h2>
|
||||
<table><tr><td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
</td></tr><tr><td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<%= @message.message_html %>
|
||||
<br /><br />
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to/connect/@<%= @message.user.username %>'>view on dev.to</a>
|
||||
</td></tr></table>
|
||||
<table>
|
||||
<tr>
|
||||
<td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<%= @message.message_html %>
|
||||
<br /><br />
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to/connect/@<%= @message.user.username %>'>view on dev.to</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
|
||||
<em>You only get emails like this if you have not been active on <a href="https://dev.to/connect">dev.to/connect</a> in the past day. You may disable this type of email in your settings.</em>
|
||||
<em>You only get emails like this if you have not been active on
|
||||
<a href="https://dev.to/connect">dev.to/connect</a> in the past day. You may disable this type of email in your settings.</em>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,18 @@
|
|||
<h2 style="font-size:25px;"><%= link_to(@comment.user.name, "https://dev.to/#{@comment.user.username}") %> replied to you on dev.to</h2>
|
||||
<table><tr><td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
<table>
|
||||
<tr>
|
||||
<td style='color:#c3c3c3;font-size:14px;padding-bottom:8px'>
|
||||
<% unless @comment.is_root? %>
|
||||
<%= truncate(strip_tags(@comment.parent_or_root_article.processed_html.html_safe), length: 80) %>
|
||||
<% end %>
|
||||
</td></tr><tr><td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<h2 style="font-size:22px;color:rgb(107, 107, 107)">re: <em><%= @comment.commentable.title %></em></h2>
|
||||
<%= @comment.processed_html.html_safe %>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @comment.path %>'>view on dev.to</a>
|
||||
<a style="background:#1f1f1f;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @comment.commentable.path %>'>read original post</a>
|
||||
</td></tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='padding:20px;padding-bottom:30px;border-radius:3px;font-size:19px;background:#f4f4f4'>
|
||||
<h2 style="font-size:22px;color:rgb(107, 107, 107)">re: <em><%= @comment.commentable.title %></em></h2>
|
||||
<%= @comment.processed_html.html_safe %>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @comment.path %>'>view on dev.to</a>
|
||||
<a style="background:#1f1f1f;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;" href='https://dev.to<%= @comment.commentable.path %>'>read original post</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
<p>
|
||||
Hey <%= @user.name %>!
|
||||
Hey <%= @user.name %>!
|
||||
</p>
|
||||
<p>
|
||||
Thanks for volunteering to be a DEV tag moderator. We’ve added you as a moderator for <a href="https://dev.to/t/<%= @tag_name %>"><%= @tag_name %></a>. You’re currently the only non-core DEV member that’s moderating this tag. Over time, we’ll add additional mods to join you because we view moderation as a collaborative endeavor that benefits from the support of multiple people.
|
||||
Thanks for volunteering to be a DEV tag moderator. We’ve added you as a moderator for
|
||||
<a href="https://dev.to/t/<%= @tag_name %>"><%= @tag_name %></a>. You’re currently the only non-core DEV member that’s moderating this tag. Over time, we’ll add additional mods to join you because we view moderation as a collaborative endeavor that benefits from the support of multiple people.
|
||||
</p>
|
||||
<p>
|
||||
As a tag moderator, you are now able to:
|
||||
As a tag moderator, you are now able to:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
|
|
@ -15,16 +16,18 @@ As a tag moderator, you are now able to:
|
|||
Update the the tag sidebar.
|
||||
</li>
|
||||
</ul>
|
||||
<p><strong>For details on how to access these features, visit our <a href="https://dev.to/tag-moderation">tag moderation</a> page.</strong></p>
|
||||
<p><strong>For details on how to access these features, visit our
|
||||
<a href="https://dev.to/tag-moderation">tag moderation</a> page.</strong></p>
|
||||
<p>
|
||||
To aid in communication, we’ve added you to a tag moderator <a href="https://dev.to/connect/tag-moderators">DEV Connect channel</a>. You can use this channel to meet other tag moderators across site, and to coordinate with the DEV team. When in doubt about how to exercise your new privileges, please ask!
|
||||
To aid in communication, we’ve added you to a tag moderator
|
||||
<a href="https://dev.to/connect/tag-moderators">DEV Connect channel</a>. You can use this channel to meet other tag moderators across site, and to coordinate with the DEV team. When in doubt about how to exercise your new privileges, please ask!
|
||||
</p>
|
||||
<p>
|
||||
Tag moderation is still very much in beta, so we’ll be making adjustments and expanding features over time as we receive feedback.
|
||||
Tag moderation is still very much in beta, so we’ll be making adjustments and expanding features over time as we receive feedback.
|
||||
</p>
|
||||
<p>Thanks for volunteering your time to benefit the DEV Community.</p>
|
||||
<p>
|
||||
Happy Coding!
|
||||
<br>
|
||||
- DEV Team
|
||||
Happy Coding!
|
||||
<br>
|
||||
- DEV Team
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<h3 style="font-weight:300">You're popular!</h3>
|
||||
<p>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;font-size:33px;" href='https://dev.to/notifications'>Read my notifications</a>
|
||||
<a style="background:#3c7dc1;color:white;padding:5px 14px;border-radius:3px;text-decoration:none;display:inline-block;margin-top:4px;font-size:33px;" href='https://dev.to/notifications'>Read my notifications</a>
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,19 @@
|
|||
<img src="https://thepracticaldev.s3.amazonaws.com/i/nn3vxwwm23p1hu67wbzt.png" style="height:220px; display: block; margin-left: auto; margin-right: auto;" />
|
||||
<p>Congratulations!</p>
|
||||
<p>
|
||||
We’ve received your DEV scholarship application and are excited to provide you with a workshop pass for
|
||||
the year. You’ll get full access to all DEV talks and workshops by visiting <a href="https://dev.to/live">dev.to/live</a> during an event. See <a href="https://dev.to/events">our events</a> page
|
||||
to check out the latest schedule. We appreciate your dedication to programming and hope you’ll benefit from these additional
|
||||
resources.
|
||||
We’ve received your DEV scholarship application and are excited to provide you with a workshop pass for
|
||||
the year. You’ll get full access to all DEV talks and workshops by visiting
|
||||
<a href="https://dev.to/live">dev.to/live</a> during an event. See <a href="https://dev.to/events">our events</a> page
|
||||
to check out the latest schedule. We appreciate your dedication to programming and hope you’ll benefit from these additional
|
||||
resources.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Thanks again for applying and if within your means, please consider <a href="https://dev.to/membership">becoming a level 1 or 2 sustaining member.</a>
|
||||
Thanks again for applying and if within your means, please consider
|
||||
<a href="https://dev.to/membership">becoming a level 1 or 2 sustaining member.</a>
|
||||
</p>
|
||||
<p>
|
||||
Best,
|
||||
<br>
|
||||
PBJ
|
||||
Best,
|
||||
<br>
|
||||
PBJ
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Congratulations on your dev.to Scholarship! See https://dev.to/settings/misc for updated details
|
||||
Congratulations on your dev.to Scholarship! See https://dev.to/settings/misc for updated details
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
border: 2px solid black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.level-rating-button.selected {
|
||||
background: #9bebff;
|
||||
}
|
||||
|
|
@ -35,8 +36,8 @@
|
|||
<% end %>
|
||||
</center>
|
||||
<div class="body">
|
||||
<%= HTML_Truncator.truncate(article.processed_html,
|
||||
200, ellipsis: '<a class="comment-read-more" href="' + article.path + '">... Read Entire Post</a>').html_safe %>
|
||||
<%= HTML_Truncator.truncate(article.processed_html,
|
||||
200, ellipsis: '<a class="comment-read-more" href="' + article.path + '">... Read Entire Post</a>').html_safe %>
|
||||
</div>
|
||||
<center>
|
||||
<h2><a href="<%= article.path %>/mod">Moderate</a></h2>
|
||||
|
|
|
|||
|
|
@ -1,46 +1,54 @@
|
|||
<style>
|
||||
.reaction-button{
|
||||
.reaction-button {
|
||||
position: relative;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
background: white;
|
||||
border-color: white;
|
||||
margin: 100px 40px;
|
||||
border-radius:200px;
|
||||
border-radius: 200px;
|
||||
}
|
||||
|
||||
.reaction-button img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 60px;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.reaction-button .reacted-emoji {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.reaction-button.reacted .reacted-emoji {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tag-mod-form {
|
||||
border-top: 2px solid #dddddd;
|
||||
margin: 40px auto;
|
||||
}
|
||||
|
||||
.tag-mod-form ul {
|
||||
text-align: left;
|
||||
font-size: 15px;
|
||||
}
|
||||
.tag-mod-form form{
|
||||
|
||||
.tag-mod-form form {
|
||||
width: 500px;
|
||||
margin: auto;
|
||||
max-width: 90%;
|
||||
}
|
||||
.tag-mod-form form input{
|
||||
|
||||
.tag-mod-form form input {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
font-size: 20px;
|
||||
margin-bottom: 5px;
|
||||
border: 1px solid #888;
|
||||
}
|
||||
.tag-mod-form form input[type="submit"]{
|
||||
|
||||
.tag-mod-form form input[type="submit"] {
|
||||
background: #0045ff;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
|
|
@ -48,13 +56,15 @@
|
|||
margin: auto;
|
||||
display: block;
|
||||
}
|
||||
.tag-mod-form form textarea{
|
||||
|
||||
.tag-mod-form form textarea {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
font-size: 17px;
|
||||
height: 50px;
|
||||
border: 1px solid #888;
|
||||
}
|
||||
|
||||
.level-rating-button {
|
||||
border-radius: 8px;
|
||||
font-size: 1.1em;
|
||||
|
|
@ -63,6 +73,7 @@
|
|||
border: 2px solid black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.level-rating-button.selected {
|
||||
background: #9bebff;
|
||||
}
|
||||
|
|
@ -80,13 +91,17 @@
|
|||
<img class="reacted-emoji" src="<%= asset_path("emoji/emoji-one-nausea-face.png") %>" />
|
||||
</button>
|
||||
<% if current_user.has_role?(:super_admin) && @moderatable.class.name == "Article" %>
|
||||
<h1> Admin: <a href="<%= @moderatable.path %>/edit">Edit</a> | <a href="/internal/articles/<%= @moderatable.id %>" data-no-instant>Content Moderation</a> | <a href="/admin/articles/<%= @moderatable.id %>" data-no-instant>Article Admin</a></h1>
|
||||
<h1> Admin: <a href="<%= @moderatable.path %>/edit">Edit</a> |
|
||||
<a href="/internal/articles/<%= @moderatable.id %>" data-no-instant>Content Moderation</a> |
|
||||
<a href="/admin/articles/<%= @moderatable.id %>" data-no-instant>Article Admin</a></h1>
|
||||
<% elsif current_user.has_role?(:super_admin) && @moderatable.class.name == "Comment" %>
|
||||
<h1> ADMIN: <a href="/admin/comments/<%= @moderatable.id %>" data-no-instant>Comment Admin</a> | <a href="/admin/users/<%= @moderatable.user_id %>" data-no-instant>User Admin</a></h1>
|
||||
<h1> ADMIN: <a href="/admin/comments/<%= @moderatable.id %>" data-no-instant>Comment Admin</a> |
|
||||
<a href="/admin/users/<%= @moderatable.user_id %>" data-no-instant>User Admin</a></h1>
|
||||
<% else %>
|
||||
<p style="width: 90%;margin:50px auto;text-align:left">
|
||||
<b style="font-size:1.3em">All negative reactions are private.</b>
|
||||
<br><br>Use the <b>thumbsdown(👎)</b> to move something "down" for any reason (quality, usefulness, code of conduct grey area).
|
||||
<br><br>Use the
|
||||
<b>thumbsdown(👎)</b> to move something "down" for any reason (quality, usefulness, code of conduct grey area).
|
||||
<br><br>The <b>vomit(🤢)</b> is for code of conduct violations (harassment, being an asshole, spam, etc.).
|
||||
<br><br>The DEV team will be notified about vomits and take appropriate action, but leaving a level-headed comment addressing the behavior is welcome if you feel up for it.
|
||||
</p>
|
||||
|
|
@ -142,14 +157,15 @@
|
|||
<b style="font-size:1.1em">All rating votes are private.</b>
|
||||
<br><br>Provide a rating between 1 and 10 based on which audience would find this post most valuable.
|
||||
<br><br>1: for brand new developers, 3: for junior developers, 10: for very advanced developers, etc.
|
||||
<br><br>This will provide <em>approximate and gentle</em> algorithmic adjustments to help deliver relevant content.
|
||||
<br><br>This will provide
|
||||
<em>approximate and gentle</em> algorithmic adjustments to help deliver relevant content.
|
||||
<br><br>It will be used as one of many indicators. No one rating will have an overly dramatic affect.
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<script defer>
|
||||
setTimeout(function(){
|
||||
setTimeout(function () {
|
||||
var butts = document.getElementsByClassName('reaction-button');
|
||||
for (var i = 0; i < butts.length; i++) {
|
||||
var butt = butts[i];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<% json_data = notification.json_data %>
|
||||
<div class="content notification-content badge-content">
|
||||
<div class="badge-title">
|
||||
Your post <a href="<%= json_data["article"]["path"] %>"><%= json_data["article"]["title"] %></a> just passed <%= notification.milestone_count %> <%= notification.milestone_type.pluralize.downcase %>!
|
||||
Your post
|
||||
<a href="<%= json_data["article"]["path"] %>"><%= json_data["article"]["title"] %></a> just passed <%= notification.milestone_count %> <%= notification.milestone_type.pluralize.downcase %>!
|
||||
</div>
|
||||
<p class="badge-description milestone-emojis">🎉🎉🎉🎉🎉🎉🎉🎉</p>
|
||||
|
||||
|
|
|
|||
|
|
@ -20,18 +20,18 @@
|
|||
<div class="user-profile-header tag-header" style="background: transparent;padding:0px;margin:22px auto 0px">
|
||||
</div>
|
||||
|
||||
<div class="home" id="notifications-container" style="margin-top:0px;">
|
||||
<div class="side-bar">
|
||||
<div class="widget fixed-widget">
|
||||
<header>
|
||||
<h4>notifications</h4>
|
||||
</header>
|
||||
<div class="widget-body">
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].blank? %>" href="/notifications">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].blank? %>" href="/notifications/comments">COMMENTS</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("posts").zero? && params[:org_id].blank? %>" href="/notifications/posts">POSTS</a>
|
||||
</div>
|
||||
<% if user_signed_in? && current_user.organization_id.present? %>
|
||||
<div class="home" id="notifications-container" style="margin-top:0px;">
|
||||
<div class="side-bar">
|
||||
<div class="widget fixed-widget">
|
||||
<header>
|
||||
<h4>notifications</h4>
|
||||
</header>
|
||||
<div class="widget-body">
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].blank? %>" href="/notifications">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].blank? %>" href="/notifications/comments">COMMENTS</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("posts").zero? && params[:org_id].blank? %>" href="/notifications/posts">POSTS</a>
|
||||
</div>
|
||||
<% if user_signed_in? && current_user.organization_id.present? %>
|
||||
<hr>
|
||||
<header>
|
||||
<h4><%= current_user.organization.name %> <%= "(#{@total_org_unread})" if @total_org_unread.positive? %></h4>
|
||||
|
|
@ -40,36 +40,35 @@
|
|||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("org").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/org/<%= current_user.organization_id %>">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/comments/<%= current_user.organization_id %>">COMMENTS</a>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="articles-list" id="articles-list">
|
||||
<% if user_signed_in? %>
|
||||
<div class="notifications-mobile-filters">
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].blank? %>" href="/notifications">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].blank? %>" href="/notifications/comments">COMMENTS</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("posts").zero? && params[:org_id].blank? %>" href="/notifications/posts">POSTS</a>
|
||||
</div>
|
||||
<% if current_user.organization_id.present? %>
|
||||
<div class="notifications-mobile-filters">
|
||||
<hr>
|
||||
<span class="organization-name"><%= current_user.organization.name %> <%= "(#{@total_org_unread})" if @total_org_unread.positive? %></span>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("org").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/org/<%= current_user.organization_id %>">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/comments/<%= current_user.organization_id %>">COMMENTS</a>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= render "notifications_list" %>
|
||||
<% if @notifications.any? %>
|
||||
<div id="notifications-pagination" data-pagination-path="/notifications/<%= params[:org_id].present? ? "#{params[:filter]}/#{params[:org_id]}" : params[:filter].to_s %>?page=<%= @notifications.last.id %>"></div>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="content notification-content comment-content">
|
||||
<%= render "notifications/signup_cta_test" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="side-bar sidebar-additional"></div>
|
||||
</div>
|
||||
<div class="articles-list" id="articles-list">
|
||||
<% if user_signed_in? %>
|
||||
<div class="notifications-mobile-filters">
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].blank? %>" href="/notifications">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].blank? %>" href="/notifications/comments">COMMENTS</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("posts").zero? && params[:org_id].blank? %>" href="/notifications/posts">POSTS</a>
|
||||
</div>
|
||||
<% if current_user.organization_id.present? %>
|
||||
<div class="notifications-mobile-filters">
|
||||
<hr>
|
||||
<span class="organization-name"><%= current_user.organization.name %> <%= "(#{@total_org_unread})" if @total_org_unread.positive? %></span>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("org").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/org/<%= current_user.organization_id %>">ALL</a>
|
||||
<a class="query-filter-button <%= "selected" if params[:filter].to_s.casecmp("comments").zero? && params[:org_id].to_i == current_user.organization_id %>" href="/notifications/comments/<%= current_user.organization_id %>">COMMENTS</a>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= render "notifications_list" %>
|
||||
<% if @notifications.any? %>
|
||||
<div id="notifications-pagination" data-pagination-path="/notifications/<%= params[:org_id].present? ? "#{params[:filter]}/#{params[:org_id]}" : params[:filter].to_s %>?page=<%= @notifications.last.id %>"></div>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div class="content notification-content comment-content">
|
||||
<%= render "notifications/signup_cta_test" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="side-bar sidebar-additional"></div>
|
||||
</div>
|
||||
|
||||
<%= render "articles/fitvids" %>
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@
|
|||
<pre>
|
||||
{% spotify <span style="color: #1DB954;">spotify:episode:5V4XZWqZQJvbddd31n56mf</span> %}
|
||||
</pre>
|
||||
|
||||
|
||||
<h3><strong>Blogcast Tag</strong></h3>
|
||||
<p>All you need is the article id code from the embed code:</p>
|
||||
<pre>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<h3><strong>Inline Images</strong></h3>
|
||||
<p>
|
||||
<img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OsLaFSo9--/c_fill,f_auto,fl_progressive,h_220,q_auto,w_220/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/31047/af153cd6-9994-4a68-83f4-8ddf3e13f0bf.jpg" alt="example image, with sloan"></img>
|
||||
<img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OsLaFSo9--/c_fill,f_auto,fl_progressive,h_220,q_auto,w_220/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/31047/af153cd6-9994-4a68-83f4-8ddf3e13f0bf.jpg" alt="example image, with sloan" />
|
||||
<code></code>
|
||||
</p>
|
||||
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@
|
|||
<div class="single-level-body">
|
||||
Woohooo! For <span style="background-color:#fefa87">$25 a month</span>, you'll get:
|
||||
<ul>
|
||||
<li>Stickers + t-shirt combo pack </strong> </li>
|
||||
<li><strong>Stickers + t-shirt combo pack </strong></li>
|
||||
<li>25% off <a href="https://shop.dev.to">The DEV Shop</a> (forever!)</li>
|
||||
<li> Added to our "Wall of Patrons and Scholars" with a link to your profile</li>
|
||||
<li> Access to beta features</li>
|
||||
|
|
|
|||
|
|
@ -2,67 +2,77 @@
|
|||
<% color = HexComparer.new([user_colors(@article.user)[:bg], user_colors(@article.user)[:text]]).brightness(1.4) %>
|
||||
<% dark_color = HexComparer.new([user_colors(@article.user)[:bg], user_colors(@article.user)[:text]]).brightness(0.7) %>
|
||||
<style>
|
||||
body{
|
||||
body {
|
||||
background: white;
|
||||
margin:0;
|
||||
padding:0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.preview-div-wrapper{
|
||||
|
||||
.preview-div-wrapper {
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
.circle{
|
||||
|
||||
.circle {
|
||||
border-radius: 1000px;
|
||||
background: <%= accent_color %>;
|
||||
position: absolute;
|
||||
}
|
||||
.circle1{
|
||||
|
||||
.circle1 {
|
||||
height: 40vw;
|
||||
width: 40vw;
|
||||
right: -<%= rand(2..15) %>vw;
|
||||
bottom: -<%= rand(2..15) %>vw;
|
||||
}
|
||||
.circle2{
|
||||
|
||||
.circle2 {
|
||||
height: 30vw;
|
||||
width: 30vw;
|
||||
left: <%= rand(2..16) %>vw;
|
||||
bottom: 0vw;
|
||||
}
|
||||
.circle3{
|
||||
|
||||
.circle3 {
|
||||
height: 24vw;
|
||||
width: 24vw;
|
||||
left: -8vw;
|
||||
top: -<%= rand(2..6) %>vw;
|
||||
}
|
||||
.preview-div{
|
||||
|
||||
.preview-div {
|
||||
background: #fff;
|
||||
border: 0.25vw solid <%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px <%= dark_color %>;
|
||||
border: 0.25vw solid<%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px<%= dark_color %>;
|
||||
width: 88vw;
|
||||
height: 44vw;
|
||||
margin: 2.5vw auto 5vw;
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
.preview-info-header{
|
||||
|
||||
.preview-info-header {
|
||||
color: black;
|
||||
margin: 2vw auto 0vw;
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 3.5vw;
|
||||
width: 92%;
|
||||
}
|
||||
|
||||
.preview-info-header img {
|
||||
height: 2.5vw;
|
||||
vertical-align: -0.15vw;
|
||||
margin-left: 1vw;
|
||||
margin-right: 0.5vw;
|
||||
}
|
||||
h1{
|
||||
|
||||
h1 {
|
||||
color: <%= dark_color %>;
|
||||
width: 92%;
|
||||
margin: 1vw auto;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
}
|
||||
|
||||
.preview-user {
|
||||
font-size: 3.5vw;
|
||||
position: absolute;
|
||||
|
|
@ -74,21 +84,24 @@
|
|||
font-weight: 500;
|
||||
border-radius: 100vw;
|
||||
}
|
||||
|
||||
.preview-user img {
|
||||
border-radius: 100vw;
|
||||
height: 5vw;
|
||||
width: 5vw;
|
||||
vertical-align: -1.3vw;
|
||||
border: 0.25vw solid <%= dark_color %>;
|
||||
border: 0.25vw solid<%= dark_color %>;
|
||||
}
|
||||
.preview-dev-logo{
|
||||
position:absolute;
|
||||
|
||||
.preview-dev-logo {
|
||||
position: absolute;
|
||||
bottom: 2.1vw;
|
||||
right: 2.1vw;
|
||||
text-align:right;
|
||||
text-align: right;
|
||||
}
|
||||
.logo{
|
||||
height:6vw;
|
||||
|
||||
.logo {
|
||||
height: 6vw;
|
||||
fill: <%= dark_color %>;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -108,7 +121,7 @@
|
|||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<h1 style="font-size:<%= font_size %>vw;"><%= @article.title %><h1>
|
||||
<h1 style="font-size:<%= font_size %>vw;"><%= @article.title %></h1>
|
||||
<div class="preview-user">
|
||||
<img src="<%= ProfileImage.new(@article.user).get(90) %>" />
|
||||
<%= truncate @article.user.name, length: 25 %>・<%= @article.readable_publish_date %>
|
||||
|
|
|
|||
|
|
@ -2,77 +2,88 @@
|
|||
<% color = HexComparer.new([@tag.bg_color_hex, @tag.text_color_hex]).brightness(1.4) %>
|
||||
<% dark_color = HexComparer.new([@tag.bg_color_hex, @tag.text_color_hex]).brightness(0.7) %>
|
||||
<style>
|
||||
body{
|
||||
body {
|
||||
background: white;
|
||||
margin:0;
|
||||
padding:0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.preview-div-wrapper{
|
||||
|
||||
.preview-div-wrapper {
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
.circle{
|
||||
|
||||
.circle {
|
||||
border-radius: 1000px;
|
||||
background: <%= accent_color %>;
|
||||
position: absolute;
|
||||
}
|
||||
.circle1{
|
||||
|
||||
.circle1 {
|
||||
height: 40vw;
|
||||
width: 40vw;
|
||||
right: -<%= rand(2..15) %>vw;
|
||||
bottom: -<%= rand(2..15) %>vw;
|
||||
}
|
||||
.circle2{
|
||||
|
||||
.circle2 {
|
||||
height: 30vw;
|
||||
width: 30vw;
|
||||
left: <%= rand(2..16) %>vw;
|
||||
bottom: 0vw;
|
||||
}
|
||||
.circle3{
|
||||
|
||||
.circle3 {
|
||||
height: 24vw;
|
||||
width: 24vw;
|
||||
left: -8vw;
|
||||
top: -<%= rand(2..6) %>vw;
|
||||
}
|
||||
.preview-div{
|
||||
|
||||
.preview-div {
|
||||
background: #fff;
|
||||
border: 0.25vw solid <%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px <%= dark_color %>;
|
||||
border: 0.25vw solid<%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px<%= dark_color %>;
|
||||
width: 88vw;
|
||||
height: 44vw;
|
||||
margin: 2.5vw auto 5vw;
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
h1{
|
||||
|
||||
h1 {
|
||||
color: <%= dark_color %>;
|
||||
width: 92%;
|
||||
margin: 10vw auto 0vw;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
font-size: 12vw;
|
||||
}
|
||||
h1 img{
|
||||
|
||||
h1 img {
|
||||
border-radius: 100vw;
|
||||
height: 15vw;
|
||||
width: 15vw;
|
||||
vertical-align: -4.3vw;
|
||||
border: 0.55vw solid <%= dark_color %>;
|
||||
border: 0.55vw solid<%= dark_color %>;
|
||||
}
|
||||
h2{
|
||||
|
||||
h2 {
|
||||
color: black;
|
||||
width: 92%;
|
||||
margin: 0vw auto 1vw;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
font-size: 6vw;
|
||||
}
|
||||
.preview-dev-logo{
|
||||
position:absolute;
|
||||
|
||||
.preview-dev-logo {
|
||||
position: absolute;
|
||||
bottom: 2.1vw;
|
||||
right: 2.1vw;
|
||||
text-align:right;
|
||||
text-align: right;
|
||||
}
|
||||
.logo{
|
||||
height:6vw;
|
||||
|
||||
.logo {
|
||||
height: 6vw;
|
||||
fill: <%= dark_color %>;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -2,70 +2,80 @@
|
|||
<% color = HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(1.4) %>
|
||||
<% dark_color = HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.7) %>
|
||||
<style>
|
||||
body{
|
||||
body {
|
||||
background: white;
|
||||
margin:0;
|
||||
padding:0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.preview-div-wrapper{
|
||||
|
||||
.preview-div-wrapper {
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
.circle{
|
||||
|
||||
.circle {
|
||||
border-radius: 1000px;
|
||||
background: <%= accent_color %>;
|
||||
position: absolute;
|
||||
}
|
||||
.circle1{
|
||||
|
||||
.circle1 {
|
||||
height: 40vw;
|
||||
width: 40vw;
|
||||
right: -<%= rand(2..15) %>vw;
|
||||
bottom: -<%= rand(2..15) %>vw;
|
||||
}
|
||||
.circle2{
|
||||
|
||||
.circle2 {
|
||||
height: 30vw;
|
||||
width: 30vw;
|
||||
left: <%= rand(2..16) %>vw;
|
||||
bottom: 0vw;
|
||||
}
|
||||
.circle3{
|
||||
|
||||
.circle3 {
|
||||
height: 24vw;
|
||||
width: 24vw;
|
||||
left: -8vw;
|
||||
top: -<%= rand(2..6) %>vw;
|
||||
}
|
||||
.preview-div{
|
||||
|
||||
.preview-div {
|
||||
background: #fff;
|
||||
border: 0.25vw solid <%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px <%= dark_color %>;
|
||||
border: 0.25vw solid<%= dark_color %>;
|
||||
box-shadow: 0.8vw 1vw 0px<%= dark_color %>;
|
||||
width: 88vw;
|
||||
height: 44vw;
|
||||
margin: 2.5vw auto 5vw;
|
||||
overflow: hidden;
|
||||
position:relative;
|
||||
position: relative;
|
||||
}
|
||||
h1{
|
||||
|
||||
h1 {
|
||||
color: <%= dark_color %>;
|
||||
width: 92%;
|
||||
margin: 10vw auto 1vw;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
|
||||
font-size: 8vw;
|
||||
}
|
||||
h1 img{
|
||||
|
||||
h1 img {
|
||||
border-radius: 100vw;
|
||||
height: 15vw;
|
||||
width: 15vw;
|
||||
vertical-align: -4.3vw;
|
||||
border: 0.55vw solid <%= dark_color %>;
|
||||
border: 0.55vw solid<%= dark_color %>;
|
||||
}
|
||||
.preview-dev-logo{
|
||||
position:absolute;
|
||||
|
||||
.preview-dev-logo {
|
||||
position: absolute;
|
||||
bottom: 2.1vw;
|
||||
right: 2.1vw;
|
||||
text-align:right;
|
||||
text-align: right;
|
||||
}
|
||||
.logo{
|
||||
height:6vw;
|
||||
|
||||
.logo {
|
||||
height: 6vw;
|
||||
fill: <%= dark_color %>;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -77,7 +87,7 @@
|
|||
<h1>
|
||||
<img src="<%= ProfileImage.new(@user).get(640) %>" />
|
||||
<%= @user.name %>
|
||||
<h1>
|
||||
</h1>
|
||||
<div class="preview-dev-logo">
|
||||
<%= inline_svg("devplain.svg", class: "logo", size: "9vw * 9vw") %>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,23 +4,23 @@
|
|||
function hasClass(el, cls) {
|
||||
return el.className && new RegExp("(\\s|^)" + cls + "(\\s|$)").test(el.className);
|
||||
}
|
||||
var activeLinks = document.getElementsByClassName('active');
|
||||
Array.prototype.forEach.call(activeLinks, function(el) { el.classList.remove("active"); });
|
||||
|
||||
document.getElementById('articles-list').addEventListener('click', function(event) {
|
||||
var clickedEl = event.target;
|
||||
if (hasClass(clickedEl,"bm-initial") || hasClass(clickedEl,"bm-success")){
|
||||
//do nothing
|
||||
}
|
||||
else if (hasClass(clickedEl.parentNode,"single-article")) {
|
||||
clickedEl.parentNode.classList.add('active');
|
||||
}
|
||||
else if (hasClass(clickedEl.parentNode.parentNode,"single-article")) {
|
||||
clickedEl.parentNode.parentNode.classList.add('active');
|
||||
}
|
||||
else if (hasClass(clickedEl.parentNode.parentNode.parentNode,"single-article")) {
|
||||
clickedEl.parentNode.parentNode.parentNode.classList.add('active');
|
||||
}
|
||||
var activeLinks = document.getElementsByClassName('active');
|
||||
Array.prototype.forEach.call(activeLinks, function (el) {
|
||||
el.classList.remove("active");
|
||||
});
|
||||
|
||||
document.getElementById('articles-list').addEventListener('click', function (event) {
|
||||
var clickedEl = event.target;
|
||||
if (hasClass(clickedEl, "bm-initial") || hasClass(clickedEl, "bm-success")) {
|
||||
//do nothing
|
||||
} else if (hasClass(clickedEl.parentNode, "single-article")) {
|
||||
clickedEl.parentNode.classList.add('active');
|
||||
} else if (hasClass(clickedEl.parentNode.parentNode, "single-article")) {
|
||||
clickedEl.parentNode.parentNode.classList.add('active');
|
||||
} else if (hasClass(clickedEl.parentNode.parentNode.parentNode, "single-article")) {
|
||||
clickedEl.parentNode.parentNode.parentNode.classList.add('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -23,12 +23,14 @@
|
|||
<div class="blank-space"></div>
|
||||
|
||||
<style>
|
||||
body{
|
||||
body {
|
||||
background: #f2f3ff;
|
||||
}
|
||||
.container .body h1{
|
||||
margin:1.3em 0 1.50em;
|
||||
|
||||
.container .body h1 {
|
||||
margin: 1.3em 0 1.50em;
|
||||
}
|
||||
|
||||
.container .body {
|
||||
text-align: center;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js"></script>
|
||||
<style>
|
||||
.widget header{
|
||||
.widget header {
|
||||
color: <%= HexComparer.new([@tag.bg_color_hex || "#0000000", @tag.text_color_hex || "#ffffff"]).brightness(0.8) %>
|
||||
}
|
||||
.slanty-accent{
|
||||
|
||||
.slanty-accent {
|
||||
background-color: <%= HexComparer.new([@tag.bg_color_hex || "#ffffff"]).accent %>
|
||||
}
|
||||
|
||||
.tag-edit-tag {
|
||||
text-align: center;
|
||||
color: <%= @tag.text_color_hex %>;
|
||||
|
|
@ -17,8 +19,12 @@
|
|||
<div class="user-profile-header tag-header" style="background-color:<%= @tag.bg_color_hex %>;color:<%= @tag.text_color_hex %>;">
|
||||
<div class="slanty-accent"></div>
|
||||
<div class="tag-or-query-header-container tag-edit-tag">
|
||||
<h1> Editing: <a href="/t/<%= @tag.name %>" style="color: <%= @tag.text_color_hex %>;text-decoration: underline;"><%= @tag.name %></a> </h1>
|
||||
<p><code style="background-color: #D2D2D2; color: black; padding: 5px; border-radius: 5px;"><%= @tag.name %></code> is the name of the tag used in Markdown.</p>
|
||||
<h1> Editing:
|
||||
<a href="/t/<%= @tag.name %>" style="color: <%= @tag.text_color_hex %>;text-decoration: underline;"><%= @tag.name %></a>
|
||||
</h1>
|
||||
<p>
|
||||
<code style="background-color: #D2D2D2; color: black; padding: 5px; border-radius: 5px;"><%= @tag.name %></code> is the name of the tag used in Markdown.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -29,11 +35,11 @@
|
|||
<%= flash[:success] %>
|
||||
</p>
|
||||
<% elsif flash[:error] %>
|
||||
<ul class="tag-edit-flash-error">
|
||||
<% flash[:error].each do |message| %>
|
||||
<ul class="tag-edit-flash-error">
|
||||
<% flash[:error].each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
<h4>
|
||||
<a target="_blank" href="https://thepracticaldev.s3.amazonaws.com/i/cc8vz48djnhty6c31jog.png">
|
||||
|
|
|
|||
|
|
@ -31,9 +31,9 @@
|
|||
<div class="articles-list" id="articles-list">
|
||||
<% @tags.each do |tag| %>
|
||||
<div class="tag-list-container" style="background:<%= tag.bg_color_hex %>;">
|
||||
<a class="tag-show-link" href="/t/<%= tag.name %>" style="color:<%= tag.text_color_hex || "#fff" %>;">
|
||||
<h2>#<%= tag.name %></h2>
|
||||
</a>
|
||||
<a class="tag-show-link" href="/t/<%= tag.name %>" style="color:<%= tag.text_color_hex || "#fff" %>;">
|
||||
<h2>#<%= tag.name %></h2>
|
||||
</a>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<% unless @user.identities.exists?(provider:'github') %>
|
||||
<% unless @user.identities.exists?(provider: 'github') %>
|
||||
<div class="field">
|
||||
<a href="/users/auth/github" class="big-button cta" data-no-instant>
|
||||
<img src="<%= asset_path("github-logo.svg") %>" /> CONNECT GITHUB ACCOUNT
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<hr />
|
||||
<% end %>
|
||||
|
||||
<% unless @user.identities.exists?(provider:'twitter') %>
|
||||
<% unless @user.identities.exists?(provider: 'twitter') %>
|
||||
<div class="field">
|
||||
<a href="/users/auth/twitter?callback_url=<%= ApplicationConfig["APP_PROTOCOL"] %><%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="big-button cta" data-no-instant>
|
||||
<img src="<%= asset_path("twitter-logo.svg") %>" /> CONNECT TWITTER ACCOUNT
|
||||
|
|
@ -89,10 +89,11 @@
|
|||
<h3>Delete Account</h3>
|
||||
<h4 style="font-weight:400;">
|
||||
<%= form_tag "/users/destroy", method: :delete, autocomplete: "off" do %>
|
||||
Deleting your account will:
|
||||
Deleting your account will:
|
||||
<ul class="delete__account">
|
||||
<li>delete your profile, along with your Twitter and/or GitHub associations.
|
||||
This does not include app permissions, which you will have to remove yourself on Twitter/GitHub.</li>
|
||||
This does not include app permissions, which you will have to remove yourself on Twitter/GitHub.
|
||||
</li>
|
||||
<%# TODO: expand the delete messaging later %>
|
||||
<li>delete any and all content you have, such as your reading list or chat messages.</li>
|
||||
<li>allow your username to become available to anyone.</li>
|
||||
|
|
@ -116,11 +117,11 @@
|
|||
var deleteAccountUsernameInput = document.getElementById('delete__account__username__field')
|
||||
var deleteAcccountVerificationInput = document.getElementById('delete__account__verification__field')
|
||||
|
||||
function bothInputsVerified () {
|
||||
function bothInputsVerified() {
|
||||
return deleteAccountUsernameInput.value === '<%= @user.username %>' && deleteAcccountVerificationInput.value === "delete my account"
|
||||
}
|
||||
|
||||
deleteAccountUsernameInput.addEventListener('input', function() {
|
||||
deleteAccountUsernameInput.addEventListener('input', function () {
|
||||
if (bothInputsVerified()) {
|
||||
deleteAccountBtn.disabled = false;
|
||||
// enable the button via css or removing disabled class
|
||||
|
|
@ -129,11 +130,11 @@
|
|||
}
|
||||
})
|
||||
|
||||
deleteAcccountVerificationInput.addEventListener('input', function() {
|
||||
deleteAcccountVerificationInput.addEventListener('input', function () {
|
||||
if (bothInputsVerified()) {
|
||||
deleteAccountBtn.disabled = false;
|
||||
} else {
|
||||
deleteAccountBtn.disabled = true;
|
||||
deleteAccountBtn.disabled = true;
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -60,19 +60,19 @@
|
|||
<script src="https://checkout.stripe.com/checkout.js"></script>
|
||||
|
||||
<script>
|
||||
setTimeout(function() {
|
||||
setTimeout(function () {
|
||||
var handler = StripeCheckout.configure({
|
||||
key: '<%= Rails.configuration.stripe[:publishable_key] %>',
|
||||
image: "https://thepracticaldev.s3.amazonaws.com/i/xoxvppfjorrnxudkzskw.jpg",
|
||||
locale: 'auto',
|
||||
token: function(token) {
|
||||
token: function (token) {
|
||||
var form = document.getElementById("credit-card-form")
|
||||
addHidden(form, 'stripe_token', token.id);
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('add-credit-card-button').addEventListener('click', function(e) {
|
||||
document.getElementById('add-credit-card-button').addEventListener('click', function (e) {
|
||||
// Open Checkout with further options:
|
||||
handler.open({
|
||||
description: 'Add Credit Card',
|
||||
|
|
@ -86,17 +86,17 @@
|
|||
});
|
||||
|
||||
// Close Checkout on page navigation:
|
||||
window.addEventListener('popstate', function() {
|
||||
window.addEventListener('popstate', function () {
|
||||
handler.close();
|
||||
});
|
||||
},220)
|
||||
}, 220)
|
||||
|
||||
function addHidden(theForm, key, value) {
|
||||
// Create a hidden input element, and append it to the form:
|
||||
var input = document.createElement('input');
|
||||
input.type = 'hidden';
|
||||
input.name = key; // 'the key/name of the attribute/field that is sent to the server
|
||||
input.value = value;
|
||||
theForm.appendChild(input);
|
||||
}
|
||||
function addHidden(theForm, key, value) {
|
||||
// Create a hidden input element, and append it to the form:
|
||||
var input = document.createElement('input');
|
||||
input.type = 'hidden';
|
||||
input.name = key; // 'the key/name of the attribute/field that is sent to the server
|
||||
input.value = value;
|
||||
theForm.appendChild(input);
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
<div class="index-comments">
|
||||
<% if @comments.any? %>
|
||||
<% if params[:view] == "comments" %>
|
||||
<div class="breadcrumb"><a href="<%= @user.path %>">View All Activity</a></div>
|
||||
<header>
|
||||
<% if @user.comments_count > 250 %>
|
||||
<h4>Last 250 Comments</h4>
|
||||
<% else %>
|
||||
<h4>All <%= @user.comments_count %> Comments</h4>
|
||||
<% end %>
|
||||
</header>
|
||||
<div class="breadcrumb"><a href="<%= @user.path %>">View All Activity</a></div>
|
||||
<header>
|
||||
<% if @user.comments_count > 250 %>
|
||||
<h4>Last 250 Comments</h4>
|
||||
<% else %>
|
||||
<h4>All <%= @user.comments_count %> Comments</h4>
|
||||
<% end %>
|
||||
</header>
|
||||
<% else %>
|
||||
<header>
|
||||
<h4>Recent Comments</h4>
|
||||
|
|
@ -32,10 +32,11 @@
|
|||
</a>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if params[:view] != "comments" && @user.comments_count > 250 %>
|
||||
<% if params[:view] != "comments" && @user.comments_count > 250 %>
|
||||
<div class="breadcrumb"><a href="<%= @user.path %>/comments">Last 250 Comments</a></div>
|
||||
<% elsif params[:view] != "comments" && @user.comments_count > 8 %>
|
||||
<div class="breadcrumb"><a href="<%= @user.path %>/comments">View All <%= @user.comments_count %> Comments</a></div>
|
||||
<% elsif params[:view] != "comments" && @user.comments_count > 8 %>
|
||||
<div class="breadcrumb"><a href="<%= @user.path %>/comments">View All <%= @user.comments_count %> Comments</a>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<li>Workshop Pass -- <a href="/events">see our events for the month!</a></li>
|
||||
<% end %>
|
||||
<li>Post Analytics (beta) now live on <a href="/dashboard">your dashboard</a></li>
|
||||
<li> Wall of Patrons and Scholars </li>
|
||||
<li> Wall of Patrons and Scholars</li>
|
||||
<li>More on the way!</li>
|
||||
</ul>
|
||||
<% if current_user.monthly_dues >= 1000 %>
|
||||
|
|
|
|||
|
|
@ -3,8 +3,11 @@
|
|||
|
||||
<%= form_for(@user) do |f| %>
|
||||
<h3>Offering Help</h3>
|
||||
<p><em><% if @user.mentor_form_updated_at? %>
|
||||
Last Updated: <%= @user.mentor_form_updated_at.strftime("%b %d, %Y") %><% end %></em></p>
|
||||
<p><em>
|
||||
<% if @user.mentor_form_updated_at? %>
|
||||
Last Updated: <%= @user.mentor_form_updated_at.strftime("%b %d, %Y") %>
|
||||
<% end %>
|
||||
</em></p>
|
||||
<div class="field checkbox-label-first">
|
||||
<%= f.label :offering_mentorship, "I'd like to be a mentor!" %>
|
||||
<%= f.check_box :offering_mentorship %>
|
||||
|
|
@ -14,9 +17,12 @@
|
|||
<%= f.text_area :mentor_description, placeholder: "For example:\n\n1. Vim - 6, I love teaching people how to use vim because I really believe it increases productivity.\n\nI don't think I'd be comfortable teaching a total beginner. ", maxlength: 750 %>
|
||||
</div>
|
||||
<h3>Seeking Help</h3>
|
||||
<p><em><% if @user.mentee_form_updated_at? %>
|
||||
Last Updated:
|
||||
<%= @user.mentee_form_updated_at.strftime("%b %d, %Y") %><% end %></em></p>
|
||||
<p><em>
|
||||
<% if @user.mentee_form_updated_at? %>
|
||||
Last Updated:
|
||||
<%= @user.mentee_form_updated_at.strftime("%b %d, %Y") %>
|
||||
<% end %>
|
||||
</em></p>
|
||||
<div class="field checkbox-label-first">
|
||||
<%= f.label :seeking_mentorship, "I'm looking for a mentor!" %>
|
||||
<%= f.check_box :seeking_mentorship %>
|
||||
|
|
|
|||
|
|
@ -11,29 +11,29 @@
|
|||
|
||||
<h2>Features</h2>
|
||||
<%= form_for(@user) do |f| %>
|
||||
<div class="sub-field">
|
||||
<%= f.label :editor_version, "Editor version: v1 or v2" %>
|
||||
<%= f.text_field :editor_version %>
|
||||
<sub><em>v2 is currently in beta</em></sub>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label></label>
|
||||
<%= f.hidden_field :tab, value: @tab %>
|
||||
<%= f.submit "SUBMIT", class: "cta" %>
|
||||
</div>
|
||||
<div class="sub-field">
|
||||
<%= f.label :editor_version, "Editor version: v1 or v2" %>
|
||||
<%= f.text_field :editor_version %>
|
||||
<sub><em>v2 is currently in beta</em></sub>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label></label>
|
||||
<%= f.hidden_field :tab, value: @tab %>
|
||||
<%= f.submit "SUBMIT", class: "cta" %>
|
||||
</div>
|
||||
<% end %>
|
||||
<h2>Feed Customization</h2>
|
||||
<%= form_for(@user) do |f| %>
|
||||
<div class="sub-field">
|
||||
<%= f.label :experience_level, "Enter your coding experience level (1-10)" %>
|
||||
<%= f.text_field :experience_level %>
|
||||
<sub><em>This will not be displayed on your profile or anywhere publicly. It will help determine what content you are shown along with tags you follow etc.</em></sub>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label></label>
|
||||
<%= f.hidden_field :tab, value: @tab %>
|
||||
<%= f.submit "SUBMIT", class: "cta" %>
|
||||
</div>
|
||||
<div class="sub-field">
|
||||
<%= f.label :experience_level, "Enter your coding experience level (1-10)" %>
|
||||
<%= f.text_field :experience_level %>
|
||||
<sub><em>This will not be displayed on your profile or anywhere publicly. It will help determine what content you are shown along with tags you follow etc.</em></sub>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label></label>
|
||||
<%= f.hidden_field :tab, value: @tab %>
|
||||
<%= f.submit "SUBMIT", class: "cta" %>
|
||||
</div>
|
||||
<% end %>
|
||||
<h2>Languages</h2>
|
||||
<h3>Select which languages you'd prefer to see in your feed <span style="color:#e05252">(beta)</span></h3>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<h3>Mobile Notification Settings (Beta)</h3>
|
||||
<p><em>iOS only for now. Additional settings and platforms will be rolled out as new notification features are made available.</em></p>
|
||||
<p>
|
||||
<em>iOS only for now. Additional settings and platforms will be rolled out as new notification features are made available.</em>
|
||||
</p>
|
||||
<div class="checkbox-field">
|
||||
<div class="sub-field">
|
||||
<%= f.check_box :mobile_comment_notifications %>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js" async="async"></script>
|
||||
<style>
|
||||
.primary-sticky-nav-author,.primary-sticky-nav-author-element{
|
||||
.primary-sticky-nav-author, .primary-sticky-nav-author-element {
|
||||
border: 1px solid <%= HexComparer.new([user_colors(@organization)[:bg], user_colors(@organization)[:text]]).brightness(0.88) %> !important;
|
||||
box-shadow: 3px 4px 0px <%= HexComparer.new([user_colors(@organization)[:bg], user_colors(@organization)[:text]]).brightness(0.88) %> !important;
|
||||
}
|
||||
.primary-sticky-nav-author button{
|
||||
|
||||
.primary-sticky-nav-author button {
|
||||
background-color: <%= user_colors(@organization)[:bg] %> !important;
|
||||
color: <%= user_colors(@organization)[:text] %> !important;
|
||||
<% if user_colors(@organization)[:bg].downcase == "#ffffff" %>
|
||||
border: 1px solid <%= user_colors(@organization)[:text] %> !important;
|
||||
<% end %>
|
||||
<% if user_colors(@organization)[:bg].downcase == "#ffffff" %>
|
||||
border: 1px solid <%= user_colors(@organization)[:text] %> !important;
|
||||
<% end %>
|
||||
}
|
||||
</style>
|
||||
<div class="settings-org-members">
|
||||
|
|
@ -43,8 +44,11 @@
|
|||
<h3>Grow the team</h3>
|
||||
<h5>Invite teammates by sending them the secret and the following instructions:</h5>
|
||||
<ol style="margin-bottom: 30px">
|
||||
<li>Sign up at <a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>">https://<%= ApplicationConfig["APP_DOMAIN"] %></a></li>
|
||||
<li>Navigate to <a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>/settings/organization">https://<%= ApplicationConfig["APP_DOMAIN"] %>/settings/organization</a></li>
|
||||
<li>Sign up at
|
||||
<a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>">https://<%= ApplicationConfig["APP_DOMAIN"] %></a></li>
|
||||
<li>Navigate to
|
||||
<a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>/settings/organization">https://<%= ApplicationConfig["APP_DOMAIN"] %>/settings/organization</a>
|
||||
</li>
|
||||
<li>Paste the secret code below and click <b>Join Organization</b></li>
|
||||
</ol>
|
||||
<h5>Your secret: (You should rotate this regularly)</h5>
|
||||
|
|
@ -125,7 +129,9 @@
|
|||
</div>
|
||||
<h2>Call-to-action box</h2>
|
||||
<h4 style="margin-top:-25px">Customizable text that appears to the right of every post for your organization</h4>
|
||||
<h4 style="margin-top:-15px">See an example from the <a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>/devteam/the-dev-badge-is-available-on-font-awesome-2ihe" target="_blank">DEV Team</a>.</h4>
|
||||
<h4 style="margin-top:-15px">See an example from the
|
||||
<a href="https://<%= ApplicationConfig["APP_DOMAIN"] %>/devteam/the-dev-badge-is-available-on-font-awesome-2ihe" target="_blank">DEV Team</a>.
|
||||
</h4>
|
||||
<div class="field">
|
||||
<%= f.label "Body text (Limited markdown — bold/italic/etc)" %>
|
||||
<%= f.text_area :cta_body_markdown, maxlength: 256, placeholder: "**This is an example**
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js" async="async"></script>
|
||||
<% unless @user.identities.exists?(provider:'github') %>
|
||||
<% unless @user.identities.exists?(provider: 'github') %>
|
||||
<div class="field">
|
||||
<a href="/users/auth/github" class="big-button cta" data-no-instant>
|
||||
<img src="<%= asset_path("github-logo.svg") %>" /> CONNECT GITHUB ACCOUNT
|
||||
|
|
@ -8,7 +7,7 @@
|
|||
</div>
|
||||
<% end %>
|
||||
|
||||
<% unless @user.identities.exists?(provider:'twitter') %>
|
||||
<% unless @user.identities.exists?(provider: 'twitter') %>
|
||||
<div class="field">
|
||||
<a href="/users/auth/twitter?callback_url=<%= ApplicationConfig["APP_PROTOCOL"] %><%= ApplicationConfig["APP_DOMAIN"] %>/users/auth/twitter/callback" class="big-button cta" data-no-instant>
|
||||
<img src="<%= asset_path("twitter-logo.svg") %>" /> CONNECT TWITTER ACCOUNT
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<style>
|
||||
.widget header{
|
||||
.widget header {
|
||||
color: <%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.88) %>;
|
||||
}
|
||||
|
||||
<% if user_colors(@user)[:bg].downcase.start_with?("#fff") %>
|
||||
.user-profile-follow-button {
|
||||
border: 1px solid <%= user_colors(@user)[:text] %> !important;
|
||||
}
|
||||
.user-profile-follow-button {
|
||||
border: 1px solid <%= user_colors(@user)[:text] %> !important;
|
||||
}
|
||||
|
||||
<% end %>
|
||||
</style>
|
||||
<div class="user-profile-header" style="<%= user_colors_style(@user) %>" itemscope itemtype="http://schema.org/Person" itemprop="mainEntityOfPage">
|
||||
|
|
@ -15,7 +17,8 @@
|
|||
<img class="profile-pic" src="<%= ProfileImage.new(@user).get(320) %>" itemprop="image" alt="<%= @user.username %> profile" style="border-color:<%= user_colors(@user)[:bg] %>;background:<%= user_colors(@user)[:bg] %>" />
|
||||
</div>
|
||||
<div class="profile-details">
|
||||
<h1 style="color:<%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %>"><span itemprop="name"><%= @user.name %></span>
|
||||
<h1 style="color:<%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %>">
|
||||
<span itemprop="name"><%= @user.name %></span>
|
||||
<span class="user-profile-follow-button-wrapper">
|
||||
<button id="user-follow-butt" class="cta follow-action-button user-profile-follow-button" style="color:<%= user_colors(@user)[:text] %>;background-color:<%= user_colors(@user)[:bg] %>" data-info='{"id":<%= @user.id %>,"className":"<%= @user.class.name %>"}'> </button>
|
||||
</span>
|
||||
|
|
@ -24,7 +27,7 @@
|
|||
<%= @user.summary.present? ? @user.summary : ["404 bio not found"].sample %>
|
||||
</p>
|
||||
<style>
|
||||
.profile-details .social .icon-img path{
|
||||
.profile-details .social .icon-img path {
|
||||
fill: <%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %> !important;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,18 @@
|
|||
<h3>Publishing to dev.to from RSS</h3>
|
||||
<p>
|
||||
Posts will land in your <a href="/dashboard">dashboard</a> <b><em>as drafts</em></b>, and then you can publish from there (or give dev.to admins permission to do so).
|
||||
Posts will land in your <a href="/dashboard">dashboard</a>
|
||||
<b><em>as drafts</em></b>, and then you can publish from there (or give dev.to admins permission to do so).
|
||||
</p>
|
||||
<p>
|
||||
Formatting will typically look good, but you may have to make manual fixes. In the case of Medium, you may have to manually fix embeds.
|
||||
</p>
|
||||
<p>
|
||||
To find out more about how drafts are created from your feed, read this <a href="/p/publishing_from_rss_guide">guide</a>.
|
||||
To find out more about how drafts are created from your feed, read this
|
||||
<a href="/p/publishing_from_rss_guide">guide</a>.
|
||||
</p>
|
||||
<p>
|
||||
Your feed will be fetched every time you submit this form and updates will be automatically fetched periodically thereafter. Contact <a href="mailto:yo@dev.to">yo@dev.to</a> if you encounter issues.
|
||||
Your feed will be fetched every time you submit this form and updates will be automatically fetched periodically thereafter. Contact
|
||||
<a href="mailto:yo@dev.to">yo@dev.to</a> if you encounter issues.
|
||||
</p>
|
||||
<p>
|
||||
FYI: Medium RSS feed URLs are <em>https://medium.com/feed/@your_username</em>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@
|
|||
|
||||
<% if params[:state] == "previous-registration" %>
|
||||
<div class="notice error-notice" id="notice">
|
||||
There is an existing account authorized with that social account. Contact <a href="mailto:yo@dev.to">yo@dev.to</a> if this is a mistake.
|
||||
There is an existing account authorized with that social account. Contact
|
||||
<a href="mailto:yo@dev.to">yo@dev.to</a> if this is a mistake.
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
|
@ -42,7 +43,8 @@
|
|||
<div class="field-notice">
|
||||
Email Verification
|
||||
<div class="small">
|
||||
you have requested a change to <a href="mailto:<%= @user.unconfirmed_email %>"><%= @user.unconfirmed_email %></a><br />
|
||||
you have requested a change to
|
||||
<a href="mailto:<%= @user.unconfirmed_email %>"><%= @user.unconfirmed_email %></a><br />
|
||||
check your inbox for the verification link to finalize the change.
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -74,7 +76,7 @@
|
|||
|
||||
<div class="settings-hub">
|
||||
<% @tab_list.each do |possible_tab| %>
|
||||
<% if @tab == possible_tab.downcase.gsub(" ","-") %>
|
||||
<% if @tab == possible_tab.downcase.gsub(" ", "-") %>
|
||||
<div class="single-settings-tab selected">
|
||||
<%= possible_tab %>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,13 +6,15 @@
|
|||
|
||||
<% cache "main-user-profile-header-area-#{@user.id}-#{@user.profile_updated_at}", expires_in: 10.days do %>
|
||||
<style>
|
||||
.widget header{
|
||||
.widget header {
|
||||
color: <%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.88) %>;
|
||||
}
|
||||
|
||||
<% if user_colors(@user)[:bg].downcase.start_with?("#fff") %>
|
||||
.user-profile-follow-button {
|
||||
border: 1px solid <%= user_colors(@user)[:text] %> !important;
|
||||
}
|
||||
.user-profile-follow-button {
|
||||
border: 1px solid <%= user_colors(@user)[:text] %> !important;
|
||||
}
|
||||
|
||||
<% end %>
|
||||
</style>
|
||||
<div class="user-profile-header" style="<%= user_colors_style(@user) %>" itemscope itemtype="http://schema.org/Person" itemprop="mainEntityOfPage">
|
||||
|
|
@ -22,7 +24,8 @@
|
|||
<img class="profile-pic" src="<%= ProfileImage.new(@user).get(320) %>" itemprop="image" alt="<%= @user.username %> profile" style="border-color:<%= user_colors(@user)[:bg] %>;background:<%= user_colors(@user)[:bg] %>" />
|
||||
</div>
|
||||
<div class="profile-details">
|
||||
<h1 style="color:<%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %>"><span itemprop="name"><%= @user.name %></span>
|
||||
<h1 style="color:<%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %>">
|
||||
<span itemprop="name"><%= @user.name %></span>
|
||||
<span class="user-profile-follow-button-wrapper">
|
||||
<button id="user-follow-butt" class="cta follow-action-button user-profile-follow-button" style="color:<%= user_colors(@user)[:text] %>;background-color:<%= user_colors(@user)[:bg] %>" data-info='{"id":<%= @user.id %>,"className":"<%= @user.class.name %>"}'> </button>
|
||||
</span>
|
||||
|
|
@ -31,7 +34,7 @@
|
|||
<%= @user.summary.presence || ["404 bio not found"].sample %>
|
||||
</p>
|
||||
<style>
|
||||
.profile-details .social .icon-img path{
|
||||
.profile-details .social .icon-img path {
|
||||
fill: <%= HexComparer.new([user_colors(@user)[:bg], user_colors(@user)[:text]]).brightness(0.78) %> !important;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -99,10 +102,10 @@
|
|||
<% end %>
|
||||
|
||||
<div class="home sub-home" id="index-container"
|
||||
data-params="<%= params.to_json(only: %i[tag username q]) %>" data-which="<%= @list_of %>"
|
||||
data-algolia-tag="<%= "user_#{@user.id}" %>"
|
||||
data-feed="<%= params[:timeframe] || "base-feed" %>"
|
||||
data-articles-since="0">
|
||||
data-params="<%= params.to_json(only: %i[tag username q]) %>" data-which="<%= @list_of %>"
|
||||
data-algolia-tag="<%= "user_#{@user.id}" %>"
|
||||
data-feed="<%= params[:timeframe] || "base-feed" %>"
|
||||
data-articles-since="0">
|
||||
<%= render "users/sidebar" %>
|
||||
<div class="articles-list" id="articles-list">
|
||||
<div class="on-page-nav-controls user-nav-controls" id="on-page-nav-controls">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue