Merge pull request #1697 from KanchanChauhan/UXChanges
[WIP] Do not merge
This commit is contained in:
commit
49768bf86a
36 changed files with 904 additions and 327 deletions
|
|
@ -449,12 +449,12 @@ pre {
|
|||
color: inherit;
|
||||
}
|
||||
a.btn-primary {
|
||||
color: #fff;
|
||||
color: #7575ff;
|
||||
}
|
||||
a.btn-primary:hover,
|
||||
a.btn-primary:focus,
|
||||
a.btn-primary:visited {
|
||||
color: #fff;
|
||||
color: #7575ff;
|
||||
}
|
||||
.btn-next-wrapper {
|
||||
margin-top: 32px;
|
||||
|
|
|
|||
|
|
@ -411,6 +411,7 @@ a.no-decoration:active {
|
|||
.web-footer {
|
||||
padding: 20px 0px;
|
||||
min-height: 140px;
|
||||
border-top: 1px solid #d1d8dd;
|
||||
}
|
||||
.carousel-control .icon {
|
||||
position: absolute;
|
||||
|
|
@ -458,7 +459,6 @@ a.no-decoration:active {
|
|||
padding-left: 15px;
|
||||
}
|
||||
.page-header-actions-block {
|
||||
padding-top: 20px;
|
||||
text-align: right;
|
||||
}
|
||||
fieldset {
|
||||
|
|
@ -489,9 +489,8 @@ fieldset {
|
|||
}
|
||||
.page-container {
|
||||
padding: 0px;
|
||||
}
|
||||
.page-content {
|
||||
padding-bottom: 20px;
|
||||
max-width: 970px;
|
||||
margin: auto;
|
||||
}
|
||||
.page-content hr {
|
||||
margin-left: -15px;
|
||||
|
|
@ -570,39 +569,40 @@ fieldset {
|
|||
.blog-list-content .website-list .result {
|
||||
border: 0px;
|
||||
}
|
||||
.blog-list-content .web-list-item {
|
||||
padding: 0px;
|
||||
}
|
||||
.blog-list-content .web-list-item:hover {
|
||||
background: transparent;
|
||||
}
|
||||
.longform {
|
||||
padding: 15px 0px;
|
||||
line-height: 1.5;
|
||||
font-size: 1.1em;
|
||||
max-width: 700px;
|
||||
}
|
||||
.longform p {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.blog-category {
|
||||
margin-top: 60px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.blogger {
|
||||
padding: 10px 15px;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 15px;
|
||||
border-top: 1px solid #d1d8dd;
|
||||
margin: 0px -15px;
|
||||
}
|
||||
.blog-comments,
|
||||
.help-article-comments {
|
||||
margin: 0px -15px;
|
||||
border-top: 1px solid #d1d8dd;
|
||||
padding: 5px 15px 15px;
|
||||
padding: 5px 15px 15px 70px;
|
||||
}
|
||||
.comment-view {
|
||||
background-color: #fafbfc;
|
||||
position: relative;
|
||||
}
|
||||
.comment-view:before {
|
||||
content: "";
|
||||
background-color: #fafbfc;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 4000px;
|
||||
left: -2000px;
|
||||
z-index: -1;
|
||||
}
|
||||
.blog-comment-row {
|
||||
margin: 0px -15px;
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid #d1d8dd;
|
||||
}
|
||||
.blog-comment-row:last-child {
|
||||
margin-bottom: 30px;
|
||||
|
|
@ -643,9 +643,6 @@ a.active {
|
|||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
.page-breadcrumbs {
|
||||
padding-top: 20px;
|
||||
}
|
||||
.page-breadcrumbs .breadcrumb {
|
||||
padding: 0px;
|
||||
background-color: transparent;
|
||||
|
|
@ -829,3 +826,96 @@ body {
|
|||
.btn-next-wrapper {
|
||||
margin-top: 60px;
|
||||
}
|
||||
.footer-group-label {
|
||||
display: inline-block;
|
||||
padding-bottom: 4px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
}
|
||||
.item-list {
|
||||
padding-top: 20px;
|
||||
}
|
||||
.sidebar-block,
|
||||
.content-block {
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
.content-header {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.selected-p-item {
|
||||
color: #7575ff;
|
||||
}
|
||||
a:hover,
|
||||
a:visited,
|
||||
a:link,
|
||||
a:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
.blog-header {
|
||||
font-size: 36px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.blog-dot:before {
|
||||
padding-right: 8px;
|
||||
padding-left: 8px;
|
||||
content: "\2022";
|
||||
}
|
||||
.blog-list-item {
|
||||
margin-top: 25px;
|
||||
margin-bottom: 25px;
|
||||
border: none;
|
||||
}
|
||||
.post-description {
|
||||
margin-top: 0px;
|
||||
}
|
||||
.post-by {
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
}
|
||||
li .footer-child-item {
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
li .social-child-item {
|
||||
margin-bottom: 4px !important;
|
||||
}
|
||||
.blog-info {
|
||||
text-align: center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
.blog-text {
|
||||
text-align: justify;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
font-size: 18px;
|
||||
max-width: 700px;
|
||||
margin: auto;
|
||||
}
|
||||
.blog-text p {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
.blogger-name {
|
||||
font-size: 24px;
|
||||
}
|
||||
.comment-header {
|
||||
font-size: 20px;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
#item-search {
|
||||
position: relative;
|
||||
outline: none;
|
||||
border: none;
|
||||
}
|
||||
.vert-line {
|
||||
overflow: hidden;
|
||||
}
|
||||
.vert-line > div + div {
|
||||
border-left: 1px solid #d1d8dd;
|
||||
}
|
||||
.vert-line > div {
|
||||
padding-bottom: 2000px;
|
||||
margin-bottom: -2000px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -203,9 +203,9 @@ pre {
|
|||
}
|
||||
|
||||
a.btn-primary& {
|
||||
color: #fff;
|
||||
color: #7575ff;
|
||||
&:hover, &:focus, &:visited {
|
||||
color: #fff;
|
||||
color: #7575ff;;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@
|
|||
.web-footer {
|
||||
padding: 20px 0px;
|
||||
min-height: 140px;
|
||||
border-top: 1px solid #d1d8dd;
|
||||
}
|
||||
|
||||
.carousel-control .icon {
|
||||
|
|
@ -123,7 +124,6 @@
|
|||
}
|
||||
|
||||
.page-header-actions-block {
|
||||
padding-top: 20px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
|
@ -159,10 +159,11 @@ fieldset {
|
|||
|
||||
.page-container {
|
||||
padding: 0px;
|
||||
max-width: 970px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
padding-bottom: 20px;
|
||||
hr {
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
|
|
@ -223,7 +224,6 @@ fieldset {
|
|||
|
||||
.website-list .result {
|
||||
margin-top: 15px;
|
||||
// border: 1px solid @border-color;
|
||||
}
|
||||
|
||||
.web-list-item {
|
||||
|
|
@ -261,46 +261,46 @@ fieldset {
|
|||
border: 0px;
|
||||
}
|
||||
|
||||
.blog-list-content .web-list-item {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.blog-list-content .web-list-item:hover {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.longform {
|
||||
padding: 15px 0px;
|
||||
line-height: 1.5;
|
||||
font-size: 1.1em;
|
||||
max-width: 700px;
|
||||
|
||||
p {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.blog-category {
|
||||
margin-top: 60px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.blogger {
|
||||
padding: 10px 15px;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 15px;
|
||||
border-top: 1px solid @border-color;
|
||||
margin: 0px -15px;
|
||||
}
|
||||
|
||||
.blog-comments,
|
||||
.help-article-comments {
|
||||
margin: 0px -15px;
|
||||
border-top: 1px solid @border-color;
|
||||
padding: 5px 15px 15px;
|
||||
padding: 5px 15px 15px 70px;
|
||||
}
|
||||
.comment-view {
|
||||
background-color: #fafbfc;
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
.comment-view:before {
|
||||
content:"";
|
||||
background-color:#fafbfc;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 4000px;
|
||||
left: -2000px;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.blog-comment-row {
|
||||
margin: 0px -15px;
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid @border-color;
|
||||
}
|
||||
|
||||
.blog-comment-row:last-child {
|
||||
|
|
@ -355,10 +355,6 @@ a.active {
|
|||
// background-color: #ffa;
|
||||
// }
|
||||
|
||||
.page-breadcrumbs {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.page-breadcrumbs .breadcrumb {
|
||||
padding: 0px;
|
||||
background-color: transparent;
|
||||
|
|
@ -423,3 +419,106 @@ a.active {
|
|||
.btn-next-wrapper {
|
||||
margin-top: 60px;
|
||||
}
|
||||
|
||||
.footer-group-label{
|
||||
display:inline-block;
|
||||
padding-bottom: 4px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.item-list{
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.sidebar-block, .content-block {
|
||||
padding-top:50px;
|
||||
padding-bottom:50px;
|
||||
}
|
||||
|
||||
.content-header {
|
||||
padding-bottom:20px;
|
||||
}
|
||||
|
||||
.selected-p-item {
|
||||
color:#7575ff;
|
||||
}
|
||||
|
||||
a:hover, a:visited, a:link, a:active
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.blog-header{
|
||||
font-size:36px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.blog-dot:before{
|
||||
padding-right:8px;
|
||||
padding-left:8px;
|
||||
content:"\2022";
|
||||
}
|
||||
|
||||
.blog-list-item {
|
||||
margin-top:25px;
|
||||
margin-bottom:25px;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.post-description{
|
||||
margin-top:0px;
|
||||
}
|
||||
|
||||
.post-by {
|
||||
margin-top:4px;
|
||||
margin-bottom:4px;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
li .footer-child-item {
|
||||
margin-bottom:4px !important;
|
||||
}
|
||||
|
||||
li .social-child-item {
|
||||
margin-bottom:4px !important;
|
||||
}
|
||||
|
||||
.blog-info{
|
||||
text-align:center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.blog-text{
|
||||
text-align:justify;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
font-size: 18px;
|
||||
max-width:700px;
|
||||
margin:auto;
|
||||
p {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.blogger-name{
|
||||
font-size:24px;
|
||||
}
|
||||
|
||||
.comment-header{
|
||||
font-size:20px;
|
||||
padding-top:30px;
|
||||
padding-bottom:20px;
|
||||
}
|
||||
|
||||
#item-search {
|
||||
position: relative;
|
||||
outline:none;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.vert-line {overflow:hidden;}
|
||||
.vert-line>div+div{border-left:1px solid #d1d8dd;}
|
||||
.vert-line>div{
|
||||
padding-bottom:2000px; margin-bottom:-2000px;}
|
||||
|
|
@ -1,36 +1,36 @@
|
|||
{% extends "templates/web.html" %}
|
||||
|
||||
{% block header %}
|
||||
<h1 itemprop="name headline" itemscope itemtype="http://schema.org/BlogPost">
|
||||
{{ title }}
|
||||
</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% include "templates/includes/breadcrumbs.html" %}
|
||||
<div class="page-breadcrumbs" data-html-block="breadcrumbs">
|
||||
<ul class="breadcrumb">
|
||||
<li>
|
||||
<a href="/blog" class="blog-header text-extra-muted">{{ blog_title or "Blog" }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<article class="blog-content" itemscope itemtype="http://schema.org/BlogPost">
|
||||
<!-- begin blog content -->
|
||||
<p class="small text-muted blog-info">
|
||||
<span itemprop="author">{{ blogger_info and blogger_info.full_name or full_name }}</span>,
|
||||
<span itemprop="dateCreated">{{ updated }}</span>
|
||||
</p>
|
||||
<div class="blog-info">
|
||||
<div class="text-muted blog-category">{{blog_category}}</div>
|
||||
<div class="blog-header">
|
||||
{{ title }}
|
||||
</div>
|
||||
<p class="post-by text-muted"><a href="/blog?by={{ blogger }}&by_name={{ full_name }}" class="no-decoration">
|
||||
BY {{ blogger_info and blogger_info.full_name or full_name }}</a> <i class="blog-dot"></i> {{ frappe.format_date(published_on) }} <i class="blog-dot"></i>{{ comment_text }}</p>
|
||||
</div>
|
||||
<div itemprop="articleBody" class="longform blog-text">
|
||||
{{ content }}
|
||||
</div>
|
||||
<p class="text-muted blog-category">
|
||||
<a href="/{{ parent_website_route }}" class="no-decoration">
|
||||
{{ _("This post is filed under {0}").format(blog_category) }}</a>
|
||||
</p>
|
||||
<!-- end blog content -->
|
||||
</article>
|
||||
{% if blogger_info %}
|
||||
<div class="post-by text-muted" style="margin-bottom:20px;">Author</div>
|
||||
{% include "templates/includes/blog/blogger.html" %}
|
||||
{% endif %}
|
||||
<div class="blog-comments">
|
||||
<h2>Comments</h2>
|
||||
{% include 'templates/includes/comments/comments.html' %}
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,12 @@
|
|||
{% extends "templates/web.html" %}
|
||||
|
||||
{% block title %}{{ blog_title or "Blog" }}{% endblock %}
|
||||
|
||||
{% block header %}<div class="blog-header text-extra-muted">{{ blog_title or "Blog" }}</div>{% endblock %}
|
||||
{% block hero %}{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<!-- no-header -->
|
||||
<!-- no-breadcrumbs -->
|
||||
{% if blog_subtitle %}
|
||||
<div class="list-hero">
|
||||
<h1>
|
||||
{{ blog_subtitle }}
|
||||
</h1>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="blog-list-content">
|
||||
<div id="blog-list">
|
||||
{% include "templates/includes/list/list.html" %}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,12 @@
|
|||
{%- set post = doc -%}
|
||||
<div class="row web-list-item">
|
||||
<div class="web-list-item blog-list-item">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h3><a href="/{{ post.page_name }}">{{ post.title }}</a></h3>
|
||||
<div class="blog-header"><a href="/{{ post.page_name }}">{{ post.title }}</a></div>
|
||||
<p class="post-by text-muted"><a href="/blog?by={{ post.blogger }}&by_name={{ post.full_name }}" class="no-decoration">
|
||||
BY {{ post.full_name }}</a> <i class="blog-dot"></i> {{ frappe.format_date(post.published_on) }} <i class="blog-dot"></i> <a href="/{{ post.parent_website_route }}" class="no-decoration">{{ post.blog_category }}</a> <i class="blog-dot"></i> {{ post.comment_text }}</p>
|
||||
<p class="post-description">{{ post.content }}</p>
|
||||
<p class="text-muted small post-meta">
|
||||
<a href="/blog?by={{ post.blogger }}&by_name={{ post.full_name }}" class="no-decoration">
|
||||
{{ post.full_name }}</a> / {{ frappe.format_date(post.published_on) }} /
|
||||
<a href="/{{ post.parent_website_route }}" class="no-decoration">{{ post.blog_category }}</a> /
|
||||
{{ post.comment_text }}</p>
|
||||
</div>
|
||||
<!-- <div class="col-xs-2 text-center text-muted">
|
||||
<h1 class="blog-day" style="margin-bottom: 5px;">{{ post.day }}</h1>
|
||||
<div class="small">{{ post.month }} {{ post.year }}</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="inline-block" style="width: calc(100% - 100px)">
|
||||
<h4>About {{ blogger_info.full_name }}</h4>
|
||||
<div class="blogger-name">{{ blogger_info.full_name }}</div>
|
||||
<p class="text-muted">{{ blogger_info.bio }}</p>
|
||||
<p><a href="/blog?by={{ blogger_info.name }}&by_name={{ blogger_info.full_name }}">
|
||||
All Posts By {{ blogger_info.full_name }}</a></p>
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
</div>
|
||||
<div class="inline-block" style="width: calc(100% - 100px)">
|
||||
<h4 itemprop="name">{{ comment.sender_full_name }}
|
||||
<br>
|
||||
<small class="text-muted">
|
||||
|
||||
<small class="text-muted pull-right">
|
||||
<span itemprop="commentTime">{{ comment.creation|global_date_format }}</span>
|
||||
</small>
|
||||
</h4>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
<div class="comment-view">
|
||||
<div class="comment-header">{{ comment_text }}</div>
|
||||
{% if not comment_list %}
|
||||
<div class="no-comment">
|
||||
<p class="text-muted">{{ _("Start a new discussion.") }}</p>
|
||||
|
|
@ -5,11 +7,12 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div itemscope itemtype="http://schema.org/UserComments" id="comment-list">
|
||||
<div itemscope itemtype="http://schema.org/UserComments" id="comment-list">
|
||||
{% for comment in comment_list %}
|
||||
{% include "templates/includes/comments/comment.html" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="add-comment-section">
|
||||
<div class="text-muted hidden login-required">
|
||||
|
|
@ -17,9 +20,8 @@
|
|||
</div>
|
||||
|
||||
<div class="comment-form-wrapper">
|
||||
<a class="add-comment btn btn-default btn-sm">{{ _("Add Comment") }}</a>
|
||||
<div style="display: none;" id="comment-form">
|
||||
<p>{{ _("Add Comment") }}</p>
|
||||
<div id="comment-form">
|
||||
<p>{{ _("Leave a Comment") }}</p>
|
||||
<div class="alert" style="display:none;"></div>
|
||||
<form>
|
||||
<fieldset>
|
||||
|
|
@ -35,7 +37,7 @@
|
|||
</div>
|
||||
<textarea class="form-control" name="comment" rows=10
|
||||
placeholder="{{ _("Comment") }}"></textarea>
|
||||
<p>
|
||||
<p style="text-align:center;">
|
||||
<button class="btn btn-primary btn-sm" id="submit-comment">
|
||||
{{ _("Submit") }}</button>
|
||||
</p>
|
||||
|
|
@ -60,10 +62,7 @@
|
|||
if(n_comments > 50) {
|
||||
$(".add-comment").toggle(false)
|
||||
.parent().append("<div class='text-muted'>Comments are closed.</div>")
|
||||
}
|
||||
$(".add-comment").click(function() {
|
||||
$(this).toggle(false);
|
||||
$("#comment-form").toggle();
|
||||
}
|
||||
|
||||
var full_name = "", user_id = "";
|
||||
if(frappe.is_user_logged_in()) {
|
||||
|
|
@ -75,7 +74,7 @@
|
|||
}
|
||||
}
|
||||
$("#comment-form textarea").val("");
|
||||
})
|
||||
|
||||
$("#submit-comment").click(function() {
|
||||
var args = {
|
||||
comment_by_fullname: $("[name='comment_by_fullname']").val(),
|
||||
|
|
|
|||
|
|
@ -1,56 +1,58 @@
|
|||
<footer class="web-footer">
|
||||
<section class="footer-links">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-9 web-footer-menu">
|
||||
<ul class="list-inline">
|
||||
{% for item in footer_items %}
|
||||
<li><a href="{{ item.url }}" {{ item.target }}
|
||||
data-label="{{ item.label }}">{{ item.label }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 text-left">
|
||||
{% if facebook_share or google_plus_one or twitter_share or linked_in_share %}
|
||||
<ul class="list-unstyled small" style="float:left;">
|
||||
<span class="footer-group-label text-extra-muted">Share</span>
|
||||
{% if google_plus_one %}
|
||||
<li style="margin-bottom:4px;"><a href="https://plus.google.com/share?url={{ url }}"
|
||||
target="_blank">Google +</a></li>
|
||||
{% endif %}
|
||||
{% if twitter_share %}
|
||||
<li style="margin-bottom:4px;"><a href="https://twitter.com/intent/tweet?url={{ url }}&text={{ encoded_title }}"
|
||||
target="_blank" >Twitter</a></li>
|
||||
{% endif %}
|
||||
{% if facebook_share %}
|
||||
<li style="margin-bottom:4px;"><a href="https://www.facebook.com/sharer.php?u={{ url }}&t={{ encoded_title }}&via={{ twitter_share_via }}"
|
||||
target="_blank">Facebook</a></li>
|
||||
{% endif %}
|
||||
{% if linked_in_share %}
|
||||
<li style="margin-bottom:4px;"> <a href="http://www.linkedin.com/shareArticle?mini=true&url={{ url }}&title={{ encoded_title }}"
|
||||
target="_blank">Linkedin</a></li>
|
||||
{% endif %}
|
||||
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if footer_items -%}
|
||||
<ul class="list-unstyled navbar-nav">
|
||||
{% include "templates/includes/footer/footer_items.html" %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 text-right">
|
||||
{% block extension %}{% include "templates/includes/footer/footer_extension.html" %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
{% if copyright %}<div class="web-footer-copyright text-muted small">© {{ copyright }}</div>{% endif %}
|
||||
{% if footer_address %}{{ footer_address }}{% endif %}
|
||||
</div>
|
||||
<div class="col-sm-4 text-right">
|
||||
{% if facebook_share or google_plus_one or twitter_share or linked_in_share %}
|
||||
<div class="social-icons text-muted small" style="margin-bottom: 15px;">
|
||||
<span>
|
||||
{{ share_text or "Share this page on: "}}</span>
|
||||
{% if google_plus_one %}
|
||||
<a href="https://plus.google.com/share?url={{ url }}"
|
||||
target="_blank"><i class="icon-google-plus"></i></a>
|
||||
{% endif %}
|
||||
{% if twitter_share %}
|
||||
<a href="https://twitter.com/intent/tweet?url={{ url }}&text={{ encoded_title }}"
|
||||
target="_blank" ><i class="icon-twitter"></i></a>
|
||||
{% endif %}
|
||||
{% if facebook_share %}
|
||||
<a href="https://www.facebook.com/sharer.php?u={{ url }}&t={{ encoded_title }}&via={{ twitter_share_via }}"
|
||||
target="_blank"><i class="icon-facebook"></i></a>
|
||||
{% endif %}
|
||||
{% if linked_in_share %}
|
||||
<a href="http://www.linkedin.com/shareArticle?mini=true&url={{ url }}&title={{ encoded_title }}"
|
||||
target="_blank"><i class="icon-linkedin"></i></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="text-muted small col-sm-6">
|
||||
{% if copyright %}
|
||||
© {{ copyright }}
|
||||
{% elif footer_address%}
|
||||
{{ footer_address }}
|
||||
{% endif %}
|
||||
|
||||
{# powered #}
|
||||
<div class="text-right footer-powered">
|
||||
</div>
|
||||
{# powered #}
|
||||
<div class="text-muted small col-sm-6 text-right footer-powered">
|
||||
{% block powered %}
|
||||
{% include "templates/includes/footer/footer_powered.html" %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
{% block extension %}{% include "templates/includes/footer/footer_extension.html" %}{% endblock %}
|
||||
</div>
|
||||
</section>
|
||||
</footer>
|
||||
|
|
|
|||
24
frappe/templates/includes/footer/footer_items.html
Normal file
24
frappe/templates/includes/footer/footer_items.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{% for page in footer_items %}
|
||||
{% if not page.parent_label -%}
|
||||
<li style="margin-left:65px;" data-label='{{ page.label }}' {% if page.child_items %} {% endif %}>
|
||||
<a {% if not page.child_items -%} href="{{ (page.url or '')|abs_url }}" {%- endif %}
|
||||
{% if page.child_items %} onclick="return false;" {% endif %}
|
||||
{{ page.target or ''}}>
|
||||
{%- if page.child_items -%}
|
||||
<span class="footer-group-label text-extra-muted">{{ page.label }}<span>
|
||||
</a>
|
||||
<ul class="list-unstyled small">
|
||||
{%- for child in page.child_items -%}
|
||||
<li class="footer-child-item" data-label='{{ child.label }}'>
|
||||
<a {% if child.indent %} style="padding-left: {{((child.indent|int)+1)*15 }}px"{% endif %}
|
||||
href="{{ child.url | abs_url }}" {{ child.target or '' }}>{{ child.label }}</a>
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- else -%}
|
||||
{{ page.label }}
|
||||
</a>
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
|
|
@ -7,13 +7,37 @@
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.blue {
|
||||
color: #7575ff;
|
||||
}
|
||||
|
||||
.icon-facebook, .icon-facebook-sign{
|
||||
color: #3b5998;
|
||||
}
|
||||
.icon-google-plus, .icon-google-plus-sign{
|
||||
color: #C63D2D;
|
||||
}
|
||||
.icon-github, .icon-github-sign{
|
||||
color: black;
|
||||
}
|
||||
|
||||
.icon-twitter, .icon-twitter-sign{
|
||||
color: #00a0d1;
|
||||
}
|
||||
|
||||
.icon-linkedin, .icon-linkedin-sign{
|
||||
color: #4875B4;
|
||||
}
|
||||
|
||||
#wrap {
|
||||
background-color: #fafbfc;
|
||||
background-color: #7575ff;
|
||||
}
|
||||
|
||||
.form-signin {
|
||||
max-width: 360px;
|
||||
padding: 30px;
|
||||
padding-right: 30px;
|
||||
padding-left: 30px;
|
||||
padding-top: 10px;
|
||||
margin: 0 auto;
|
||||
border-radius: 5px;
|
||||
background-color: #fff;
|
||||
|
|
@ -42,3 +66,50 @@
|
|||
.btn-social {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-top:20px;
|
||||
margin-bottom:20px;
|
||||
}
|
||||
|
||||
h5 span {
|
||||
background: #fff;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
h5:before {
|
||||
background: #ddd;
|
||||
content: "";
|
||||
display: block;
|
||||
height: 1px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 100%;
|
||||
}
|
||||
h5:before {
|
||||
left: 0;
|
||||
}
|
||||
.login_header{
|
||||
font-size: 36px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-bottom:20px;
|
||||
|
||||
}
|
||||
|
||||
p{
|
||||
margin-bottom:20px;
|
||||
}
|
||||
.btn-login, .btn-signup, .btn-forgot {
|
||||
background: #7575ff;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
padding-top:10px;
|
||||
padding-bottom:30px;
|
||||
}
|
||||
|
|
@ -13,5 +13,6 @@
|
|||
{% include "templates/includes/navbar/navbar_link.html" %}
|
||||
{%- endif -%}
|
||||
{%- endfor %}
|
||||
<li class="shopping-cart" style="padding-top:9px;"></li>
|
||||
{% include "templates/includes/navbar/navbar_login.html" %}
|
||||
</ul>
|
||||
|
|
|
|||
30
frappe/templates/includes/search_box.html
Normal file
30
frappe/templates/includes/search_box.html
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<div class="item-search text-muted pull-right">
|
||||
<input type="text" id="item-search" placeholder="Quick Search" autocomplete="off">
|
||||
<i class="octicon octicon-search"></i>
|
||||
</div>
|
||||
<div class="clearfix pull-right" style="width:300px;">
|
||||
<h4 class="item-search-results pull-left"></h4>
|
||||
<p class="pull-right">
|
||||
<a style="display: none; padding-left:5px;" href="javascript:history.back();" class="octicon octicon-x text-extra-muted clear" title="Clear Search" ></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
frappe.ready(function() {
|
||||
if(get_url_arg("q")){
|
||||
var txt = get_url_arg("q");
|
||||
$(".item-search-results").html("Search results for : " + txt);
|
||||
$(".clear").toggle(true);
|
||||
}
|
||||
var thread = null;
|
||||
function findResult(t) {
|
||||
window.location.href=document.URL + "&q=" + t;
|
||||
}
|
||||
|
||||
$("#item-search").keyup(function() {
|
||||
clearTimeout(thread);
|
||||
var $this = $(this); thread = setTimeout(function(){findResult($this.val())}, 1000);
|
||||
});
|
||||
$(".form-search").on("submit", function() { return false; });
|
||||
});
|
||||
</script>
|
||||
49
frappe/templates/includes/web_sidebar.html
Normal file
49
frappe/templates/includes/web_sidebar.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<div class="web-sidebar">
|
||||
<div class="your-account-info-sidebar">
|
||||
<div style="float:left;margin-right:20px;">
|
||||
<span class="user-image-sidebar"></span>
|
||||
</div>
|
||||
<div>
|
||||
<h4 style="margin-top:0px;margin-bottom:0px;">{{ fullname }}</h4>
|
||||
<a href="/?cmd=web_logout">
|
||||
<h6 style="margin-top:0px;" class="text-muted">{{ _("Logout") }}</h6>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-items">
|
||||
<ul class="list-unstyled sidebar" style="margin: 15px 0px;">
|
||||
<li class="item-list">
|
||||
<a href="/me">
|
||||
<h5>My Account
|
||||
</h5>
|
||||
</a>
|
||||
</li>
|
||||
{% for item in my_account_list -%}
|
||||
{% if item.count or (not item.reference_doctype) %}
|
||||
<li class="item-list">
|
||||
<a href="{{ item.route }}"
|
||||
{% if item.target %}target="{{ item.target }}"{% endif %}>
|
||||
<h5>{{ _(item.title) }}
|
||||
{% if item.reference_doctype %}
|
||||
<span class="badge">
|
||||
{{ "20+" if item.count > 20 else item.count }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</h5>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
frappe.ready(function() {
|
||||
$('.sidebar a').each(function(index) {
|
||||
if(this.href.trim() == window.location)
|
||||
$(this).addClass("selected-p-item");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
{% extends "templates/web.html" %}
|
||||
|
||||
{% block title %}About Us{% endblock %}
|
||||
|
||||
{% block page_sidebar %}
|
||||
{% include "templates/pages/web_sidebar.html" %}
|
||||
{% endblock %}
|
||||
{% block page_content %}
|
||||
<!-- no-sidebar -->
|
||||
<article class="about-content">
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ from __future__ import unicode_literals
|
|||
import frappe
|
||||
|
||||
def get_context(context):
|
||||
context.show_sidebar=True
|
||||
return { "doc": frappe.get_doc("About Us Settings", "About Us Settings") }
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ def get(doctype, txt=None, limit_start=0, **kwargs):
|
|||
for doc in raw_result:
|
||||
doc.doctype = doctype
|
||||
new_context = frappe._dict(doc=doc, meta=meta)
|
||||
new_context.doc = frappe.get_doc(doc)
|
||||
|
||||
if not frappe.flags.in_test:
|
||||
new_context["pathname"] = frappe.local.request.path.strip("/ ")
|
||||
|
|
|
|||
|
|
@ -2,53 +2,59 @@
|
|||
|
||||
{% block style %}
|
||||
<style>
|
||||
{% include "templates/includes/login/login.css" %}
|
||||
{% include "templates/includes/login/login.css" %}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<!-- no-header -->
|
||||
<!-- no-sidebar -->
|
||||
<div class="login-content" style="padding-top: 30px; padding-bottom:15px">
|
||||
<div class="login-content">
|
||||
<form class="form-signin form-login" role="form">
|
||||
{%- if social_login -%}
|
||||
<h4 class="form-signin-heading text-center">{{ _("Sign in using") }}</h4>
|
||||
<p class="text-center" style="margin-top: 15px">
|
||||
{%- if facebook_login is defined %}
|
||||
<a href="{{ facebook_login }}" class="grey no-decoration btn-social btn-facebook">
|
||||
<i class="icon-facebook-sign"></i> {{ _("Facebook") }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if google_login is defined %}
|
||||
<a href="{{ google_login }}" class="grey no-decoration btn-social btn-google">
|
||||
<i class="icon-google-plus-sign"></i> {{ _("Google") }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if github_login is defined %}
|
||||
<a href="{{ github_login }}" class="grey no-decoration btn-social btn-github">
|
||||
<i class="icon-github-sign"></i> {{ _("GitHub") }}</a>
|
||||
{%- endif -%}
|
||||
</p>
|
||||
<p class="text-muted text-center" style="margin: 20px 0px">{{ _("or") }}</p>
|
||||
{%- endif -%}
|
||||
|
||||
<div class="login_header">Login</div>
|
||||
|
||||
<input type="text" id="login_email"
|
||||
class="form-control" placeholder="{{ _('Email address') }}" required autofocus>
|
||||
|
||||
<input type="password" id="login_password"
|
||||
class="form-control" placeholder="{{ _('Password') }}" required>
|
||||
<!-- <label class="checkbox">
|
||||
<input type="checkbox" value="remember-me"> Remember me
|
||||
</label> -->
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<p style="float:left" class="text-center small"><input type="checkbox" value="remember-me"> Remember me </p>
|
||||
<p style="float:right" class="text-center small"><a href="#forgot">{{ _("Forgot Password?") }}</a></p>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-lg btn-default btn-block btn-login" type="submit">{{ _("Sign in") }}</button>
|
||||
<div style="margin-top: 15px">
|
||||
{%- if not disable_signup -%}
|
||||
<p class="text-center small">
|
||||
<a href="#signup" class="grey">{{ _("Not a user yet? Sign up") }}</a>
|
||||
|
||||
{# {%- if social_login -%} #}
|
||||
<h5><span>{{ _("Or login with") }}</span></h5>
|
||||
|
||||
|
||||
<p class="text-center" style="margin-top: 15px">
|
||||
{#{%- if facebook_login is defined %}#}
|
||||
<a href="{{ facebook_login }}" class="no-decoration btn-social btn-facebook">
|
||||
<i class="icon-facebook-sign icon-2x"></i></a>
|
||||
{#{%- endif -%}
|
||||
|
||||
{%- if google_login is defined %}#}
|
||||
<a href="{{ google_login }}" class="no-decoration btn-social btn-google">
|
||||
<i class="icon-google-plus-sign icon-2x"></i></a>
|
||||
{#{%- endif -%}
|
||||
|
||||
{%- if github_login is defined %}#}
|
||||
<a href="{{ github_login }}" class="no-decoration btn-social btn-github">
|
||||
<i class="icon-github-sign icon-2x"></i></a>
|
||||
{#{%- endif -%}#}
|
||||
</p>
|
||||
{%- endif -%}
|
||||
{# {%- endif -%} #}
|
||||
|
||||
<div style="margin-top: 25px">
|
||||
{%- if not disable_signup -%}
|
||||
<p class="text-center small">
|
||||
<a href="#forgot" class="grey">{{ _("Forgot Password?") }}</a>
|
||||
{{ _("Dont have an account? ") }}<a class="blue" href="#signup">{{ _("Sign up.") }}</a>
|
||||
</p>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
|
@ -60,9 +66,8 @@
|
|||
<br>
|
||||
<button class="btn btn-lg btn-default btn-block btn-signup" type="submit">{{ _("Sign up") }}</button>
|
||||
<p class="text-center small">
|
||||
<br><a href="#login" class="grey">{{ _("Have an account? Login") }}</a>
|
||||
{{ _("Have an account? ") }}<a href="#login" class="blue">{{ _("Login") }}</a>
|
||||
</p>
|
||||
|
||||
</form>
|
||||
|
||||
<form class="form-signin form-forgot hide" role="form">
|
||||
|
|
@ -71,15 +76,14 @@
|
|||
<br>
|
||||
<button class="btn btn-lg btn-default btn-block btn-forgot" type="submit">{{ _("Send Password") }}</button>
|
||||
<p class="text-center small">
|
||||
<br><a href="#login" class="grey">{{ _("Back to Login") }}</a>
|
||||
</p>
|
||||
|
||||
<br><a href="#login" class="blue">{{ _("Back to Login") }}</a>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block script %}
|
||||
<script>{% include "templates/includes/login/login.js" %}</script>
|
||||
<script>{% include "templates/includes/login/login.js" %}</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block sidebar %}{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1,25 +1,21 @@
|
|||
{% extends "templates/web.html" %}
|
||||
|
||||
{% block title %}{{ _("My Account") }}{% endblock %}
|
||||
{% block header %}<h1>{{ _("My Account") }}</h1>{% endblock %}
|
||||
|
||||
{% block page_sidebar %}
|
||||
{% include "templates/pages/web_sidebar.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
<!-- no-sidebar -->
|
||||
|
||||
<!-- no-cache -->
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="your-account-info">
|
||||
<div class="avatar avatar-large">
|
||||
<a href="/me">
|
||||
{% if user_image -%}
|
||||
<img class="user-image" src="{{ user_image }}" /></a>
|
||||
{% else %}
|
||||
{% block script %}
|
||||
<script> $('.avatar-large').append($(frappe.avatar()).find('.standard-image')) </script>
|
||||
{% endblock %}
|
||||
{% endif -%}
|
||||
</div>
|
||||
<span class="user-image-myaccount"></span>
|
||||
<div>
|
||||
<h4>{{ fullname }}</h4>
|
||||
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/update-password">
|
||||
<h6 class="text-muted">{{ _("Reset Password") }}</h6>
|
||||
|
|
@ -27,60 +23,19 @@
|
|||
<li><a href="/edit-profile">
|
||||
<h6 class="text-muted">{{ _("Edit Profile") }}</h6>
|
||||
</a></li>
|
||||
<li><a href="/?cmd=web_logout">
|
||||
<h6 class="text-muted">{{ _("Logout") }}</h6>
|
||||
</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<ul class="list-group" style="margin: 15px 0px;">
|
||||
{% for item in my_account_list -%}
|
||||
{% if item.count or (not item.reference_doctype) %}
|
||||
<li class="list-group-item">
|
||||
<a href="{{ item.route }}" class="no-decoration"
|
||||
{% if item.target %}target="{{ item.target }}"{% endif %}>
|
||||
<h4>{{ _(item.title) }}
|
||||
{% if item.reference_doctype %}
|
||||
<span class="badge">
|
||||
{{ "20+" if item.count > 20 else item.count }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</h4>
|
||||
|
||||
</a></li>
|
||||
|
||||
{% endif %}
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
<div class="col-sm-4">
|
||||
<p>
|
||||
<span class="label">User Name</span>
|
||||
<span class="value"> {{ fullname }}</span>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block style %}
|
||||
<style>
|
||||
.your-account-info {
|
||||
margin: 15px 0px;
|
||||
}
|
||||
|
||||
.my-account-list {
|
||||
margin: 0px 0px 15px;
|
||||
}
|
||||
|
||||
.my-account-list > li > a {
|
||||
margin: 15px 0px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.user-options {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.user-options > li > a {
|
||||
margin: 5px 0px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -11,16 +11,4 @@ no_cache = 1
|
|||
no_sitemap = 1
|
||||
|
||||
def get_context(context):
|
||||
if frappe.session.user == "Guest":
|
||||
frappe.throw(_("You need to be logged in to access this page."), frappe.PermissionError)
|
||||
|
||||
context.my_account_list = frappe.get_all('Portal Menu Item',
|
||||
fields=['title', 'route', 'reference_doctype'], filters={'enabled': 1}, order_by='idx asc')
|
||||
|
||||
for item in context.my_account_list:
|
||||
if item.reference_doctype:
|
||||
item.count = len(frappe.templates.pages.list.get(item.reference_doctype).get('result'))
|
||||
|
||||
info = get_fullname_and_avatar(frappe.session.user)
|
||||
context["fullname"] = info.fullname
|
||||
context["user_image"] = info.avatar
|
||||
context.show_sidebar=True
|
||||
14
frappe/templates/pages/web_sidebar.py
Normal file
14
frappe/templates/pages/web_sidebar.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.utils.user import get_fullname_and_avatar
|
||||
import frappe.templates.pages.list
|
||||
|
||||
no_cache = 1
|
||||
no_sitemap = 1
|
||||
|
||||
def get_context(context):
|
||||
pass
|
||||
|
|
@ -1,36 +1,44 @@
|
|||
{% extends base_template_path %}
|
||||
|
||||
{% block hero %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="page-container" id="page-{{ name or page_name }}" data-path="{{ pathname }}"
|
||||
{% if page_or_generator=="Generator" %}data-doctype="{{ doctype }}"{% endif %}>
|
||||
<div class="page-content">
|
||||
<div class="page-content-wrapper">
|
||||
<div class="row">
|
||||
{% set full_width = (self.breadcrumbs() or self.header()) and not self.header_actions() -%}
|
||||
<div class="{% if not full_width %} col-sm-8 {% else %} col-sm-12 {% endif %}">
|
||||
{% if self.breadcrumbs() %}
|
||||
<div class="page-breadcrumbs" data-html-block="breadcrumbs">
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="page-header-block" data-html-block="header">
|
||||
{% block header %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
{% if not full_width %}
|
||||
<div class="col-sm-4">
|
||||
<div class="page-header-actions-block" data-html-block="header-actions">
|
||||
{% block header_actions %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
{% if page_or_generator=="Generator" %}data-doctype="{{ doctype }}"{% endif %}>
|
||||
<div class="page-content">
|
||||
<div class="row {% if show_sidebar %} vert-line {% endif %} ">
|
||||
{% if show_sidebar %}
|
||||
<div class="sidebar-block col-sm-3">
|
||||
{% include "templates/includes/web_sidebar.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="page-content-block">
|
||||
{%- block page_content -%}{%- endblock -%}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="{% if show_sidebar %} content-block show-sidebar col-sm-9 {% else %} content-block col-sm-12 {% endif %}">
|
||||
<div class="page-content-wrapper">
|
||||
<div class="row">
|
||||
{% if self.breadcrumbs() %}
|
||||
<div class="col-sm-6 page-breadcrumbs" data-html-block="breadcrumbs">
|
||||
{% block breadcrumbs %}{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if show_search %}
|
||||
<div class="col-sm-6 page-search-block pull-right" data-html-block="search-actions">
|
||||
{% block search %}
|
||||
{% include 'templates/includes/search_box.html' %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6 content-header">{% block header %}{% endblock %}</div>
|
||||
<div class="col-sm-6 page-header-actions-block pull-right" data-html-block="header-actions">
|
||||
{% block header_actions %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page_content">
|
||||
{%- block page_content -%}{%- endblock -%}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ def build_context(context):
|
|||
if hasattr(module, "get_children"):
|
||||
context.children = module.get_children(context)
|
||||
|
||||
if context.show_sidebar:
|
||||
add_sidebar_data(context)
|
||||
|
||||
add_metatags(context)
|
||||
|
||||
# determine templates to be used
|
||||
|
|
@ -71,6 +74,22 @@ def build_context(context):
|
|||
|
||||
return context
|
||||
|
||||
def add_sidebar_data(context):
|
||||
from frappe.utils.user import get_fullname_and_avatar
|
||||
|
||||
context.my_account_list = frappe.get_all('Portal Menu Item',
|
||||
fields=['title', 'route', 'reference_doctype'], filters={'enabled': 1}, order_by='idx asc')
|
||||
|
||||
for item in context.my_account_list:
|
||||
if item.reference_doctype:
|
||||
item.count = len(frappe.templates.pages.list.get(item.reference_doctype).get('result'))
|
||||
|
||||
|
||||
info = get_fullname_and_avatar(frappe.session.user)
|
||||
context["fullname"] = info.fullname
|
||||
context["user_image"] = info.avatar
|
||||
|
||||
|
||||
def add_metatags(context):
|
||||
tags = context.get("metatags")
|
||||
if tags:
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ class BlogPost(WebsiteGenerator):
|
|||
clear_cache("writers")
|
||||
|
||||
def get_context(self, context):
|
||||
context.show_search = True
|
||||
# this is for double precaution. usually it wont reach this code if not published
|
||||
if not cint(self.published):
|
||||
raise Exception, "This blog has not been published yet!"
|
||||
|
|
@ -72,6 +73,10 @@ class BlogPost(WebsiteGenerator):
|
|||
context.metatags["image"] = image
|
||||
|
||||
context.comment_list = get_comment_list(self.doctype, self.name)
|
||||
if not context.comment_list:
|
||||
context.comment_text = _('No comments yet')
|
||||
else:
|
||||
context.comment_text = _('{0} comments').format(len(context.comment_list))
|
||||
|
||||
context.children = get_children()
|
||||
|
||||
|
|
@ -85,7 +90,8 @@ def get_list_context(context=None):
|
|||
row_template = "templates/includes/blog/blog_row.html",
|
||||
get_list = get_blog_list,
|
||||
hide_filters = True,
|
||||
children = get_children()
|
||||
children = get_children(),
|
||||
show_search = True
|
||||
)
|
||||
|
||||
if frappe.local.form_dict.category:
|
||||
|
|
|
|||
0
frappe/website/doctype/footer_item/__init__.py
Normal file
0
frappe/website/doctype/footer_item/__init__.py
Normal file
142
frappe/website/doctype/footer_item/footer_item.json
Normal file
142
frappe/website/doctype/footer_item/footer_item.json
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 0,
|
||||
"allow_rename": 0,
|
||||
"creation": "2016-04-12 18:40:16.315024",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Other",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"fieldname": "label",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Label",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"print_width": "120px",
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0,
|
||||
"width": "120px"
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"description": "",
|
||||
"fieldname": "group_label",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Group Label",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "\nCompany\nContact\nPolicy",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"description": "Link to the page you want to open. Leave blank if you want to make it a group parent.",
|
||||
"fieldname": "url",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "URL",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"print_width": "200px",
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0,
|
||||
"width": "200px"
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"description": "Select target = \"_blank\" to open in a new page.",
|
||||
"fieldname": "target",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Target",
|
||||
"length": 0,
|
||||
"no_copy": 0,
|
||||
"options": "\ntarget = \"_blank\"",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"idx": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 1,
|
||||
"max_attachments": 0,
|
||||
"modified": "2016-04-12 22:54:04.416154",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Footer Item",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "ASC",
|
||||
"track_seen": 0
|
||||
}
|
||||
10
frappe/website/doctype/footer_item/footer_item.py
Normal file
10
frappe/website/doctype/footer_item/footer_item.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class FooterItem(Document):
|
||||
pass
|
||||
|
|
@ -1,11 +1,16 @@
|
|||
{
|
||||
"allow_attach": 0,
|
||||
"allow_copy": 0,
|
||||
"allow_email": 0,
|
||||
"allow_import": 0,
|
||||
"allow_print": 0,
|
||||
"allow_rename": 0,
|
||||
"allow_trash": 0,
|
||||
"creation": "2013-02-22 01:28:08",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Other",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
|
|
@ -14,14 +19,18 @@
|
|||
"fieldname": "label",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_restrictions": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Label",
|
||||
"length": 0,
|
||||
"no_column": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"print_width": "120px",
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
|
|
@ -39,14 +48,19 @@
|
|||
"fieldname": "parent_label",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_restrictions": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Parent Label",
|
||||
"length": 0,
|
||||
"no_column": 0,
|
||||
"no_copy": 0,
|
||||
"options": "",
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
|
|
@ -62,14 +76,18 @@
|
|||
"fieldname": "url",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_restrictions": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "URL",
|
||||
"length": 0,
|
||||
"no_column": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"print_width": "200px",
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
|
|
@ -87,15 +105,19 @@
|
|||
"fieldname": "target",
|
||||
"fieldtype": "Select",
|
||||
"hidden": 0,
|
||||
"ignore_restrictions": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Target",
|
||||
"length": 0,
|
||||
"no_column": 0,
|
||||
"no_copy": 0,
|
||||
"options": "\ntarget = \"_blank\"",
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
|
|
@ -107,18 +129,23 @@
|
|||
"allow_on_submit": 0,
|
||||
"bold": 0,
|
||||
"collapsible": 0,
|
||||
"default": "1",
|
||||
"description": "For top bar",
|
||||
"fieldname": "right",
|
||||
"fieldtype": "Check",
|
||||
"hidden": 0,
|
||||
"ignore_restrictions": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"ignore_xss_filter": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Right",
|
||||
"length": 0,
|
||||
"no_column": 0,
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"print_hide": 0,
|
||||
"print_hide_if_no_value": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
|
|
@ -133,15 +160,22 @@
|
|||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"is_transaction_doc": 0,
|
||||
"issingle": 0,
|
||||
"istable": 1,
|
||||
"max_attachments": 0,
|
||||
"modified": "2015-11-16 06:29:59.696074",
|
||||
"menu_index": 0,
|
||||
"modified": "2016-04-12 18:37:05.452208",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Top Bar Item",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0
|
||||
"read_only_onload": 0,
|
||||
"show_in_menu": 0,
|
||||
"sort_order": "ASC",
|
||||
"track_seen": 0,
|
||||
"use_template": 0,
|
||||
"version": 0
|
||||
}
|
||||
|
|
@ -62,6 +62,7 @@ class WebForm(WebsiteGenerator):
|
|||
# TODO translate options of Select fields like Country
|
||||
|
||||
def get_context(self, context):
|
||||
context.show_sidebar=True
|
||||
from frappe.templates.pages.list import get_context as get_list_context
|
||||
|
||||
frappe.local.form_dict.is_web_form = 1
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ $.extend(cur_frm.cscript, {
|
|||
if(item.parentfield === "top_bar_items") {
|
||||
this.set_parent_label_options();
|
||||
}
|
||||
else if(item.parentfield === "footer_items") {
|
||||
this.set_parent_label_options_footer();
|
||||
}
|
||||
},
|
||||
|
||||
parent_label: function(doc, cdt, cdn) {
|
||||
|
|
@ -52,6 +55,15 @@ $.extend(cur_frm.cscript, {
|
|||
cur_frm.fields_dict.top_bar_items.grid.refresh();
|
||||
}
|
||||
},
|
||||
|
||||
set_parent_label_options_footer: function() {
|
||||
frappe.meta.get_docfield("Top Bar Item", "parent_label", cur_frm.docname).options =
|
||||
this.get_parent_options("footer_items");
|
||||
|
||||
if($(cur_frm.fields_dict.footer_items.grid.wrapper).find(".grid-row-open")) {
|
||||
cur_frm.fields_dict.footer_items.grid.refresh();
|
||||
}
|
||||
},
|
||||
|
||||
// get labels of parent items
|
||||
get_parent_options: function(table_field) {
|
||||
|
|
|
|||
|
|
@ -984,7 +984,7 @@
|
|||
"issingle": 1,
|
||||
"istable": 0,
|
||||
"max_attachments": 10,
|
||||
"modified": "2016-02-22 09:38:53.160165",
|
||||
"modified": "2016-04-12 23:17:55.682407",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Website Settings",
|
||||
|
|
@ -1004,6 +1004,8 @@
|
|||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 0,
|
||||
"restrict": 0,
|
||||
"restricted": 0,
|
||||
"role": "Website Manager",
|
||||
"set_user_permissions": 0,
|
||||
"share": 1,
|
||||
|
|
@ -1024,13 +1026,17 @@
|
|||
"print": 0,
|
||||
"read": 1,
|
||||
"report": 0,
|
||||
"restrict": 0,
|
||||
"restricted": 0,
|
||||
"role": "All",
|
||||
"set_user_permissions": 0,
|
||||
"share": 0,
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 0
|
||||
}
|
||||
],
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0
|
||||
"read_only_onload": 0,
|
||||
"sort_order": "ASC",
|
||||
"track_seen": 0
|
||||
}
|
||||
|
|
@ -39,10 +39,20 @@ class WebsiteSettings(Document):
|
|||
top_bar_item.idx))
|
||||
|
||||
def validate_footer_items(self):
|
||||
"""clear parent label in footer"""
|
||||
"""validate url in top bar items"""
|
||||
for footer_item in self.get("footer_items"):
|
||||
footer_item.parent_label = None
|
||||
if footer_item.parent_label:
|
||||
parent_label_item = self.get("footer_items", {"label": footer_item.parent_label})
|
||||
|
||||
if not parent_label_item:
|
||||
# invalid item
|
||||
frappe.throw(_("{0} does not exist in row {1}").format(footer_item.parent_label, footer_item.idx))
|
||||
|
||||
elif not parent_label_item[0] or parent_label_item[0].url:
|
||||
# parent cannot have url
|
||||
frappe.throw(_("{0} in row {1} cannot have both URL and child items").format(footer_item.parent_label,
|
||||
footer_item.idx))
|
||||
|
||||
def on_update(self):
|
||||
self.clear_cache()
|
||||
|
||||
|
|
@ -59,32 +69,12 @@ class WebsiteSettings(Document):
|
|||
frappe.clear_cache()
|
||||
|
||||
|
||||
|
||||
def get_website_settings():
|
||||
hooks = frappe.get_hooks()
|
||||
|
||||
all_top_items = frappe.db.sql("""\
|
||||
select * from `tabTop Bar Item`
|
||||
where parent='Website Settings' and parentfield='top_bar_items'
|
||||
order by idx asc""", as_dict=1)
|
||||
|
||||
top_items = [d for d in all_top_items if not d['parent_label']]
|
||||
|
||||
# attach child items to top bar
|
||||
for d in all_top_items:
|
||||
if d['parent_label']:
|
||||
for t in top_items:
|
||||
if t['label']==d['parent_label']:
|
||||
if not 'child_items' in t:
|
||||
t['child_items'] = []
|
||||
t['child_items'].append(d)
|
||||
break
|
||||
|
||||
context = frappe._dict({
|
||||
'top_bar_items': top_items,
|
||||
'footer_items': frappe.db.sql("""\
|
||||
select * from `tabTop Bar Item`
|
||||
where parent='Website Settings' and parentfield='footer_items'
|
||||
order by idx asc""", as_dict=1),
|
||||
'top_bar_items': get_items('top_bar_items'),
|
||||
'footer_items': get_items('footer_items'),
|
||||
"post_login": [
|
||||
{"label": "My Account", "url": "/me"},
|
||||
{"class": "divider"},
|
||||
|
|
@ -134,4 +124,23 @@ def get_website_settings():
|
|||
context["favicon"] = settings.favicon
|
||||
|
||||
return context
|
||||
|
||||
def get_items(parentfield):
|
||||
all_top_items = frappe.db.sql("""\
|
||||
select * from `tabTop Bar Item`
|
||||
where parent='Website Settings' and parentfield= %s
|
||||
order by idx asc""", parentfield, as_dict=1)
|
||||
|
||||
top_items = [d for d in all_top_items if not d['parent_label']]
|
||||
|
||||
# attach child items to top bar
|
||||
for d in all_top_items:
|
||||
if d['parent_label']:
|
||||
for t in top_items:
|
||||
if t['label']==d['parent_label']:
|
||||
if not 'child_items' in t:
|
||||
t['child_items'] = []
|
||||
t['child_items'].append(d)
|
||||
break
|
||||
return top_items
|
||||
|
||||
|
|
|
|||
|
|
@ -205,7 +205,9 @@ $.extend(frappe, {
|
|||
$(".full-name").html(frappe.get_cookie("full_name"));
|
||||
$(".user-image").attr("src", frappe.get_cookie("user_image"));
|
||||
|
||||
$('.user-image-wrapper').html(frappe.avatar());
|
||||
$('.user-image-wrapper').html(frappe.avatar(null, 'avatar-small'));
|
||||
$('.user-image-sidebar').html(frappe.avatar(null, 'avatar-medium'));
|
||||
$('.user-image-myaccount').html(frappe.avatar(null, 'avatar-large'));
|
||||
}
|
||||
},
|
||||
freeze_count: 0,
|
||||
|
|
|
|||
|
|
@ -5,12 +5,21 @@
|
|||
"docstatus": 0,
|
||||
"doctype": "Website Theme",
|
||||
"font_size": "14px",
|
||||
"footer_color": "",
|
||||
"footer_text_color": "#808080",
|
||||
"heading_style": "",
|
||||
"modified": "2015-02-19 20:01:19.478005",
|
||||
"heading_webfont": "Open Sans",
|
||||
"idx": 17,
|
||||
"link_color": "#808080",
|
||||
"modified": "2016-04-12 23:46:28.476768",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Standard",
|
||||
"no_sidebar": 0,
|
||||
"owner": "Administrator",
|
||||
"text_color": "#808080",
|
||||
"text_webfont": "Open Sans",
|
||||
"theme": "Standard",
|
||||
"website_theme_templates": []
|
||||
"top_bar_color": "",
|
||||
"top_bar_text_color": "#808080"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue