@@ -1,5 +1,12 @@ | |||||
{ | { | ||||
"modules": { | "modules": { | ||||
"Finder": { | |||||
"type": "page", | |||||
"link": "finder", | |||||
"color": "#bdc3c7", | |||||
"label": "Finder", | |||||
"icon": "icon-folder-open" | |||||
}, | |||||
"To Do": { | "To Do": { | ||||
"type": "page", | "type": "page", | ||||
"link": "todo", | "link": "todo", | ||||
@@ -18,6 +18,8 @@ wn.core.pages.desktop.render = function() { | |||||
document.title = "Desktop"; | document.title = "Desktop"; | ||||
var add_icon = function(m) { | var add_icon = function(m) { | ||||
var module = wn.modules[m]; | var module = wn.modules[m]; | ||||
if(!module) | |||||
return; | |||||
if(!module.label) | if(!module.label) | ||||
module.label = m; | module.label = m; | ||||
module.name = m; | module.name = m; | ||||
@@ -0,0 +1,84 @@ | |||||
wn.pages['finder'].onload = function(wrapper) { | |||||
wn.ui.make_app_page({ | |||||
parent: wrapper, | |||||
title: 'Finder', | |||||
single_column: true | |||||
}); | |||||
var $body = $(wrapper).find(".layout-main").addClass("row"); | |||||
var start = 0; | |||||
var $modules = $('<div class="col-sm-3">\ | |||||
<div class="panel panel-info">\ | |||||
<div class="panel-heading">Modules</div>\ | |||||
<table class="table">\ | |||||
<tbody></tbody>\ | |||||
</table>\ | |||||
</div>\ | |||||
</div>').appendTo($body).find("tbody"); | |||||
var $doctypes = $('<div class="col-sm-3">\ | |||||
<div class="panel panel-info">\ | |||||
<div class="panel-heading">DocTypes</div>\ | |||||
<table class="table">\ | |||||
<tbody></tbody>\ | |||||
</table>\ | |||||
</div>\ | |||||
</div>').appendTo($body).find("tbody"); | |||||
var $list = $('<div class="col-sm-6">\ | |||||
<div class="panel panel-default">\ | |||||
<div class="panel-heading">Documents</div>\ | |||||
<table class="table">\ | |||||
<tbody></tbody>\ | |||||
</table>\ | |||||
</div>\ | |||||
</div>').appendTo($body).find("tbody"); | |||||
// modules | |||||
$.each(keys(wn.boot.notification_info.module_doctypes).sort(), function(i, module) { | |||||
$($r('<tr><td><a data-module="%(module)s" class="module-link">%(module)s</a></td></tr>', | |||||
{module: module})).appendTo($modules); | |||||
}); | |||||
$modules.on("click", ".module-link", function() { | |||||
// doctypes | |||||
var module = $(this).attr("data-module"); | |||||
$doctypes.empty(); | |||||
$.each(wn.boot.notification_info.module_doctypes[module].sort(), function(i, doctype) { | |||||
$($r('<tr><td><a data-doctype="%(doctype)s" class="doctype-link">%(doctype)s</a></td></tr>', | |||||
{doctype: doctype})).appendTo($doctypes) | |||||
}); | |||||
}); | |||||
$doctypes.on("click", ".doctype-link", function() { | |||||
$list.empty(); | |||||
var doctype = $(this).attr("data-doctype"); | |||||
wn.call({ | |||||
method: "webnotes.widgets.reportview.get", | |||||
args: { | |||||
doctype: doctype, | |||||
fields: ["name", "modified", "owner"], | |||||
limit_start: start || 0, | |||||
}, | |||||
callback: function(r) { | |||||
console.log(r); | |||||
if(r.message.values) { | |||||
$.each(r.message.values, function(i, v) { | |||||
$($r('<tr><td>\ | |||||
<a data-name="%(name)s" href="#Form/%(doctype)s/%(name)s">%(name)s</a>\ | |||||
<span class="text-muted text-small">%(owner)s</span>\ | |||||
<span class="text-muted pull-right">%(modified)s</span>\ | |||||
</td></tr>', { | |||||
doctype: doctype, | |||||
name: v[1], | |||||
owner: v[0], | |||||
modified: comment_when(v[2]) | |||||
})).appendTo($list) | |||||
}) | |||||
} | |||||
} | |||||
}) | |||||
}) | |||||
} |
@@ -0,0 +1,37 @@ | |||||
[ | |||||
{ | |||||
"creation": "2013-09-06 11:53:22", | |||||
"docstatus": 0, | |||||
"modified": "2013-09-06 11:53:23", | |||||
"modified_by": "Administrator", | |||||
"owner": "Administrator" | |||||
}, | |||||
{ | |||||
"doctype": "Page", | |||||
"icon": "icon-folder-open", | |||||
"module": "Core", | |||||
"name": "__common__", | |||||
"page_name": "Finder", | |||||
"standard": "Yes", | |||||
"title": "Finder" | |||||
}, | |||||
{ | |||||
"doctype": "Page Role", | |||||
"name": "__common__", | |||||
"parent": "finder", | |||||
"parentfield": "roles", | |||||
"parenttype": "Page" | |||||
}, | |||||
{ | |||||
"doctype": "Page", | |||||
"name": "finder" | |||||
}, | |||||
{ | |||||
"doctype": "Page Role", | |||||
"role": "System Manager" | |||||
}, | |||||
{ | |||||
"doctype": "Page Role", | |||||
"role": "Administrator" | |||||
} | |||||
] |
@@ -22,6 +22,10 @@ a { | |||||
padding-bottom: 10px; | padding-bottom: 10px; | ||||
} | } | ||||
.text-small { | |||||
font-size: 80%; | |||||
} | |||||
/* freeze */ | /* freeze */ | ||||
div#freeze { | div#freeze { | ||||
@@ -104,6 +104,8 @@ function repl(s, dict) { | |||||
return s; | return s; | ||||
} | } | ||||
var $r = repl; | |||||
function replace_all(s, t1, t2) { | function replace_all(s, t1, t2) { | ||||
return s.split(t1).join(t2); | return s.split(t1).join(t2); | ||||
} | } | ||||
@@ -34,7 +34,7 @@ wn.ui.toolbar.Toolbar = Class.extend({ | |||||
<span class="icon-bar"></span>\ | <span class="icon-bar"></span>\ | ||||
<span class="icon-bar"></span>\ | <span class="icon-bar"></span>\ | ||||
</button>\ | </button>\ | ||||
<a class="navbar-brand" href="#"></a>\ | |||||
<a class="navbar-brand" href="#"><i class="icon-home"></i></a>\ | |||||
</div>\ | </div>\ | ||||
<div class="collapse navbar-collapse navbar-responsive-collapse">\ | <div class="collapse navbar-collapse navbar-responsive-collapse">\ | ||||
<ul class="nav navbar-nav navbar-left">\ | <ul class="nav navbar-nav navbar-left">\ | ||||
@@ -14,7 +14,7 @@ | |||||
{% set title="Login" %} | {% set title="Login" %} | ||||
{% block body %} | {% block body %} | ||||
<div class="container"> | |||||
<div class="container" style="max-width: 750px;"> | |||||
<div class="row" style="margin-top: 100px;"> | <div class="row" style="margin-top: 100px;"> | ||||
<div class="col-sm-offset-3 col-sm-6"> | <div class="col-sm-offset-3 col-sm-6"> | ||||
<div class="panel panel-default"> | <div class="panel panel-default"> | ||||
@@ -35,21 +35,22 @@ def get(): | |||||
def get_notification_info_for_boot(): | def get_notification_info_for_boot(): | ||||
out = get() | out = get() | ||||
try: | |||||
from startup.open_count import for_doctype | |||||
except ImportError: | |||||
return out | |||||
can_read = webnotes.user.get_can_read() | can_read = webnotes.user.get_can_read() | ||||
conditions = {} | conditions = {} | ||||
module_doctypes = {} | module_doctypes = {} | ||||
doctype_info = dict(webnotes.conn.sql("""select name, module from tabDocType""")) | doctype_info = dict(webnotes.conn.sql("""select name, module from tabDocType""")) | ||||
try: | |||||
from startup.open_count import for_doctype | |||||
except ImportError: | |||||
for_doctype = {} | |||||
for d in for_doctype: | |||||
if d in can_read: | |||||
for d in can_read: | |||||
if d in for_doctype: | |||||
conditions[d] = for_doctype[d] | conditions[d] = for_doctype[d] | ||||
module_doctypes.setdefault(doctype_info[d], []).append(d) | |||||
module_doctypes.setdefault(doctype_info[d], []).append(d) | |||||
out.update({ | out.update({ | ||||
"conditions": conditions, | "conditions": conditions, | ||||
@@ -13,9 +13,8 @@ def get(name): | |||||
""" | """ | ||||
Return the :term:`doclist` of the `Page` specified by `name` | Return the :term:`doclist` of the `Page` specified by `name` | ||||
""" | """ | ||||
from webnotes.model.code import get_obj | |||||
page = get_obj('Page', name, with_children=1) | |||||
page.get_from_files() | |||||
page = webnotes.bean("Page", name) | |||||
page.run_method("get_from_files") | |||||
return page.doclist | return page.doclist | ||||
@webnotes.whitelist(allow_guest=True) | @webnotes.whitelist(allow_guest=True) | ||||