瀏覽代碼

refactor: Clean up whitespace & add CI check

version-14
ChillarAnand 3 年之前
父節點
當前提交
b2fc959307
共有 46 個文件被更改,包括 468 次插入437 次删除
  1. +11
    -2
      .github/workflows/linters.yml
  2. +23
    -0
      .pre-commit-config.yaml
  3. +0
    -1
      codecov.yml
  4. +1
    -1
      frappe/core/doctype/data_import/importer.py
  5. +3
    -3
      frappe/core/doctype/report/test_report.py
  6. +1
    -1
      frappe/desk/doctype/dashboard_chart/dashboard_chart.js
  7. +1
    -1
      frappe/desk/doctype/form_tour/form_tour.js
  8. +1
    -1
      frappe/desk/doctype/todo/todo_calendar.js
  9. +1
    -1
      frappe/desk/doctype/workspace/workspace.js
  10. +4
    -4
      frappe/desk/doctype/workspace/workspace.py
  11. +1
    -1
      frappe/email/receive.py
  12. +1
    -1
      frappe/integrations/doctype/razorpay_settings/razorpay_settings.js
  13. +1
    -1
      frappe/patches/v12_0/set_correct_url_in_files.py
  14. +1
    -1
      frappe/public/js/frappe/form/controls/date.js
  15. +1
    -1
      frappe/public/js/frappe/form/controls/table.js
  16. +1
    -1
      frappe/public/js/frappe/form/grid_pagination.js
  17. +1
    -1
      frappe/public/js/frappe/list/list_view_select.js
  18. +4
    -4
      frappe/public/js/frappe/ui/filters/field_select.js
  19. +3
    -3
      frappe/public/js/frappe/utils/utils.js
  20. +5
    -5
      frappe/public/js/frappe/views/reports/print_tree.html
  21. +3
    -3
      frappe/public/js/frappe/views/workspace/blocks/block.js
  22. +1
    -1
      frappe/public/js/frappe/views/workspace/blocks/header.js
  23. +3
    -3
      frappe/public/js/frappe/views/workspace/blocks/header_size.js
  24. +1
    -1
      frappe/public/js/frappe/views/workspace/blocks/paragraph.js
  25. +11
    -11
      frappe/public/js/frappe/views/workspace/workspace.js
  26. +2
    -2
      frappe/public/js/frappe/widgets/chart_widget.js
  27. +1
    -1
      frappe/public/js/lib/jSignature.min.js
  28. +5
    -5
      frappe/public/js/lib/photoswipe/default-skin.css
  29. +81
    -81
      frappe/public/js/lib/photoswipe/photoswipe-ui-default.js
  30. +263
    -263
      frappe/public/js/lib/photoswipe/photoswipe.js
  31. +2
    -2
      frappe/public/js/lib/prettydate.js
  32. +10
    -10
      frappe/public/scss/desk/desktop.scss
  33. +1
    -1
      frappe/public/scss/desk/list.scss
  34. +1
    -1
      frappe/public/scss/login.bundle.scss
  35. +6
    -6
      frappe/public/scss/website/blog.scss
  36. +1
    -1
      frappe/public/scss/website/error-state.scss
  37. +1
    -1
      frappe/public/scss/website/navbar.scss
  38. +1
    -1
      frappe/public/scss/website/portal.scss
  39. +1
    -1
      frappe/public/scss/website/web_form.scss
  40. +1
    -1
      frappe/templates/includes/feedback/feedback.html
  41. +1
    -1
      frappe/templates/pages/integrations/payment-success.html
  42. +1
    -1
      frappe/utils/make_random.py
  43. +1
    -1
      frappe/www/about.html
  44. +1
    -1
      frappe/www/me.html
  45. +1
    -1
      frappe/www/me.py
  46. +2
    -2
      frappe/www/third_party_apps.html

.github/workflows/semgrep.yml → .github/workflows/linters.yml 查看文件

@@ -1,15 +1,24 @@
name: Semgrep
name: Linters

on:
pull_request: { }

jobs:
semgrep:

linters:
name: Frappe Linter
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8

- name: Install and Run Pre-commit
uses: pre-commit/action@v2.0.3

- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules


+ 23
- 0
.pre-commit-config.yaml 查看文件

@@ -0,0 +1,23 @@
exclude: 'node_modules|.git'
default_stages: [commit]
fail_fast: false


repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: trailing-whitespace
files: "frappe.*"
exclude: ".*json$|.*txt$|.*csv|.*md|.*svg"
- id: check-yaml
- id: no-commit-to-branch
args: ['--branch', 'develop']
- id: check-merge-conflict
- id: check-ast


ci:
autoupdate_schedule: weekly
skip: []
submodules: false

+ 0
- 1
codecov.yml 查看文件

@@ -3,7 +3,6 @@ codecov:

coverage:
status:
patch: off
project:
default: false
server:


+ 1
- 1
frappe/core/doctype/data_import/importer.py 查看文件

@@ -166,7 +166,7 @@ class Importer:

if not self.data_import.status == "Partial Success":
self.data_import.db_set("status", "Partial Success")
# commit after every successful import
frappe.db.commit()



+ 3
- 3
frappe/core/doctype/report/test_report.py 查看文件

@@ -314,19 +314,19 @@ result = [
{
"parent_column": "Parent 1",
"column_1": 200,
"column_2": 150.50
"column_2": 150.50
},
{
"parent_column": "Child 1",
"column_1": 100,
"column_2": 75.25,
"parent_value": "Parent 1"
"parent_value": "Parent 1"
},
{
"parent_column": "Child 2",
"column_1": 100,
"column_2": 75.25,
"parent_value": "Parent 1"
"parent_value": "Parent 1"
}
]



+ 1
- 1
frappe/desk/doctype/dashboard_chart/dashboard_chart.js 查看文件

@@ -495,7 +495,7 @@ frappe.ui.form.on('Dashboard Chart', {

set_parent_document_type: async function(frm) {
let document_type = frm.doc.document_type;
let doc_is_table = document_type &&
let doc_is_table = document_type &&
(await frappe.db.get_value('DocType', document_type, 'istable')).message.istable;

frm.set_df_property('parent_document_type', 'hidden', !doc_is_table);


+ 1
- 1
frappe/desk/doctype/form_tour/form_tour.js 查看文件

@@ -16,7 +16,7 @@ frappe.ui.form.on('Form Tour', {
frm.add_custom_button(__('Show Tour'), async () => {
const issingle = await check_if_single(frm.doc.reference_doctype);
let route_changed = null;
if (issingle) {
route_changed = frappe.set_route('Form', frm.doc.reference_doctype);
} else if (frm.doc.first_document) {


+ 1
- 1
frappe/desk/doctype/todo/todo_calendar.js 查看文件

@@ -24,7 +24,7 @@ frappe.views.calendar["ToDo"] = {
"options": "reference_type",
"label": __("Task")
}
],
get_events_method: "frappe.desk.calendar.get_events"
};


+ 1
- 1
frappe/desk/doctype/workspace/workspace.js 查看文件

@@ -9,7 +9,7 @@ frappe.ui.form.on('Workspace', {
refresh: function(frm) {
frm.enable_save();

if (frm.doc.for_user || (frm.doc.public && !frm.has_perm('write') &&
if (frm.doc.for_user || (frm.doc.public && !frm.has_perm('write') &&
!frappe.user.has_role('Workspace Manager'))) {
frm.trigger('disable_form');
}


+ 4
- 4
frappe/desk/doctype/workspace/workspace.py 查看文件

@@ -176,9 +176,9 @@ def update_page(name, title, icon, parent, public):

doc = frappe.get_doc("Workspace", name)

filters = {
filters = {
'parent_page': doc.title,
'public': doc.public
'public': doc.public
}
child_docs = frappe.get_list("Workspace", filters=filters)

@@ -255,7 +255,7 @@ def delete_page(page):
def sort_pages(sb_public_items, sb_private_items):
if not loads(sb_public_items) and not loads(sb_private_items):
return
sb_public_items = loads(sb_public_items)
sb_private_items = loads(sb_private_items)

@@ -292,7 +292,7 @@ def last_sequence_id(doc):
if not doc_exists:
return 0

return frappe.db.get_list('Workspace',
return frappe.db.get_list('Workspace',
fields=['sequence_id'],
filters={
'public': doc.public,


+ 1
- 1
frappe/email/receive.py 查看文件

@@ -630,7 +630,7 @@ class InboundMail(Email):
if self.reference_document():
data['reference_doctype'] = self.reference_document().doctype
data['reference_name'] = self.reference_document().name
else:
else:
if append_to and append_to != 'Communication':
reference_doc = self._create_reference_document(append_to)
if reference_doc:


+ 1
- 1
frappe/integrations/doctype/razorpay_settings/razorpay_settings.js 查看文件

@@ -3,6 +3,6 @@

frappe.ui.form.on('Razorpay Settings', {
refresh: function(frm) {
}
});

+ 1
- 1
frappe/patches/v12_0/set_correct_url_in_files.py 查看文件

@@ -15,7 +15,7 @@ def execute():
for file in files:
file_path = file.file_url
file_name = file_path.split('/')[-1]
if not file_path.startswith(('/private/', '/files/')):
continue



+ 1
- 1
frappe/public/js/frappe/form/controls/date.js 查看文件

@@ -160,7 +160,7 @@ frappe.ui.form.ControlDate = class ControlDate extends frappe.ui.form.ControlDat
get_df_options() {
let df_options = this.df.options;
if (!df_options) return {};
let options = {};
if (typeof df_options === 'string') {
try {


+ 1
- 1
frappe/public/js/frappe/form/controls/table.js 查看文件

@@ -92,7 +92,7 @@ frappe.ui.form.ControlTable = class ControlTable extends frappe.ui.form.Control
if (frappe.model.no_value_type.includes(field.fieldtype)) {
return false;
}
const is_field_matching = () => {
return (
field.fieldname.toLowerCase() === field_name ||


+ 1
- 1
frappe/public/js/frappe/form/grid_pagination.js 查看文件

@@ -66,7 +66,7 @@ export default class GridPagination {
}

// only allow numbers from 0-9 and up, down, left, right arrow keys
if (charCode > 31 && (charCode < 48 || charCode > 57) &&
if (charCode > 31 && (charCode < 48 || charCode > 57) &&
![37, 38, 39, 40].includes(charCode)) {
return false;
}


+ 1
- 1
frappe/public/js/frappe/list/list_view_select.js 查看文件

@@ -150,7 +150,7 @@ frappe.views.ListViewSelect = class ListViewSelect {
const views_wrapper = this.sidebar.sidebar.find(".views-section");
views_wrapper.find(".sidebar-label").html(`${__(view)}`);
const $dropdown = views_wrapper.find(".views-dropdown");
let placeholder = `${__("Select {0}", [__(view)])}`;
let html = ``;



+ 4
- 4
frappe/public/js/frappe/ui/filters/field_select.js 查看文件

@@ -112,9 +112,9 @@ frappe.ui.FieldSelect = class FieldSelect {
// main table
var main_table_fields = std_filters.concat(frappe.meta.docfield_list[me.doctype]);
$.each(frappe.utils.sort(main_table_fields, "label", "string"), function(i, df) {
let doctype = frappe.get_meta(me.doctype).istable && me.parent_doctype ?
let doctype = frappe.get_meta(me.doctype).istable && me.parent_doctype ?
me.parent_doctype : me.doctype;
// show fields where user has read access and if report hide flag is not set
if (frappe.perm.has_perm(doctype, df.permlevel, "read"))
me.add_field_option(df);
@@ -132,9 +132,9 @@ frappe.ui.FieldSelect = class FieldSelect {
}

$.each(frappe.utils.sort(child_table_fields, "label", "string"), function(i, df) {
let doctype = frappe.get_meta(me.doctype).istable && me.parent_doctype ?
let doctype = frappe.get_meta(me.doctype).istable && me.parent_doctype ?
me.parent_doctype : me.doctype;
// show fields where user has read access and if report hide flag is not set
if (frappe.perm.has_perm(doctype, df.permlevel, "read"))
me.add_field_option(df);


+ 3
- 3
frappe/public/js/frappe/utils/utils.js 查看文件

@@ -244,7 +244,7 @@ Object.assign(frappe.utils, {
};

return String(txt).replace(
/[&<>"'`=/]/g,
/[&<>"'`=/]/g,
char => escape_html_mapping[char] || char
);
},
@@ -262,7 +262,7 @@ Object.assign(frappe.utils, {
};

return String(txt).replace(
/&amp;|&lt;|&gt;|&quot;|&#39;|&#x2F;|&#x60;|&#x3D;/g,
/&amp;|&lt;|&gt;|&quot;|&#39;|&#x2F;|&#x60;|&#x3D;/g,
char => unescape_html_mapping[char] || char
);
},
@@ -1435,7 +1435,7 @@ Object.assign(frappe.utils, {
// for link titles
frappe._link_titles = {};
}
frappe._link_titles[doctype + "::" + name] = value;
},



+ 5
- 5
frappe/public/js/frappe/views/reports/print_tree.html 查看文件

@@ -10,14 +10,14 @@
<link href="{{ base_url }}/assets/frappe/css/bootstrap.css" rel="stylesheet">
<link type="text/css" rel="stylesheet"
href="{{ base_url }}/assets/frappe/css/font-awesome.css">
<link rel="stylesheet" type="text/css" href="{{ base_url }}/assets/frappe/css/tree.css">
<link rel="stylesheet" type="text/css" href="{{ base_url }}/assets/frappe/css/tree.css">
<style>
{{ print_css }}
</style>
<style>
.tree.opened::before,
.tree-node.opened::before,
.tree:last-child::after,
.tree.opened::before,
.tree-node.opened::before,
.tree:last-child::after,
.tree-node:last-child::after {
z-index: 1;
border-left: 1px solid #d1d8dd;
@@ -28,7 +28,7 @@
text-decoration: none;
cursor: default;
}
.tree.opened > .tree-children > .tree-node > .tree-link::before,
.tree.opened > .tree-children > .tree-node > .tree-link::before,
.tree-node.opened > .tree-children > .tree-node > .tree-link::before {
border-top: 1px solid #d1d8dd;
z-index: 1;


+ 3
- 3
frappe/public/js/frappe/views/workspace/blocks/block.js 查看文件

@@ -50,7 +50,7 @@ export default class Block {
document.documentElement.addEventListener('mousemove', do_drag, false);
document.documentElement.addEventListener('mouseup', stop_drag, false);
}
function do_drag(e) {
$(this).css("cursor", "col-resize");
$('.widget').css("pointer-events", "none");
@@ -72,7 +72,7 @@ export default class Block {
} else {
window.getSelection().removeAllRanges();
}
}
}

function stop_drag() {
$(this).css("cursor", "default");
@@ -221,7 +221,7 @@ export default class Block {
$widget_control.prepend($button);

this.dropdown_list.forEach((item) => {
if ((item.label == 'Expand' || item.label == 'Shrink') &&
if ((item.label == 'Expand' || item.label == 'Shrink') &&
me.options && !me.options.allow_resize) {
return;
}


+ 1
- 1
frappe/public/js/frappe/views/workspace/blocks/header.js 查看文件

@@ -107,7 +107,7 @@ export default class Header extends Block {
if (data.text !== undefined) {
let text = this._data.text || '';
const contains_html_tag = /<[a-z][\s\S]*>/i.test(text);
this._element.innerHTML = contains_html_tag ?
this._element.innerHTML = contains_html_tag ?
text : `<span class="h${this._settings.default_size}">${text}</span>`;
}



+ 3
- 3
frappe/public/js/frappe/views/workspace/blocks/header_size.js 查看文件

@@ -36,7 +36,7 @@ export default class HeaderSize {

checkState(selection) {
let termWrapper = this.api.selection.findParentTag('SPAN');
for (const h of ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) {
if (termWrapper && termWrapper.classList.contains(h)) {
let num = h.match(/\d+/)[0];
@@ -57,7 +57,7 @@ export default class HeaderSize {
span.innerText = range.toString();

this.remove_parent_tag(range, range.commonAncestorContainer, span);
range.extractContents();
range.insertNode(span);
this.api.inlineToolbar.close();
@@ -90,7 +90,7 @@ export default class HeaderSize {
renderActions() {
this.actions = document.createElement('div');
this.actions.classList = 'header-level-select';
this.headerLevels = new Array(6).fill().map((_, idx) => {
const $header_level = document.createElement('div');
$header_level.classList.add(`h${idx+1}`, 'header-level');


+ 1
- 1
frappe/public/js/frappe/views/workspace/blocks/paragraph.js 查看文件

@@ -116,7 +116,7 @@ export default class Paragraph extends Block {
this.wrapper.appendChild(this._element);
this._element.classList.remove('widget');
$para_control.appendTo(this.wrapper);
this.wrapper.classList.add('widget', 'paragraph', 'edit-mode');

this.open_block_list();


+ 11
- 11
frappe/public/js/frappe/views/workspace/workspace.js 查看文件

@@ -219,7 +219,7 @@ frappe.views.Workspace = class Workspace {
$sidebar[0].firstElementChild.classList.add("selected");
if (sidebar_page) sidebar_page.selected = true;

// open child sidebar section if closed
// open child sidebar section if closed
$sidebar.parent().hasClass('hidden') &&
$sidebar.parent().removeClass('hidden');

@@ -244,7 +244,7 @@ frappe.views.Workspace = class Workspace {
this.pages[page.name] = data.message;

if (!this.page_data || Object.keys(this.page_data).length === 0) return;
if (this.page_data.charts && this.page_data.charts.items.length === 0) return;
if (this.page_data.charts && this.page_data.charts.items.length === 0) return;

return frappe.dashboard_utils.get_dashboard_settings().then(settings => {
if (settings) {
@@ -596,9 +596,9 @@ frappe.views.Workspace = class Workspace {
}

update_cached_values(old_item, new_item, duplicate, new_page) {
let [from_pages, to_pages] = old_item.public ?
let [from_pages, to_pages] = old_item.public ?
[this.public_pages, this.private_pages] : [this.private_pages, this.public_pages];
let old_item_index = from_pages.findIndex(page => page.title == old_item.title);
duplicate && old_item_index++;

@@ -859,7 +859,7 @@ frappe.views.Workspace = class Workspace {
public: page.attributes['item-public'].value
});

let $drop_icon = $(page).find('.sidebar-item-control .drop-icon').first();
let $drop_icon = $(page).find('.sidebar-item-control .drop-icon').first();
if ($(page).find('.sidebar-child-item > *').length != 0) {
$drop_icon.removeClass('hidden');
} else {
@@ -993,13 +993,13 @@ frappe.views.Workspace = class Workspace {
}
}
});
this.update_cached_values(new_page, new_page, true, true);
let pre_url = new_page.public ? '' : 'private/';
let route = pre_url + frappe.router.slug(new_page.title);
frappe.set_route(route);
this.make_sidebar();
this.show_sidebar_actions();
});
@@ -1010,15 +1010,15 @@ frappe.views.Workspace = class Workspace {

validate_page(new_page, old_page) {
let message = "";
let [from_pages, to_pages] = new_page.is_public ?
let [from_pages, to_pages] = new_page.is_public ?
[this.private_pages, this.public_pages] : [this.public_pages, this.private_pages];

let section = this.sidebar_categories[new_page.is_public];

if (to_pages && to_pages.filter(p => p.title == new_page.title)[0]) {
message = `Page with title ${new_page.title} already exist.`;
}
}
if (frappe.router.doctype_route_exist(frappe.router.slug(new_page.title))) {
message = "Doctype with same route already exist. Please choose different title.";
}


+ 2
- 2
frappe/public/js/frappe/widgets/chart_widget.js 查看文件

@@ -698,12 +698,12 @@ export default class ChartWidget extends Widget {
.get_filters_for_chart_type(this.chart_doc).then(filters => {
chart_saved_filters = this.update_default_date_filters(filters, chart_saved_filters);
this.filters =
frappe.utils.parse_array(user_saved_filters) || frappe.utils.parse_array(this.filters)
frappe.utils.parse_array(user_saved_filters) || frappe.utils.parse_array(this.filters)
|| frappe.utils.parse_array(chart_saved_filters);
});
} else {
this.filters =
frappe.utils.parse_array(user_saved_filters) || frappe.utils.parse_array(this.filters)
frappe.utils.parse_array(user_saved_filters) || frappe.utils.parse_array(this.filters)
|| frappe.utils.parse_array(chart_saved_filters);
return Promise.resolve();
}


+ 1
- 1
frappe/public/js/lib/jSignature.min.js 查看文件

@@ -993,7 +993,7 @@ jSignatureClass.prototype.resetCanvas = function(data, dontClear){
ctx.shadowBlur = 0;
}
}
ctx.strokeStyle = settings.color;

// setting up new dataEngine


+ 5
- 5
frappe/public/js/lib/photoswipe/default-skin.css 查看文件

@@ -12,7 +12,7 @@

*/
/*
1. Buttons

*/
@@ -257,7 +257,7 @@ a.pswp__share--download:hover {
padding: 0 10px; }

/*
4. Caption

*/
@@ -338,8 +338,8 @@ a.pswp__share--download:hover {
margin: 0; }

.pswp--css_animation .pswp__preloader__cut {
/*
The idea of animating inner circle is based on Polymer ("material") loading indicator
/*
The idea of animating inner circle is based on Polymer ("material") loading indicator
by Keanu Lee https://blog.keanulee.com/2014/10/20/the-tale-of-three-spinners.html
*/
position: relative;
@@ -409,7 +409,7 @@ a.pswp__share--download:hover {
transform: rotate(0); } }

/*
6. Additional styles

*/


+ 81
- 81
frappe/public/js/lib/photoswipe/photoswipe-ui-default.js 查看文件

@@ -5,9 +5,9 @@
*
* UI on top of main sliding area (caption, arrows, close button, etc.).
* Built just using public methods/properties of PhotoSwipe.
*
*
*/
(function (root, factory) {
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
@@ -48,11 +48,11 @@ var PhotoSwipeUI_Default =
_options,
_defaultUIOptions = {
barsSize: {top:44, bottom:'auto'},
closeElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'],
timeToIdle: 4000,
closeElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'],
timeToIdle: 4000,
timeToIdleOutside: 1000,
loadingIndicatorDelay: 1000, // 2s
addCaptionHTMLFn: function(item, captionEl /*, isFake */) {
if(!item.title) {
captionEl.children[0].innerHTML = '';
@@ -92,7 +92,7 @@ var PhotoSwipeUI_Default =
getTextForShare: function( /* shareButtonData */ ) {
return pswp.currItem.title || '';
},
indexIndicatorSep: ' / ',
fitControlsWidth: 1200

@@ -136,12 +136,12 @@ var PhotoSwipeUI_Default =
}
_blockControlsTap = true;

// Some versions of Android don't prevent ghost click event
// Some versions of Android don't prevent ghost click event
// when preventDefault() was called on touchstart and/or touchend.
//
// This happens on v4.3, 4.2, 4.1,
// older versions strangely work correctly,
// but just in case we add delay on all of them)
//
// This happens on v4.3, 4.2, 4.1,
// older versions strangely work correctly,
// but just in case we add delay on all of them)
var tapDelay = framework.features.isOldAndroid ? 600 : 30;
_blockControlsTapTimeout = setTimeout(function() {
_blockControlsTap = false;
@@ -172,8 +172,8 @@ var PhotoSwipeUI_Default =
_toggleShareModal = function() {

_shareModalHidden = !_shareModalHidden;
if(!_shareModalHidden) {
_toggleShareModalClass();
setTimeout(function() {
@@ -189,7 +189,7 @@ var PhotoSwipeUI_Default =
}
}, 300);
}
if(!_shareModalHidden) {
_updateShareURLs();
}
@@ -211,13 +211,13 @@ var PhotoSwipeUI_Default =
}

window.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+
'location=yes,width=550,height=420,top=100,left=' +
'location=yes,width=550,height=420,top=100,left=' +
(window.screen ? Math.round(screen.width / 2 - 275) : 100) );

if(!_shareModalHidden) {
_toggleShareModal();
}
return false;
},
_updateShareURLs = function() {
@@ -242,7 +242,7 @@ var PhotoSwipeUI_Default =

shareButtonOut += '<a href="' + shareURL + '" target="_blank" '+
'class="pswp__share--' + shareButtonData.id + '"' +
(shareButtonData.download ? 'download' : '') + '>' +
(shareButtonData.download ? 'download' : '') + '>' +
shareButtonData.label + '</a>';

if(_options.parseShareButtonOut) {
@@ -297,7 +297,7 @@ var PhotoSwipeUI_Default =
_setupLoadingIndicator = function() {
// Setup loading indicator
if(_options.preloaderEl) {
_toggleLoadingIndicator(true);

_listen('beforeChange', function() {
@@ -310,18 +310,18 @@ var PhotoSwipeUI_Default =
if(pswp.currItem && pswp.currItem.loading) {

if( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth) ) {
// show preloader if progressive loading is not enabled,
// show preloader if progressive loading is not enabled,
// or image width is not defined yet (because of slow connection)
_toggleLoadingIndicator(false);
_toggleLoadingIndicator(false);
// items-controller.js function allowProgressiveImg
}
} else {
_toggleLoadingIndicator(true); // hide preloader
}

}, _options.loadingIndicatorDelay);
});
_listen('imageLoadComplete', function(index, item) {
if(pswp.currItem === item) {
@@ -341,8 +341,8 @@ var PhotoSwipeUI_Default =
var gap = item.vGap;

if( _fitControlsInViewport() ) {
var bars = _options.barsSize;
var bars = _options.barsSize;
if(_options.captionEl && bars.bottom === 'auto') {
if(!_fakeCaptionContainer) {
_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');
@@ -360,7 +360,7 @@ var PhotoSwipeUI_Default =
} else {
gap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;
}
// height of top bar is static, no need to calculate it
gap.top = bars.top;
} else {
@@ -371,7 +371,7 @@ var PhotoSwipeUI_Default =
// Hide controls when mouse is used
if(_options.timeToIdle) {
_listen('mouseUsed', function() {
framework.bind(document, 'mousemove', _onIdleMouseMove);
framework.bind(document, 'mouseout', _onMouseLeaveWindow);

@@ -418,77 +418,77 @@ var PhotoSwipeUI_Default =


var _uiElements = [
{
name: 'caption',
{
name: 'caption',
option: 'captionEl',
onInit: function(el) {
_captionContainer = el;
}
onInit: function(el) {
_captionContainer = el;
}
},
{
name: 'share-modal',
{
name: 'share-modal',
option: 'shareEl',
onInit: function(el) {
onInit: function(el) {
_shareModal = el;
},
onTap: function() {
_toggleShareModal();
}
}
},
{
name: 'button--share',
{
name: 'button--share',
option: 'shareEl',
onInit: function(el) {
onInit: function(el) {
_shareButton = el;
},
onTap: function() {
_toggleShareModal();
}
}
},
{
name: 'button--zoom',
{
name: 'button--zoom',
option: 'zoomEl',
onTap: pswp.toggleDesktopZoom
},
{
name: 'counter',
{
name: 'counter',
option: 'counterEl',
onInit: function(el) {
onInit: function(el) {
_indexIndicator = el;
}
}
},
{
name: 'button--close',
{
name: 'button--close',
option: 'closeEl',
onTap: pswp.close
},
{
name: 'button--arrow--left',
{
name: 'button--arrow--left',
option: 'arrowEl',
onTap: pswp.prev
},
{
name: 'button--arrow--right',
{
name: 'button--arrow--right',
option: 'arrowEl',
onTap: pswp.next
},
{
name: 'button--fs',
{
name: 'button--fs',
option: 'fullscreenEl',
onTap: function() {
onTap: function() {
if(_fullscrenAPI.isFullscreen()) {
_fullscrenAPI.exit();
} else {
_fullscrenAPI.enter();
}
}
}
},
{
name: 'preloader',
{
name: 'preloader',
option: 'preloaderEl',
onInit: function(el) {
onInit: function(el) {
_loadingIndicator = el;
}
}
}

];
@@ -514,12 +514,12 @@ var PhotoSwipeUI_Default =
if(classAttr.indexOf('pswp__' + uiElement.name) > -1 ) {

if( _options[uiElement.option] ) { // if element is not disabled from options
framework.removeClass(item, 'pswp__element--disabled');
if(uiElement.onInit) {
uiElement.onInit(item);
}
//item.style.display = 'block';
} else {
framework.addClass(item, 'pswp__element--disabled');
@@ -538,7 +538,7 @@ var PhotoSwipeUI_Default =
};



ui.init = function() {

@@ -574,9 +574,9 @@ var PhotoSwipeUI_Default =
_listen('preventDragEvent', function(e, isDown, preventObj) {
var t = e.target || e.srcElement;
if(
t &&
t.getAttribute('class') && e.type.indexOf('mouse') > -1 &&
( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) )
t &&
t.getAttribute('class') && e.type.indexOf('mouse') > -1 &&
( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) )
) {
preventObj.prevent = false;
}
@@ -634,7 +634,7 @@ var PhotoSwipeUI_Default =
framework.addClass( _controls, 'pswp__ui--hidden');
ui.setIdle(false);
});

if(!_options.showAnimationDuration) {
framework.removeClass( _controls, 'pswp__ui--hidden');
@@ -649,7 +649,7 @@ var PhotoSwipeUI_Default =
});

_listen('parseVerticalMargin', _applyNavBarGaps);
_setupUIElements();

if(_options.shareEl && _shareButton && _shareModal) {
@@ -673,7 +673,7 @@ var PhotoSwipeUI_Default =
ui.update = function() {
// Don't update UI if it's hidden
if(_controlsVisible && pswp.currItem) {
ui.updateIndexIndicator();

if(_options.captionEl) {
@@ -704,19 +704,19 @@ var PhotoSwipeUI_Default =
pswp.setScrollOffset( 0, framework.getScrollY() );
}, 50);
}
// toogle pswp--fs class on root element
framework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');
};

ui.updateIndexIndicator = function() {
if(_options.counterEl) {
_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) +
_options.indexIndicatorSep +
_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) +
_options.indexIndicatorSep +
_options.getNumItemsFn();
}
};
ui.onGlobalTap = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
@@ -742,7 +742,7 @@ var PhotoSwipeUI_Default =
pswp.toggleDesktopZoom(e.detail.releasePoint);
}
}
} else {

// tap anywhere (except buttons) to toggle visibility of controls
@@ -759,7 +759,7 @@ var PhotoSwipeUI_Default =
pswp.close();
return;
}
}
};
ui.onMouseOver = function(e) {
@@ -809,7 +809,7 @@ var PhotoSwipeUI_Default =
eventK: 'moz' + tF
};


} else if(dE.webkitRequestFullscreen) {
api = {
@@ -829,21 +829,21 @@ var PhotoSwipeUI_Default =
}

if(api) {
api.enter = function() {
api.enter = function() {
// disable close-on-scroll in fullscreen
_initalCloseOnScrollValue = _options.closeOnScroll;
_options.closeOnScroll = false;
_initalCloseOnScrollValue = _options.closeOnScroll;
_options.closeOnScroll = false;

if(this.enterK === 'webkitRequestFullscreen') {
pswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );
} else {
return pswp.template[this.enterK]();
return pswp.template[this.enterK]();
}
};
api.exit = function() {
api.exit = function() {
_options.closeOnScroll = _initalCloseOnScrollValue;

return document[this.exitK]();
return document[this.exitK]();

};
api.isFullscreen = function() { return document[this.elementK]; };


+ 263
- 263
frappe/public/js/lib/photoswipe/photoswipe.js
文件差異過大導致無法顯示
查看文件


+ 2
- 2
frappe/public/js/lib/prettydate.js 查看文件

@@ -11,10 +11,10 @@ function prettyDate(time){
var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/, "")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 )
return '';
return day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||


+ 10
- 10
frappe/public/scss/desk/desktop.scss 查看文件

@@ -1070,11 +1070,11 @@ body {
}

.resizer {
width: 10px;
width: 10px;
height: 100%;
position:absolute;
right: 0;
bottom: 0;
position:absolute;
right: 0;
bottom: 0;
cursor: col-resize;
border-color: transparent;
transition: border-color 0.3s ease-in-out;
@@ -1089,8 +1089,8 @@ body {
margin-bottom: 0 !important;
flex: 1;

&:focus {
outline: none;
&:focus {
outline: none;
}
}

@@ -1124,11 +1124,11 @@ body {
color: var(--text-muted);
border: 1px dashed var(--gray-400);
cursor: pointer;
.widget-control > * {
width: auto;
}
.spacer-left {
min-width: 74px;
}
@@ -1158,7 +1158,7 @@ body {
gap: 5px;
background-color: var(--card-bg);
padding-left: 5px;
.drag-handle {
cursor: all-scroll;
cursor: grabbing;
@@ -1325,7 +1325,7 @@ body {
padding: 6px 10px;
font-size: small;
border-radius: var(--border-radius-sm);
margin: 1px 0px;
margin: 1px 0px;
}

.dropdown-item-icon {


+ 1
- 1
frappe/public/scss/desk/list.scss 查看文件

@@ -202,7 +202,7 @@ $level-margin-right: 8px;
box-shadow: none;
margin-left: 0px !important;
border: 1px solid var(--dark-border-color);
&.btn-info {
background-color: var(--gray-400);
border-color: var(--gray-400);


+ 1
- 1
frappe/public/scss/login.bundle.scss 查看文件

@@ -150,7 +150,7 @@ body {
min-width: 50%;
padding: 0 4px;
margin-bottom: var(--margin-md);
&:last-child {
margin-bottom: 0;
}


+ 6
- 6
frappe/public/scss/website/blog.scss 查看文件

@@ -163,18 +163,18 @@
padding: var(--padding-lg);
box-shadow: var(--card-shadow);
border-radius: var(--border-radius-md);
.new-comment-fields {
flex: 1;
.form-label {
font-weight: var(--text-bold);
}
.comment-text-area textarea {
resize: none;
}
@media (min-width: 576px) {
.comment-by {
padding-right: 0px !important;
@@ -184,7 +184,7 @@
}
}
}

#comment-list {
position: relative;
@@ -206,7 +206,7 @@
top: 10px;
left: -17px;
}
.comment-content {
box-shadow: var(--card-shadow);
border-radius: var(--border-radius-md);


+ 1
- 1
frappe/public/scss/website/error-state.scss 查看文件

@@ -9,7 +9,7 @@
width: 80%
}
}
.back-to-home {
font-size: var(--text-base);
}


+ 1
- 1
frappe/public/scss/website/navbar.scss 查看文件

@@ -46,7 +46,7 @@

.navbar-toggler {
border-color: rgba(255,255,255, 0.1);
.icon {
stroke: none;
}


+ 1
- 1
frappe/public/scss/website/portal.scss 查看文件

@@ -1,6 +1,6 @@
.portal-row {
padding: 1rem 0;
a {
color: $body-color;
}

+ 1
- 1
frappe/public/scss/website/web_form.scss 查看文件

@@ -3,7 +3,7 @@

[data-doctype="Web Form"] {
.page-content-wrapper {
.breadcrumb-container.container {
@include media-breakpoint-up(sm) {
padding-left: 0;


+ 1
- 1
frappe/templates/includes/feedback/feedback.html 查看文件

@@ -38,6 +38,6 @@
like
}
});
}
}
});
</script>

+ 1
- 1
frappe/templates/pages/integrations/payment-success.html 查看文件

@@ -11,7 +11,7 @@
<p>{{ payment_message or _("Your payment was successfully accepted") }}</p>
{% if not payment_message %}
<div>
<a
<a
href='{{ frappe.form_dict.redirect_to or "/" }}'
class='btn btn-primary btn-sm'>
{{ _("Continue") }}


+ 1
- 1
frappe/utils/make_random.py 查看文件

@@ -35,7 +35,7 @@ def get_random(doctype, filters=None, doc=False):
condition = " where " + " and ".join(condition)
else:
condition = ""
out = frappe.db.multisql({
'mariadb': """select name from `tab%s` %s
order by RAND() limit 1 offset 0""" % (doctype, condition),


+ 1
- 1
frappe/www/about.html 查看文件

@@ -22,7 +22,7 @@
add_top_padding=1,
add_bottom_padding=1,
) }}

{% if doc.get({"doctype":"Company History"}) %}
<section class="section section-padding-bottom">


+ 1
- 1
frappe/www/me.html 查看文件

@@ -87,7 +87,7 @@
{% if item.target %}target="{{ item.target }}"{% endif %}>
{{ _(item.title or item.label) }}
</a>
{%- endfor %}
{%- endfor %}
</ul>
</div>
</div>

+ 1
- 1
frappe/www/me.py 查看文件

@@ -10,6 +10,6 @@ no_cache = 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.current_user = frappe.get_doc("User", frappe.session.user)
context.show_sidebar=True

+ 2
- 2
frappe/www/third_party_apps.html 查看文件

@@ -53,8 +53,8 @@
{% endfor %}
{% else %}
<div class="empty-apps-state">
<img src="/assets/frappe/images/ui-states/empty-app-state.svg"/>
<div class="font-weight-bold mt-4">
<img src="/assets/frappe/images/ui-states/empty-app-state.svg"/>
<div class="font-weight-bold mt-4">
{{ _("No Active Sessions")}}
</div>
<div class="text-muted mt-2">


Loading…
取消
儲存