@@ -2,10 +2,18 @@ frappe.provide('frappe.desktop'); | |||||
frappe.pages['desktop'].on_page_load = function(wrapper) { | frappe.pages['desktop'].on_page_load = function(wrapper) { | ||||
// load desktop | // load desktop | ||||
frappe.desktop.set_background(); | |||||
if(!frappe.list_desktop) { | |||||
frappe.desktop.set_background(); | |||||
} | |||||
frappe.desktop.refresh(wrapper); | frappe.desktop.refresh(wrapper); | ||||
}; | }; | ||||
frappe.pages['desktop'].on_page_show = function(wrapper) { | |||||
if(frappe.list_desktop) { | |||||
$("body").attr("data-route", "list-desktop"); | |||||
} | |||||
}; | |||||
$.extend(frappe.desktop, { | $.extend(frappe.desktop, { | ||||
refresh: function(wrapper) { | refresh: function(wrapper) { | ||||
if (wrapper) { | if (wrapper) { | ||||
@@ -20,7 +28,10 @@ $.extend(frappe.desktop, { | |||||
var me = this; | var me = this; | ||||
frappe.utils.set_title("Desktop"); | frappe.utils.set_title("Desktop"); | ||||
this.wrapper.html(frappe.render_template("desktop_icon_grid", { | |||||
var template = frappe.list_desktop ? "desktop_list_view" : "desktop_icon_grid"; | |||||
this.wrapper.html(frappe.render_template(template, { | |||||
// all visible icons | // all visible icons | ||||
desktop_items: this.get_desktop_items(), | desktop_items: this.get_desktop_items(), | ||||
@@ -28,7 +39,7 @@ $.extend(frappe.desktop, { | |||||
user_desktop_items: this.get_user_desktop_items(), | user_desktop_items: this.get_user_desktop_items(), | ||||
})); | })); | ||||
this.setup_icon_click(); | |||||
this.setup_module_click(); | |||||
// notifications | // notifications | ||||
this.show_pending_notifications(); | this.show_pending_notifications(); | ||||
@@ -96,29 +107,40 @@ $.extend(frappe.desktop, { | |||||
return out; | return out; | ||||
}, | }, | ||||
setup_icon_click: function() { | |||||
this.wrapper.on("click", ".app-icon", function() { | |||||
var parent = $(this).parent(); | |||||
var link = parent.attr("data-link"); | |||||
if(link) { | |||||
if(link.substr(0, 1)==="/" || link.substr(0, 4)==="http") { | |||||
window.open(link, "_blank"); | |||||
} else { | |||||
frappe.set_route(link); | |||||
} | |||||
return false; | |||||
setup_module_click: function() { | |||||
var me = this; | |||||
if(frappe.list_desktop) { | |||||
this.wrapper.on("click", ".desktop-list-item", function() { | |||||
me.open_module($(this)); | |||||
}); | |||||
} else { | |||||
this.wrapper.on("click", ".app-icon", function() { | |||||
me.open_module($(this).parent()); | |||||
}); | |||||
} | |||||
}, | |||||
open_module: function(parent) { | |||||
var link = parent.attr("data-link"); | |||||
if(link) { | |||||
if(link.substr(0, 1)==="/" || link.substr(0, 4)==="http") { | |||||
window.open(link, "_blank"); | |||||
} else { | } else { | ||||
module = frappe.get_module(parent.attr("data-name")); | |||||
if (module && module.onclick) { | |||||
module.onclick(); | |||||
return false; | |||||
} | |||||
frappe.set_route(link); | |||||
} | } | ||||
}); | |||||
return false; | |||||
} else { | |||||
module = frappe.get_module(parent.attr("data-name")); | |||||
if (module && module.onclick) { | |||||
module.onclick(); | |||||
return false; | |||||
} | |||||
} | |||||
}, | }, | ||||
make_sortable: function() { | make_sortable: function() { | ||||
if (frappe.dom.is_touchscreen()) { | |||||
if (frappe.dom.is_touchscreen() || frappe.list_desktop) { | |||||
return; | return; | ||||
} | } | ||||
@@ -215,10 +237,15 @@ $.extend(frappe.desktop, { | |||||
sum = frappe.boot.notification_info.open_count_module[module]; | sum = frappe.boot.notification_info.open_count_module[module]; | ||||
} | } | ||||
if (frappe.modules[module]) { | if (frappe.modules[module]) { | ||||
var notifier = $("#module-count-" + frappe.get_module(module)._id); | |||||
var notifier = $(".module-count-" + frappe.get_module(module)._id); | |||||
if(notifier.length) { | if(notifier.length) { | ||||
notifier.toggle(sum ? true : false); | notifier.toggle(sum ? true : false); | ||||
notifier.find(".circle-text").html(sum || ""); | |||||
var circle = notifier.find(".circle-text"); | |||||
if(circle.length) { | |||||
circle.html(sum || ""); | |||||
} else { | |||||
notifier.html(sum); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,25 @@ | |||||
<div class="container page-body"> | |||||
<div class="row"> | |||||
<div class="layout-main-section"> | |||||
<div class="page-content desktop-list" style="margin-top: 40px;"> | |||||
{% for (var i=0, l=desktop_items.length; i < l; i++) { | |||||
var module = frappe.get_module(desktop_items[i]); | |||||
if (!module || (user_desktop_items.indexOf(module.name)===-1 && !module.force_show) | |||||
|| frappe.user.is_module_blocked(module.name)) { continue; } | |||||
%} | |||||
<div class="desktop-list-item" id="module-icon-{%= module._id %}" | |||||
data-name="{%= module.name %}" data-link="{%= module.link %}" | |||||
title="{%= module._label %}"> | |||||
<h4> | |||||
<i class="{{ module.icon }} text-muted" | |||||
style="font-size: 20px; margin-right: 15px;"></i> | |||||
{{ module._label }} | |||||
</h4> | |||||
<span class="open-notification module-count-{{ module._id }}" | |||||
style="display: none;"></span> | |||||
</div> | |||||
{% } %} | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> |
@@ -1,8 +1,8 @@ | |||||
<div id="module-icon-{%= _id %}" class="case-wrapper" | |||||
<div class="case-wrapper" | |||||
data-name="{%= name %}" data-link="{%= link %}" title="{%= _label %}"> | data-name="{%= name %}" data-link="{%= link %}" title="{%= _label %}"> | ||||
{%= app_icon %} | {%= app_icon %} | ||||
<div class="case-label text-ellipsis"> | <div class="case-label text-ellipsis"> | ||||
<div class="circle" id="module-count-{%= _id %}" style="display: none;"> | |||||
<div class="circle module-count-{%= _id %}" style="display: none;"> | |||||
<span class="circle-text"></span> | <span class="circle-text"></span> | ||||
</div> | </div> | ||||
<!-- <span id="module-count-{%= _id %}" class="octicon octicon-primitive-dot circle" style="display: None"></span> --> | <!-- <span id="module-count-{%= _id %}" class="octicon octicon-primitive-dot circle" style="display: None"></span> --> | ||||
@@ -161,3 +161,15 @@ body[data-route="desktop"] .navbar-default { | |||||
margin-top: 3px; | margin-top: 3px; | ||||
margin-bottom: 3px; | margin-bottom: 3px; | ||||
} | } | ||||
.desktop-list-item { | |||||
padding: 10px 15px; | |||||
border-bottom: 1px solid #d1d8dd; | |||||
cursor: pointer; | |||||
} | |||||
.desktop-list-item:hover, | |||||
.desktop-list-item:focus { | |||||
background-color: #f7fafc; | |||||
} | |||||
.desktop-list-item h4 { | |||||
display: inline-block; | |||||
} |
@@ -263,12 +263,10 @@ body { | |||||
@media (max-width: 991px) { | @media (max-width: 991px) { | ||||
input[type='checkbox'] { | input[type='checkbox'] { | ||||
-webkit-appearance: none; | -webkit-appearance: none; | ||||
width: 18px; | |||||
height: 18px; | |||||
width: 12px; | |||||
height: 12px; | |||||
background: white; | background: white; | ||||
border-radius: 9px; | |||||
margin-top: -2px; | |||||
margin-bottom: -5px; | |||||
border-radius: 6px; | |||||
border: 1px solid #d1d8dd; | border: 1px solid #d1d8dd; | ||||
display: inline-block; | display: inline-block; | ||||
} | } | ||||
@@ -329,6 +327,9 @@ body { | |||||
.module-item { | .module-item { | ||||
padding: 7px 0px !important; | padding: 7px 0px !important; | ||||
} | } | ||||
.module-item h4 { | |||||
font-weight: normal; | |||||
} | |||||
#navbar-breadcrumbs { | #navbar-breadcrumbs { | ||||
margin: 0px; | margin: 0px; | ||||
display: inline-block; | display: inline-block; | ||||
@@ -33,8 +33,8 @@ frappe.ui.misc.about = function() { | |||||
var $wrap = $("#about-app-versions").empty(); | var $wrap = $("#about-app-versions").empty(); | ||||
$.each(keys(versions).sort(), function(i, key) { | $.each(keys(versions).sort(), function(i, key) { | ||||
var v = versions[key]; | var v = versions[key]; | ||||
$($.format('<p><b>{0}:</b> v{1}<br><span class="text-muted">{2}</span></p>', | |||||
[v.title, v.version, v.description])).appendTo($wrap); | |||||
$($.format('<p><b>{0}:</b> v{1}<br></p>', | |||||
[v.title, v.version])).appendTo($wrap); | |||||
}); | }); | ||||
frappe.versions = versions; | frappe.versions = versions; | ||||
@@ -200,3 +200,21 @@ body[data-route=""] .navbar-default, body[data-route="desktop"] .navbar-default | |||||
margin-bottom: 3px; | margin-bottom: 3px; | ||||
} | } | ||||
} | } | ||||
.desktop-list { | |||||
} | |||||
.desktop-list-item& { | |||||
padding: 10px 15px; | |||||
border-bottom: 1px solid @border-color; | |||||
cursor: pointer; | |||||
&:hover, &:focus { | |||||
background-color: @panel-bg; | |||||
} | |||||
h4 { | |||||
display: inline-block; | |||||
} | |||||
} |
@@ -281,12 +281,10 @@ | |||||
@media(max-width: 991px) { | @media(max-width: 991px) { | ||||
input[type='checkbox'] { | input[type='checkbox'] { | ||||
-webkit-appearance:none; | -webkit-appearance:none; | ||||
width: 18px; | |||||
height: 18px; | |||||
width: 12px; | |||||
height: 12px; | |||||
background: white; | background: white; | ||||
border-radius: 9px; | |||||
margin-top: -2px; | |||||
margin-bottom: -5px; | |||||
border-radius: 6px; | |||||
border: 1px solid @border-color; | border: 1px solid @border-color; | ||||
display: inline-block; | display: inline-block; | ||||
} | } | ||||
@@ -363,6 +361,10 @@ | |||||
.module-item { | .module-item { | ||||
padding: 7px 0px !important; | padding: 7px 0px !important; | ||||
h4 { | |||||
font-weight: normal; | |||||
} | |||||
} | } | ||||
#navbar-breadcrumbs { | #navbar-breadcrumbs { | ||||