@@ -2,10 +2,18 @@ frappe.provide('frappe.desktop'); | |||
frappe.pages['desktop'].on_page_load = function(wrapper) { | |||
// load desktop | |||
frappe.desktop.set_background(); | |||
if(!frappe.list_desktop) { | |||
frappe.desktop.set_background(); | |||
} | |||
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, { | |||
refresh: function(wrapper) { | |||
if (wrapper) { | |||
@@ -20,7 +28,10 @@ $.extend(frappe.desktop, { | |||
var me = this; | |||
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 | |||
desktop_items: this.get_desktop_items(), | |||
@@ -28,7 +39,7 @@ $.extend(frappe.desktop, { | |||
user_desktop_items: this.get_user_desktop_items(), | |||
})); | |||
this.setup_icon_click(); | |||
this.setup_module_click(); | |||
// notifications | |||
this.show_pending_notifications(); | |||
@@ -96,29 +107,40 @@ $.extend(frappe.desktop, { | |||
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 { | |||
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() { | |||
if (frappe.dom.is_touchscreen()) { | |||
if (frappe.dom.is_touchscreen() || frappe.list_desktop) { | |||
return; | |||
} | |||
@@ -215,10 +237,15 @@ $.extend(frappe.desktop, { | |||
sum = frappe.boot.notification_info.open_count_module[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) { | |||
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 %}"> | |||
{%= app_icon %} | |||
<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> | |||
</div> | |||
<!-- <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-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) { | |||
input[type='checkbox'] { | |||
-webkit-appearance: none; | |||
width: 18px; | |||
height: 18px; | |||
width: 12px; | |||
height: 12px; | |||
background: white; | |||
border-radius: 9px; | |||
margin-top: -2px; | |||
margin-bottom: -5px; | |||
border-radius: 6px; | |||
border: 1px solid #d1d8dd; | |||
display: inline-block; | |||
} | |||
@@ -329,6 +327,9 @@ body { | |||
.module-item { | |||
padding: 7px 0px !important; | |||
} | |||
.module-item h4 { | |||
font-weight: normal; | |||
} | |||
#navbar-breadcrumbs { | |||
margin: 0px; | |||
display: inline-block; | |||
@@ -33,8 +33,8 @@ frappe.ui.misc.about = function() { | |||
var $wrap = $("#about-app-versions").empty(); | |||
$.each(keys(versions).sort(), function(i, 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; | |||
@@ -200,3 +200,21 @@ body[data-route=""] .navbar-default, body[data-route="desktop"] .navbar-default | |||
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) { | |||
input[type='checkbox'] { | |||
-webkit-appearance:none; | |||
width: 18px; | |||
height: 18px; | |||
width: 12px; | |||
height: 12px; | |||
background: white; | |||
border-radius: 9px; | |||
margin-top: -2px; | |||
margin-bottom: -5px; | |||
border-radius: 6px; | |||
border: 1px solid @border-color; | |||
display: inline-block; | |||
} | |||
@@ -363,6 +361,10 @@ | |||
.module-item { | |||
padding: 7px 0px !important; | |||
h4 { | |||
font-weight: normal; | |||
} | |||
} | |||
#navbar-breadcrumbs { | |||