wn.provide('wn.desktop');
wn.pages['desktop'].onload = function(wrapper) {
// setup dialog
// load desktop
wn.desktop.refresh();
}
wn.pages['desktop'].refresh = function(wrapper) {
wn.ui.toolbar.add_dropdown_button("File", wn._("All Applications"), function() {
wn.desktop.show_all_modules();
}, 'icon-th');
}
wn.desktop.refresh = function() {
wn.desktop.render();
$("#icon-grid").sortable({
update: function() {
new_order = [];
$("#icon-grid .case-wrapper").each(function(i, e) {
new_order.push($(this).attr("data-name"));
});
wn.defaults.set_default("_desktop_items", new_order);
}
});
}
wn.desktop.render = function() {
$("#icon-grid").empty();
document.title = "Desktop";
var add_icon = function(m) {
var module = wn.modules[m];
if(!module || (!module.link && !module.onclick) || module.is_app)
return;
if(module.link)
module._link = module.link.toLowerCase().replace("/", "-");
module.app_icon = wn.ui.app_icon.get_html(m);
$module_icon = $(repl('
\
\
\
\
%(app_icon)s\
%(_label)s
\
', module)).click(module.link ? function() {
var link = $(this).attr("data-link");
if(link) {
if(link.substr(0, 1)==="/") {
window.open(link.substr(1))
}
wn.set_route(link);
}
} : module.onclick).css({
cursor:"pointer"
}).appendTo("#icon-grid");
}
// modules
var modules_list = wn.user.get_desktop_items();
var user_list = wn.user.get_user_desktop_items();
$.each(modules_list, function(i, m) {
var module = wn.modules[m];
if(module) {
if(!module.label) {
module.label = m;
}
module.name = m;
module._label = wn._(module.label);
if(m!="Setup" && user_list.indexOf(m)!==-1)
add_icon(m);
}
})
// setup
if(user_roles.indexOf('System Manager')!=-1)
add_icon('Setup')
// all applications
wn.modules["All Applications"] = {
icon: "icon-th",
label: "All Applications",
_label: wn._("All Applications"),
color: "#4aa3df",
link: "",
onclick: function() {
wn.desktop.show_all_modules();
}
}
add_icon("All Applications")
// notifications
wn.desktop.show_pending_notifications();
$(document).on("notification-update", function() {
wn.desktop.show_pending_notifications();
})
}
wn.desktop.show_all_modules = function() {
if(!wn.desktop.all_modules_dialog) {
var d = new wn.ui.Dialog({
title: ' All Applications'
});
var desktop_items = wn.user.get_desktop_items();
var user_desktop_items = wn.user.get_user_desktop_items();
$('')
.appendTo(d.body)
.on("keyup", function() {
var val = $(this).val();
$(d.body).find(".list-group-item").each(function() {
$(this).toggle($(this).attr("data-label").toLowerCase().indexOf(val)!==-1);
})
});
$('
'+wn._("Checked items shown on desktop")+'
')
.appendTo(d.body);
$wrapper = $('').appendTo(d.body);
// list of applications (wn.user.get_desktop_items())
$.each(keys(wn.modules).sort(), function(i, m) {
var module = wn.modules[m];
if(module.link && desktop_items.indexOf(m)!==-1) {
module.app_icon = wn.ui.app_icon.get_html(m, true);
$(repl('
', module)).appendTo($wrapper);
}
});
// check shown items
$wrapper.find('[type="checkbox"]')
.on("click", function() {
// update user_desktop_items (when checked or un-checked)
var user_desktop_items = wn.user.get_user_desktop_items();
var module = $(this).attr("data-name");
if($(this).prop("checked")) {
user_desktop_items.push(module);
} else {
if(user_desktop_items.indexOf(module)!==-1) {
user_desktop_items.splice(user_desktop_items.indexOf(module), 1);
}
}
wn.defaults.set_default("_user_desktop_items", user_desktop_items);
wn.desktop.refresh();
})
.prop("checked", false);
$.each(user_desktop_items, function(i, m) {
$wrapper.find('[data-label="'+m+'"] [type="checkbox"]').prop("checked", true);
})
wn.desktop.all_modules_dialog = d;
}
$(wn.desktop.all_modules_dialog.body).find(".desktop-app-search").val("").trigger("keyup");
wn.desktop.all_modules_dialog.show();
}
wn.desktop.show_pending_notifications = function() {
if (!wn.boot.notification_info.module_doctypes) {
return;
}
var modules_list = wn.user.get_desktop_items();
$.each(modules_list, function(i, module) {
var module_doctypes = wn.boot.notification_info.module_doctypes[module];
var sum = 0;
if(module_doctypes) {
if(wn.boot.notification_info.open_count_doctype) {
$.each(module_doctypes, function(j, doctype) {
sum += (wn.boot.notification_info.open_count_doctype[doctype] || 0);
});
}
} else if(wn.boot.notification_info.open_count_module
&& wn.boot.notification_info.open_count_module[module]!=null) {
sum = wn.boot.notification_info.open_count_module[module];
}
if (wn.modules[module]) {
var notifier = $("#module-count-" + wn.modules[module]._link);
if(notifier.length) {
notifier.toggle(sum ? true : false);
notifier.find(".circle-text").html(sum || "");
}
}
});
}