Merge branch 'rebrand-ui' of https://github.com/frappe/frappe into rebrand-ui

This commit is contained in:
Suraj Shetty 2020-10-01 13:49:50 +05:30
commit ad27fe8933
16 changed files with 230 additions and 153 deletions

View file

@ -6,6 +6,7 @@
"engine": "InnoDB",
"field_order": [
"localization",
"app_name",
"country",
"language",
"column_break_3",
@ -460,12 +461,25 @@
"fieldname": "prepared_report_section",
"fieldtype": "Section Break",
"label": "Prepared Report"
},
{
"default": "Frappe",
"fieldname": "app_name",
"fieldtype": "Data",
"label": "App Name"
},
{
"default": "3",
"description": "Hourly rate limit for generating password reset links",
"fieldname": "password_reset_limit",
"fieldtype": "Int",
"label": "Password Reset Link Generation Limit"
}
],
"icon": "fa fa-cog",
"issingle": 1,
"links": [],
"modified": "2020-08-12 14:35:45.214327",
"modified": "2020-09-30 14:38:58.886100",
"modified_by": "Administrator",
"module": "Core",
"name": "System Settings",

View file

@ -1,45 +1,63 @@
frappe.pages['background_jobs'].on_page_load = function(wrapper) {
var page = frappe.ui.make_app_page({
parent: wrapper,
title: __('Background Jobs'),
single_column: true
frappe.pages["background_jobs"].on_page_load = (wrapper) => {
background_job = new BackgroundJobs(wrapper);
$(wrapper).bind('show', () => {
background_job.show();
});
$(frappe.render_template('background_jobs_outer')).appendTo(page.body);
page.content = $(page.body).find('.table-area');
window.background_jobs = background_job;
};
frappe.pages.background_jobs.page = page;
}
class BackgroundJobs {
constructor(wrapper) {
this.page = frappe.ui.make_app_page({
parent: wrapper,
title: __('Background Jobs'),
single_column: true
});
frappe.pages['background_jobs'].on_page_show = function(wrapper) {
frappe.pages.background_jobs.refresh_jobs();
frappe.call({
method: 'frappe.core.page.background_jobs.background_jobs.get_scheduler_status',
callback: function(r) {
frappe.pages.background_jobs.page.set_indicator(...r.message);
}
});
}
this.called = false;
this.show_failed = false;
frappe.pages.background_jobs.refresh_jobs = function() {
var page = frappe.pages.background_jobs.page;
this.show_failed_button = this.page.add_inner_button(__("Show Failed Jobs"), () => {
this.show_failed = !this.show_failed
this.show_failed_button && this.show_failed_button.text(
this.show_failed ? __("Hide Failed Jobs") : __("Show Failed Jobs")
)
});
// don't call if already waiting for a response
if(page.called) return;
page.called = true;
frappe.call({
method: 'frappe.core.page.background_jobs.background_jobs.get_info',
args: {
show_failed: page.body.find('.show-failed').prop('checked') ? 1 : 0
},
callback: function(r) {
page.called = false;
page.body.find('.list-jobs').remove();
$(frappe.render_template('background_jobs', {jobs:r.message || []})).appendTo(page.content);
$(frappe.render_template('background_jobs_outer')).appendTo(this.page.body);
this.content = $(this.page.body).find('.table-area');
}
if(frappe.get_route()[0]==='background_jobs') {
frappe.background_jobs_timeout = setTimeout(frappe.pages.background_jobs.refresh_jobs, 2000);
show() {
this.refresh_jobs();
frappe.call({
method: 'frappe.core.page.background_jobs.background_jobs.get_scheduler_status',
callback: res => {
this.page.set_indicator(...res.message);
}
}
});
}
});
}
refresh_jobs() {
if (this.called) return;
this.called = true;
frappe.call({
method: 'frappe.core.page.background_jobs.background_jobs.get_info',
args: {
show_failed: this.show_failed
},
callback: (res) => {
this.called = false;
this.page.body.find('.list-jobs').remove();
$(frappe.render_template('background_jobs', { jobs: res.message || [] })).appendTo(this.content);
if (frappe.get_route()[0] === 'background_jobs') {
setTimeout(() => this.refresh_jobs(), 2000);
}
}
});
}
}

View file

@ -1,11 +1,4 @@
<div style="padding: 20px;">
<p>
<div class="checkbox">
<label>
<input type="checkbox" class="show-failed"> {{ __("Show failed jobs") }}
</label>
</div>
</p>
<div class="frappe-card">
<div class="table-area">
</div>

View file

@ -0,0 +1,9 @@
.download-backup-card {
display: block;
text-decoration: none;
}
.download-backup-card:hover {
box-shadow: var(--shadow-md);
text-decoration: none;
}

View file

@ -1,32 +1,20 @@
<!-- jinja -->
<table class="table table-striped table-bordered" style="max-width: 600px;">
<thead>
<tr>
<th style="width: 30%;">
{{ _("Date") }}
</th>
<th style="width: 50%;">
{{ _("File") }}
</th>
<th>
{{ _("Size") }}
</th>
</tr>
</thead>
<tbody>
{% for f in files %}
<tr>
<td>
{{ f[1] }}
</td>
<td>
<a href="{{ f[0] }}" target="_blank" rel="noopener noreferrer">{{ f[0] }}</a>
</td>
<td>
{{ f[2] }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="row">
{% for f in files %}
<div class="col-lg-3 col-md-4 col-12">
<a href="{{ f[0] }}" target="_blank" rel="noopener noreferrer" class="frappe-card download-backup-card">
<div>
{{ f[1] }}
</div>
<div class="mt-2">
<svg class="icon-sm" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke="var(--icon-stroke)">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
</svg>
{{ f[2] }}
</div>
</a>
</div>
{% endfor %}
</div>

View file

@ -9,7 +9,7 @@ import datetime
def get_context(context):
def get_time(path):
dt = os.path.getmtime(path)
return convert_utc_to_user_timezone(datetime.datetime.utcfromtimestamp(dt)).strftime('%Y-%m-%d %H:%M')
return convert_utc_to_user_timezone(datetime.datetime.utcfromtimestamp(dt)).strftime('%a %b %d %H:%M %Y')
def get_size(path):
size = os.path.getsize(path)

View file

@ -83,7 +83,7 @@
"label": "Identity Details"
},
{
"depends_on": "eval:!['Facebook', 'Frappe', 'Github', 'Google', 'Office 365'].includes(doc.social_login_provider)",
"depends_on": "eval:doc.social_login_provider==\"Custom\"",
"fieldname": "icon",
"fieldtype": "Data",
"label": "Icon"
@ -161,7 +161,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2020-09-30 13:40:57.597276",
"modified": "2020-09-30 14:37:13.616002",
"modified_by": "Administrator",
"module": "Integrations",
"name": "Social Login Key",

View file

@ -40,7 +40,9 @@ class SocialLoginKey(Document):
"Frappe": "frappe.svg",
"Facebook": "facebook.svg",
"Office 365": "office_365.svg",
"GitHub": "github.svg"
"GitHub": "github.svg",
"Salesforce": "salesforce.svg",
"fairlogin": "fair.svg"
}
if self.provider_name in icon_map:

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="key" transform="translate(1.000000, 1.000000)" fill="#82AD29">
<path d="M14,5.25 C14,8.1494875 11.6494875,10.5 8.75,10.5 C8.219575,10.5 7.7076125,10.4213375 7.2249625,10.2750375 L7,10.5 L6.125,11.375 L5.25,12.25 L3.5,12.25 L3.5,14 L0,14 L0,10.5 L3.72493625,6.77506375 C3.57865375,6.29243125 3.5,5.78039875 3.5,5.25 C3.5,2.35050375 5.85050375,0 8.75,0 C11.6494875,0 14,2.35050375 14,5.25 Z M8.75,1.75 C8.2667375,1.75 7.875,2.141755 7.875,2.625 C7.875,3.108245 8.2667375,3.5 8.75,3.5 C9.716525,3.5 10.5,4.28350125 10.5,5.25 C10.5,5.733245 10.8917375,6.125 11.375,6.125 C11.8582625,6.125 12.25,5.733245 12.25,5.25 C12.25,3.3170025 10.6829625,1.75 8.75,1.75 Z" id="Shape"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,4 +1,12 @@
<svg width="50" height="82" viewBox="0 0 50 82" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M33.4319 16H0V24.794H33.4319V16Z" fill="#0089FF"/>
<path d="M0 38.4357V66H10.671V47.2445H31.2149V38.4357H0Z" fill="#0089FF"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="frappe" transform="translate(3.000000, 1.000000)" fill="#0089FF" fill-rule="nonzero">
<polygon id="Path" points="9.360932 0 0 0 0 2.46232 9.360932 2.46232"></polygon>
<polygon id="Path" points="0 6.281996 0 14 2.98788 14 2.98788 8.74846 8.740172 8.74846 8.740172 6.281996"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 751 B

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="25px" height="33px" viewBox="0 0 25 33" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>office365</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="49.9768398%" y1="-5.7%" x2="49.9768398%" y2="93%" id="linearGradient-1">
<stop stop-color="#FFB900" offset="0%"></stop>
<stop stop-color="#EF8400" offset="17%"></stop>
<stop stop-color="#E25C01" offset="31%"></stop>
<stop stop-color="#DB4401" offset="43%"></stop>
<stop stop-color="#D83B01" offset="50%"></stop>
</linearGradient>
<linearGradient x1="65.309396%" y1="-2.30735625%" x2="21.7429318%" y2="92.4889251%" id="linearGradient-2">
<stop stop-color="#800600" offset="0%"></stop>
<stop stop-color="#C72127" offset="60%"></stop>
<stop stop-color="#C13959" offset="73%"></stop>
<stop stop-color="#BC4B81" offset="85%"></stop>
<stop stop-color="#B95799" offset="94%"></stop>
<stop stop-color="#B85BA2" offset="100%"></stop>
</linearGradient>
<linearGradient x1="7.88912504%" y1="50.0377248%" x2="191.841076%" y2="50.0377248%" id="linearGradient-3">
<stop stop-color="#F32B44" offset="0%"></stop>
<stop stop-color="#A4070A" offset="60%"></stop>
</linearGradient>
<linearGradient x1="66.1985075%" y1="-4.23376572%" x2="56.9739756%" y2="15.8347637%" id="linearGradient-4">
<stop stop-color="#000000" stop-opacity="0.4" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="132.890182%" y1="52.4744013%" x2="50.5296726%" y2="48.194349%" id="linearGradient-5">
<stop stop-color="#000000" stop-opacity="0.4" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="office365" transform="translate(-4.000000, 0.000000)">
<g id="Group" opacity="0.2" style="mix-blend-mode: multiply;" transform="translate(7.500000, 24.000000)">
<image id="Bitmap" style="mix-blend-mode: multiply;" x="0.09" y="0.39" width="21.24" height="8.4" xlink:href="data:image/png;base64,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"></image>
<path d="M2.465,0.5 C1.74110622,0.507754552 1.11140565,0.997711759 0.925963652,1.69749287 C0.740521659,2.39727398 1.04494599,3.13477429 1.67,3.5 L7.35,6.72 C7.81784017,6.98594629 8.34685357,7.12552312 8.885,7.12500147 C9.17453879,7.12481093 9.46252533,7.08270764 9.74,7 L18.285,4.565 C19.5943523,4.1888054 20.4973209,2.99232109 20.5,1.63 L20.5,0.5 L2.465,0.5 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
<g id="Group" opacity="0.12" style="mix-blend-mode: multiply;" transform="translate(8.000000, 24.000000)">
<image id="Bitmap" style="mix-blend-mode: multiply;" x="0.055" y="0.255" width="20.28" height="7.32" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAAA+CAYAAAC7gYDXAAAAAXNSR0IArs4c6QAAAHhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAAEsAAAAAQAAASwAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAKqgAwAEAAAAAQAAAD4AAAAArpobvQAAAAlwSFlzAAAuIwAALiMBeKU/dgAABj9JREFUeAHtncuO3EQUhmlClAUIISFgESJ12AXWASLWeQAeFPEAEewQl9mC2MFIkEVAQVEEkUJmGP7PqWO53WW3++K23f6PdKZ8d/n3p1On3GXP4urq6hWbFRi7Aq/tUsHFYnFN+7Evpc0K9KXApQ58oWB6uegaUStwXtfOb8pvptKwSgjbwRUA0ifyc8qNETUBekMbvyUHzrflt+R30/zGY2g7mxXYVoHn2uFH+ReUrZAJUqInYN6Wfyj/RA6kLIuI+qqmbVbg0Ao8Swf8SuW1RlATpO9po3vy+/KP5Es5zT4As6+bfYlg600BWvKCsSyoFUg/04afyz+VvyMvd9S0zQocTYE1UDOQAiuRlShqswKDKLCSXwpSwiz5J809kdSQSgTb8AqsgKrq0LR/ICcnpbl3JJUItuEVKEFN0ZRHUHfkdJzISd3cSwTb8AqUoKoqRNOlnGafknmbFRiFAgWotWhKRCWy+tHTKG6RK4ECEVHp/b8v54H+Uu5oKhFs41EgQCV6+vf78dwX16SmQIDKYqaJrNVlLLdZgSEU+E8nvZBTGkpEsI1OAUZOPZU/TOWlo+fo7pErJAWIpL/Lz1J5YVClhG10CqxEVAZOG9TR3SNXSAqQl/6bfC1HXUleLZcVGEiBlWiqOjBfdqayKweqqE87bwXW8lPkiKY/Vn6vZedyXgOwWYEhFHihk/4l/03+lPyUShSgphlepPo5OdPFBiptVuBYCkTLDqTACrSFRURlhih6Lv82lY6qEsJ2VAWCQVp2Hk/R0hdWglqLqj9p7Z/ykuiXm/uvFehNAaLpSqsezT5nLEFNp4foX+QP5N/JH8kNq0Sw9a5ARNNsi85v+6VBsIb8PdYCNg6I/WJfqZAnelKAYEgLTktOP+lJNZpqvhiEQlmaNnghWImk38h5tspvroz4X8oZp3pD7rGqEsF2EAWAFN5owWnJadHX+keNn/QRrLyGUv34xD3N35Ev5QZWItj2ViAgJSh+Kad8RLCsH7kRVDZMI/+JoIC5lAMqwPLVlNtyQAZomxXYVoHOkHLgVlDjzBlgSQXuyz+W+8MUIZTLrgpsBSkHXelMNZ0lJbbPBCy5A48QHqaSaeevEsHWWYGtIeXInSJqvQrOX+uKeL6DAjwnJdDRu6fj1JqTav2K7QQqR8ikA85fV6T1TEUBoiiPPX+V8ynJB3IegWY7Tlq+ZjuDGkfKAOv8NcSZd0kE5SfQgPQHTQMooALs41zvXsuz1ilHze6ZFjp/bVNnduuqcMY7T0TSc/nXcmCl6X+euNFkN9s7otZP4/y1rsjJzzfByQioMzklsBblNlFU+5R2cFA5ciYdcP5aSj75iQCTMn655ClQwFiFk+VEVpr/4p9GqNzJegE1apIB1vlriDOtMuAEuGjSKenFA2MvcOq4pe2do5ZHykw4f82IMo1FAWZb1ARQQK2Cu3fkbJKn14haP6nz17oio5oPOLeJmjT9xX7bdo62vfKjgkrlMulA5K+US7kHvEiEI1iAOZqo2XbNRwc1KtMCrAe8hEiHLwPOUUbNtssdDNSoVAZYd7hCnP3LAHMSUbPtcnvtTLWdONa5wxVKHKwMOCcXNdsUGDyi1ivnDlddkY3zAebko2bblY4OVCqbSQeiw+X89eXdDDhPKmpODtSocAbYueavAeZJR82477ly8Bw1V6lYNvP8NeCcTdSM+54rR9n05yrKshPPXwPM2UbNpvte3HtFrbb1o1uXSQemnL8GnI6aG0ibVEStXksG2CnkrwGmo2b1ZnaYHnWO2lb/CeWvAaejZtsN3bBushG1fl0jyl8DTEfN+k3aY/5kQEWDTDoQ+WvfA14CTkfNPWBs2/WkQI0L7QAs/6XwupzUZ5fvaAWYjpohes/lSYIamjUAy/97vSXnc0Q35UAbXy7UZAEuALOM8Za8SQmQYdXXLzaNcj/aeM2o3KmWJw1q3LQasMAJpMB6V858dCqJroDLstfl/8jjvZ+AFXDj9YujjnLXeWdrswA17m4CFihp9gNIymj+WQekAPyu/A/5mRwg4zPdAFt9/cJRU4L0bbMCtSpmBdqAlNU09wHwG5r+Ww6kgAmQYcC611uVcSCX3RSYLahN8lQALnPU9My2aRcvP4IC/wNmElErPPJLHAAAAABJRU5ErkJggg=="></image>
<path d="M1.965,0.5 C1.24110622,0.507754552 0.611405646,0.997711759 0.425963652,1.69749287 C0.240521659,2.39727398 0.544945994,3.13477429 1.17,3.5 L6.85,6.72 C7.31784017,6.98594629 7.84685357,7.12552312 8.385,7.12500147 C8.67453879,7.12481093 8.96252533,7.08270764 9.24,7 L17.785,4.565 C19.0943523,4.1888054 19.9973209,2.99232109 20,1.63 L20,0.5 L1.965,0.5 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
<path d="M17.205,1 L19.5,6.25 L19.5,24.5 L17.24,31 L25.785,28.565 C27.0943523,28.1888054 27.9973209,26.9923211 28.0000003,25.63 L28.0000003,6.37 C28.0005933,5.00386323 27.0941178,3.80339572 25.78,3.43 L17.205,1 Z" id="Path" fill="url(#linearGradient-1)" fill-rule="nonzero"></path>
<path d="M6.37,24.305 L8.87,22.955 C9.56836495,22.571179 10.0016546,21.8368873 9.99999488,21.04 L9.99999488,11.215 C10.0009436,10.2983012 10.5739953,9.47965601 11.435,9.165 L19.4999949,6.25 L19.4999949,4.035 C19.4980781,2.62451621 18.5616125,1.38609667 17.205,1 C16.9238014,0.919252415 16.6325602,0.878849018 16.34,0.879976087 L16.34,0.879976087 C15.7897178,0.881258628 15.2490286,1.02417968 14.77,1.295 L5.54,6.56 C4.58787734,7.10253413 3.99999488,8.11415291 3.99999488,9.21 L3.99999488,22.89 C3.99857214,23.4564622 4.2958525,23.9817279 4.78222399,24.2721142 C5.26859549,24.5625006 5.8720219,24.5749987 6.37,24.305 Z" id="Path" fill="url(#linearGradient-2)" fill-rule="nonzero"></path>
<path d="M19.5000115,24.5 L9.965,24.5 C9.24110622,24.5077546 8.61140565,24.9977118 8.42596365,25.6974929 C8.24052166,26.397274 8.54494599,27.1347743 9.17,27.5 L14.85,30.72 C15.3178402,30.9859463 15.8468536,31.1255231 16.385,31.1250015 L16.385,31.1250015 C16.6745388,31.1248109 16.9625253,31.0827076 17.24,31 C18.5803162,30.6191815 19.5037673,29.3933614 19.5000115,28 L19.5000115,24.5 Z" id="Path" fill="url(#linearGradient-3)" fill-rule="nonzero"></path>
<path d="M6.37,24.305 L8.87,22.955 C9.56836495,22.571179 10.0016546,21.8368873 9.99999488,21.04 L9.99999488,11.215 C10.0009436,10.2983012 10.5739953,9.47965601 11.435,9.165 L19.4999949,6.25 L19.4999949,4.035 C19.4980781,2.62451621 18.5616125,1.38609667 17.205,1 C16.9238014,0.919252415 16.6325602,0.878849018 16.34,0.879976087 L16.34,0.879976087 C15.7897178,0.881258628 15.2490286,1.02417968 14.77,1.295 L5.54,6.56 C4.58787734,7.10253413 3.99999488,8.11415291 3.99999488,9.21 L3.99999488,22.89 C3.99857214,23.4564622 4.2958525,23.9817279 4.78222399,24.2721142 C5.26859549,24.5625006 5.8720219,24.5749987 6.37,24.305 Z" id="Path" fill="url(#linearGradient-4)" fill-rule="nonzero"></path>
<path d="M19.5000115,24.5 L9.965,24.5 C9.24110622,24.5077546 8.61140565,24.9977118 8.42596365,25.6974929 C8.24052166,26.397274 8.54494599,27.1347743 9.17,27.5 L14.85,30.72 C15.3178402,30.9859463 15.8468536,31.1255231 16.385,31.1250015 L16.385,31.1250015 C16.6745388,31.1248109 16.9625253,31.0827076 17.24,31 C18.5803162,30.6191815 19.5037673,29.3933614 19.5000115,28 L19.5000115,24.5 Z" id="Path" fill="url(#linearGradient-5)" fill-rule="nonzero"></path>
<rect id="Rectangle" x="0" y="0" width="32" height="32"></rect>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="49.9768398%" y1="-5.7%" x2="49.9768398%" y2="93%" id="linearGradient-1">
<stop stop-color="#FFB900" offset="0%"></stop>
<stop stop-color="#EF8400" offset="17%"></stop>
<stop stop-color="#E25C01" offset="31%"></stop>
<stop stop-color="#DB4401" offset="43%"></stop>
<stop stop-color="#D83B01" offset="50%"></stop>
</linearGradient>
<linearGradient x1="65.309396%" y1="-2.30735625%" x2="21.7429318%" y2="92.4889251%" id="linearGradient-2">
<stop stop-color="#800600" offset="0%"></stop>
<stop stop-color="#C72127" offset="60%"></stop>
<stop stop-color="#C13959" offset="73%"></stop>
<stop stop-color="#BC4B81" offset="85%"></stop>
<stop stop-color="#B95799" offset="94%"></stop>
<stop stop-color="#B85BA2" offset="100%"></stop>
</linearGradient>
<linearGradient x1="7.88912504%" y1="50.0377248%" x2="191.841076%" y2="50.0377248%" id="linearGradient-3">
<stop stop-color="#F32B44" offset="0%"></stop>
<stop stop-color="#A4070A" offset="60%"></stop>
</linearGradient>
<linearGradient x1="66.1985075%" y1="-4.23376572%" x2="56.9739756%" y2="15.8347637%" id="linearGradient-4">
<stop stop-color="#000000" stop-opacity="0.4" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="132.890182%" y1="52.4744013%" x2="50.5296726%" y2="48.194349%" id="linearGradient-5">
<stop stop-color="#000000" stop-opacity="0.4" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Microsoft_Office_logo_(2019present)" transform="translate(1.000000, 1.000000)">
<g id="Group" opacity="0.2" style="mix-blend-mode: multiply;" transform="translate(3.181818, 10.181818)">
<image id="Bitmap" style="mix-blend-mode: multiply;" x="0.0381818182" y="0.165454545" width="9.01090909" height="3.56363636" xlink:href="data:image/png;base64,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"></image>
<path d="M1.04575758,0.212121212 C0.738651125,0.215411022 0.471505426,0.423271655 0.392833065,0.720148489 C0.314160704,1.01702532 0.443310422,1.32990424 0.708484848,1.48484848 L3.11818182,2.85090909 C3.31665947,2.96373479 3.54108939,3.0229492 3.76939394,3.02272789 C3.89222858,3.02264706 4.01440469,3.00478506 4.13212121,2.96969697 L7.75727273,1.93666667 C8.31275554,1.77706896 8.69583311,1.26946955 8.6969697,0.691515152 L8.6969697,0.212121212 L1.04575758,0.212121212 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
<g id="Group" opacity="0.12" style="mix-blend-mode: multiply;" transform="translate(3.393939, 10.181818)">
<image id="Bitmap" style="mix-blend-mode: multiply;" x="0.0233333333" y="0.108181818" width="8.60363636" height="3.10545455" xlink:href="data:image/png;base64,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"></image>
<path d="M0.833636364,0.212121212 C0.526529913,0.215411022 0.259384214,0.423271655 0.180711853,0.720148489 C0.102039491,1.01702532 0.23118921,1.32990424 0.496363636,1.48484848 L2.90606061,2.85090909 C3.10453825,2.96373479 3.32896818,3.0229492 3.55727273,3.02272789 C3.68010736,3.02264706 3.80228347,3.00478506 3.92,2.96969697 L7.54515152,1.93666667 C8.10063433,1.77706896 8.4837119,1.26946955 8.48484848,0.691515152 L8.48484848,0.212121212 L0.833636364,0.212121212 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g>
<path d="M7.29909091,0.424242424 L8.27272727,2.65151515 L8.27272727,10.3939394 L7.31393939,13.1515152 L10.9390909,12.1184848 C11.4945737,11.9588871 11.8776513,11.4512877 11.878788,10.8733333 L11.878788,2.70242424 C11.8790396,2.12285107 11.4944742,1.61356182 10.9369697,1.45515152 L7.29909091,0.424242424 Z" id="Path" fill="url(#linearGradient-1)" fill-rule="nonzero"></path>
<path d="M2.70242424,10.3112121 L3.7630303,9.73848485 C4.05930634,9.5756517 4.24312618,9.26413402 4.24242424,8.92606061 L4.24242424,4.75787879 C4.24282457,4.36897628 4.4859374,4.02167224 4.85121212,3.88818182 L8.27272727,2.65151515 L8.27272727,1.71181818 C8.2719119,1.11343112 7.8746235,0.588041011 7.29909091,0.424242424 C7.17979453,0.389985873 7.05623768,0.372845038 6.93212121,0.373323188 L6.93212121,0.373323188 C6.69866818,0.373867297 6.46928485,0.434500469 6.26606061,0.549393939 L2.35030303,2.7830303 C1.9463722,3.0131963 1.69696752,3.4423679 1.69696752,3.90727273 L1.69696752,9.71090909 C1.69636394,9.95122639 1.82248288,10.1740664 2.0288223,10.2972606 C2.23516172,10.4204548 2.49116081,10.425757 2.70242424,10.3112121 Z" id="Path" fill="url(#linearGradient-2)" fill-rule="nonzero"></path>
<path d="M8.27273214,10.3939394 L4.22757576,10.3939394 C3.92046931,10.3972292 3.65332361,10.6050898 3.57465125,10.9019667 C3.49597889,11.1988435 3.6251286,11.5117224 3.89030303,11.6666667 L6.3,13.0327273 C6.49847765,13.145553 6.72290757,13.2047674 6.95121212,13.2045461 L6.95121212,13.2045461 C7.07404676,13.2044652 7.19622287,13.1866032 7.31393939,13.1515152 C7.88255838,12.9899558 8.27432551,12.4699109 8.27273214,11.8787879 L8.27273214,10.3939394 Z" id="Path" fill="url(#linearGradient-3)" fill-rule="nonzero"></path>
<path d="M2.70242424,10.3112121 L3.7630303,9.73848485 C4.05930634,9.5756517 4.24312618,9.26413402 4.24242424,8.92606061 L4.24242424,4.75787879 C4.24282457,4.36897628 4.4859374,4.02167224 4.85121212,3.88818182 L8.27272727,2.65151515 L8.27272727,1.71181818 C8.2719119,1.11343112 7.8746235,0.588041011 7.29909091,0.424242424 C7.17979453,0.389985873 7.05623768,0.372845038 6.93212121,0.373323188 L6.93212121,0.373323188 C6.69866818,0.373867297 6.46928485,0.434500469 6.26606061,0.549393939 L2.35030303,2.7830303 C1.9463722,3.0131963 1.69696752,3.4423679 1.69696752,3.90727273 L1.69696752,9.71090909 C1.69636394,9.95122639 1.82248288,10.1740664 2.0288223,10.2972606 C2.23516172,10.4204548 2.49116081,10.425757 2.70242424,10.3112121 Z" id="Path" fill="url(#linearGradient-4)" fill-rule="nonzero"></path>
<path d="M8.27273214,10.3939394 L4.22757576,10.3939394 C3.92046931,10.3972292 3.65332361,10.6050898 3.57465125,10.9019667 C3.49597889,11.1988435 3.6251286,11.5117224 3.89030303,11.6666667 L6.3,13.0327273 C6.49847765,13.145553 6.72290757,13.2047674 6.95121212,13.2045461 L6.95121212,13.2045461 C7.07404676,13.2044652 7.19622287,13.1866032 7.31393939,13.1515152 C7.88255838,12.9899558 8.27432551,12.4699109 8.27273214,11.8787879 L8.27273214,10.3939394 Z" id="Path" fill="url(#linearGradient-5)" fill-rule="nonzero"></path>
<rect id="Rectangle" x="0" y="0" width="13.5757576" height="13.5757576"></rect>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="cloud" transform="translate(1.000000, 3.000000)" fill="#50A6F2" fill-rule="nonzero">
<path d="M3.0625,10.5 C1.371125,10.5 0,9.128875 0,7.4375 C0,5.85515 1.2000275,4.5531325 2.7396425,4.3918175 C2.66483875,4.1070925 2.625,3.80820125 2.625,3.5 C2.625,1.5670025 4.1920025,0 6.125,0 C7.76895,0 9.1482125,1.1334575 9.5239375,2.66153125 C9.6999875,2.6374425 9.8798,2.625 10.0625,2.625 C12.2371375,2.625 14,4.38788 14,6.5625 C14,8.7371375 12.2371375,10.5 10.0625,10.5 L3.0625,10.5 Z" id="Path"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 950 B

View file

@ -34,15 +34,35 @@
font-size: var(--text-md);
.social-login-buttons {
display: flex;
flex-wrap: wrap;
justify-content: center;
margin-left: -4px;
margin-right: -4px;
margin-top: var(--margin-md);
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: var(--padding-sm);
}
.btn-social {
box-shadow: none;
.provider-icon {
margin-right: var(--padding-xs);
.login-button-wrapper {
@include media-breakpoint-up(md) {
min-width: 33.33%;
}
min-width: 50%;
padding: 0 4px;
margin-top: var(--margin-sm);
}
.btn-social {
font-size: var(--text-sm);
box-shadow: none;
&.btn-salesforce {
i {
color: var(--blue-400);
}
}
.provider-icon {
margin-right: var(--padding-xs);
}
}
}
}

View file

@ -15,7 +15,7 @@
<form class="form-signin form-login" role="form">
<div class="page-card-head">
<img class="app-logo" src="{{ logo }}">
<h4>{{ _('Login into {0}').format("Frappe") }}</h4>
<h4>{{ _('Login into {0}').format(app_name) }}</h4>
</div>
<div class="page-card-body">
@ -69,9 +69,12 @@
<div class="social-login-buttons">
{% for provider in provider_logins %}
<a href="{{ provider.auth_url }}"
class="btn btn-secondary btn-sm btn-social btn-{{ provider.name }}">
<span class="provider-icon">{{ provider.icon }}</span>{{ provider.provider_name }}</a>
<div class="login-button-wrapper">
<a href="{{ provider.auth_url }}"
class="btn btn-block btn-secondary btn-sm btn-social btn-{{ provider.name }}">
<span
class="provider-icon">{{ provider.icon }}</span>{{ provider.provider_name }}</a>
</div>
{% endfor %}
</div>
{%- endif -%}

View file

@ -35,14 +35,14 @@ def get_context(context):
context["provider_logins"] = []
context["disable_signup"] = frappe.utils.cint(frappe.db.get_value("Website Settings", "Website Settings", "disable_signup"))
context["logo"] = frappe.get_hooks("app_logo_url")[-1]
# context["app_title"] = frappe.get_hooks("app_title")[-1]
providers = [i.name for i in frappe.get_all("Social Login Key", filters={"enable_social_login":1})]
context["app_name"] = frappe.get_system_settings("app_name") or _("Frappe")
providers = [i.name for i in frappe.get_all("Social Login Key", filters={"enable_social_login":1}, order_by="name")]
for provider in providers:
client_id, base_url = frappe.get_value("Social Login Key", provider, ["client_id", "base_url"])
client_secret = get_decrypted_password("Social Login Key", provider, "client_secret")
provider_name = frappe.get_value("Social Login Key", provider, "provider_name")
if provider_name in ["Google", "Facebook", "Frappe", "GitHub", "Office 365"]:
if provider_name != "Custom":
icon_url = frappe.get_value("Social Login Key", provider, "icon")
icon = "<img src='{0}' alt={1}>".format(icon_url, provider_name)
else: