diff --git a/accounts/page/accounts_browser/accounts_browser.js b/accounts/page/accounts_browser/accounts_browser.js
index 78776ce4a60..6a6d97e3a8a 100644
--- a/accounts/page/accounts_browser/accounts_browser.js
+++ b/accounts/page/accounts_browser/accounts_browser.js
@@ -22,7 +22,8 @@
pscript['onload_Accounts Browser'] = function(wrapper){
wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
- wrapper.appframe.add_module_tab("Accounts");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Accounts")
if (wn.boot.profile.can_create.indexOf("Company") !== -1) {
wrapper.appframe.add_button('New Company', function() { newdoc('Company'); },
diff --git a/accounts/page/financial_analytics/financial_analytics.js b/accounts/page/financial_analytics/financial_analytics.js
index cf962580448..f0bafdb07bd 100644
--- a/accounts/page/financial_analytics/financial_analytics.js
+++ b/accounts/page/financial_analytics/financial_analytics.js
@@ -24,7 +24,9 @@ wn.pages['financial-analytics'].onload = function(wrapper) {
});
erpnext.trial_balance = new erpnext.FinancialAnalytics(wrapper, 'Financial Analytics');
- wrapper.appframe.add_module_tab("Accounts");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Accounts")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({
diff --git a/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js
index d1630218627..cee749f1cb4 100644
--- a/accounts/page/general_ledger/general_ledger.js
+++ b/accounts/page/general_ledger/general_ledger.js
@@ -23,7 +23,9 @@ wn.pages['general-ledger'].onload = function(wrapper) {
erpnext.general_ledger = new erpnext.GeneralLedger(wrapper);
- wrapper.appframe.add_module_tab("Accounts");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Accounts")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
diff --git a/accounts/page/trial_balance/trial_balance.js b/accounts/page/trial_balance/trial_balance.js
index 3d05d49a899..9ea76666178 100644
--- a/accounts/page/trial_balance/trial_balance.js
+++ b/accounts/page/trial_balance/trial_balance.js
@@ -56,5 +56,7 @@ wn.pages['trial-balance'].onload = function(wrapper) {
})
erpnext.trial_balance = new TrialBalance(wrapper, 'Trial Balance');
- wrapper.appframe.add_module_tab("Accounts");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Accounts")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
\ No newline at end of file
diff --git a/buying/page/purchase_analytics/purchase_analytics.js b/buying/page/purchase_analytics/purchase_analytics.js
index d1af656db26..6919ad3a877 100644
--- a/buying/page/purchase_analytics/purchase_analytics.js
+++ b/buying/page/purchase_analytics/purchase_analytics.js
@@ -23,7 +23,9 @@ wn.pages['purchase-analytics'].onload = function(wrapper) {
new erpnext.PurchaseAnalytics(wrapper);
- wrapper.appframe.add_module_tab("Buying");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Buying")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
erpnext.PurchaseAnalytics = wn.views.TreeGridReport.extend({
diff --git a/home/page/attributions/attributions.css b/home/page/attributions/attributions.css
index e69de29bb2d..68ec5160eed 100644
--- a/home/page/attributions/attributions.css
+++ b/home/page/attributions/attributions.css
@@ -0,0 +1,6 @@
+.layout-attributions table {
+ width: 70%;
+}
+.layout-attributions td:first-child {
+ width: 30%;
+}
\ No newline at end of file
diff --git a/home/page/attributions/attributions.html b/home/page/attributions/attributions.html
index ab879b7d48b..37ee25bae61 100644
--- a/home/page/attributions/attributions.html
+++ b/home/page/attributions/attributions.html
@@ -1,83 +1,99 @@
-
-
×
-
Attributions
+
+
+
+
ERPNext is made using these Awesome Open Source Projects
-
Source Code:
- https://github.com/webnotes/erpnext
-
Website:
- https://erpnext.com
+
+
+
+ | wnframework |
+ The full stack Python + Javascript web application framework on which ERPNext is built. |
+
+
+ | ERPNext |
+ Web based, Open Source ERP. |
+
+
+ | Linux Operating System |
+ The operating system that brought a revolution in Open Source software. |
+
+
+ | MySQL Database |
+ The world's most popular Open Source Database. |
+
+
+ | Apache HTTPD web server |
+ The Number One HTTP Server On The Internet. |
+
+
+ | Python Programming Language |
+ The "batteries included" language that lets you write elegant code, quickly.
Python Libraries:
+
+ - MySQLdb
+
- pytz
+
- jinja2
+
- markdown2
+
- dateutil
+
- termcolor
+
- python-memcached
+
+ |
+
+
+ | Git - Source Code Management |
+ Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
+ Kindly hosted on the web by GitHub: The service that makes it easier for individuals and teams to write better code, faster. |
+
+
+ | JQuery Javascript Libary |
+ The write less, do more Javascript Library. |
+
+
+ | JQuery UI - User Interface Library |
+ A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. |
+
+
+ | Bootstrap CSS Framework |
+ Sleek, intuitive, and powerful front-end framework for faster and easier web development. |
+
+
+ | Font Awesome - Icons |
+ The iconic font designed for use with Twitter Bootstrap. |
+
+
+ | TinyMCE Rich Text Editor |
+ TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB. |
+
+
+ | SlickGrid |
+ A lightning fast JavaScript grid/spreadsheet. |
+
+
+ | Flot Charting Library |
+ Attractive JavaScript plotting for jQuery. |
+
+
+ | Ace Code Editor |
+ High Performance Code Editor for the web. |
+
+
+ | JQuery.Gantt - Gantt Charts |
+ Draw Gantt charts with the famous jQuery ease of development. |
+
+
+ | JSColor - Color Picker |
+ HTML/Javascript Color Picker. |
+
+
+ | Downloadify - Flash Download Widget |
+ A tiny javascript + Flash library that enables the creation and download of text files without server interaction. |
+
+
+
+
-
ERPNext is an Open Source project and is possible because of the work of
- thousands of software developers, companies and designers who have contributed their
- work to the community. We have tried to list as many projects as possible that are
- used by ERPNext, but this list may not be exhaustive.
-
-
-
Server
-
- - Linux (GNU)
- - Apache HTTPD server (web server)
- - MySQL (database, Percona build)
- - Git (source code control via Github)
-
-
-
Programming Languages & Libraries
-
- - Python
-
- - Python-MySQL
- - pytz (timezones)
- - jinja2 (templating)
- - markdown2 (markdown parser)
- - jsmin (javascript minifier)
-
- - Javascript
-
- - JQuery
- - JQuery UI (datepicker, sortable)
- - TinyMCE - text editor
- - Twitter Bootstrap
- - Ace - code editor
- - Slick Grid - report grid
- - jQPlot - graphs
- -
- JQuery.Gantt - Gantt Chart
- - JSON2 - JSON builder, parser
- - JSColor - color picker
- -
- Downloadify - Export CSV files from the browser
- -
- Chosen - a searchable select dropdown
-
-
-
-
CSS Frameworks
-
-
-
Icons
-
- - The Noun Project
- - Font Awesome: http://fortawesome.github.com/Font-Awesome
-
-
-
Web Frameworks
-
-
-
Web Browsers
-
- - Mozilla Firefox
-
- - Apple Safari
- - Google Chorme
-
-
-
ERPNext License
+
ERPNext License: GNU/General Public License
+
ERPNext - Open Source, web based ERP
Copyright © 2008 onwards, Web Notes Technologies Pvt Ltd, India
@@ -92,6 +108,9 @@
GNU General Public License for more details.
For complete license see http://www.gnu.org/licenses/
+
+
Note: A link to this page must be easily accessible and all other ERPNext branding must remain as it is.
For more information please write to us at support@erpnext.com
+
\ No newline at end of file
diff --git a/home/page/attributions/attributions.js b/home/page/attributions/attributions.js
index fc567844311..29eb72f1719 100644
--- a/home/page/attributions/attributions.js
+++ b/home/page/attributions/attributions.js
@@ -1 +1,4 @@
-wn.pages['attributions'].onload = function(wrapper) { }
\ No newline at end of file
+wn.pages['attributions'].onload = function(wrapper) {
+ wrapper.appframe = new wn.ui.AppFrame($(wrapper).find(".layout-appframe"),
+ "Attributions");
+}
\ No newline at end of file
diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js
index e154b3a206c..fc5f22bede8 100644
--- a/home/page/desktop/desktop.js
+++ b/home/page/desktop/desktop.js
@@ -32,7 +32,7 @@ erpnext.desktop.render = function() {
}
// modules
- var modules_list = wn.user.get_default("_desktop_items") || wn.boot.modules_list;
+ var modules_list = wn.user.get_desktop_items();
$.each(modules_list, function(i, m) {
if(!in_list(['Setup', 'Core'], m) && wn.boot.profile.allow_modules.indexOf(m)!=-1)
add_icon(m);
@@ -75,11 +75,11 @@ erpnext.desktop.show_pending_notifications = function() {
}
add_circle('module-icon-messages', 'unread_messages', 'Unread Messages');
- add_circle('module-icon-support', 'open_support_tickets', 'Open Support Tickets');
+ add_circle('module-icon-support-home', 'open_support_tickets', 'Open Support Tickets');
add_circle('module-icon-todo', 'things_todo', 'Things To Do');
add_circle('module-icon-calendar', 'todays_events', 'Todays Events');
- add_circle('module-icon-project', 'open_tasks', 'Open Tasks');
- add_circle('module-icon-kb', 'unanswered_questions', 'Unanswered Questions');
+ add_circle('module-icon-projects-home', 'open_tasks', 'Open Tasks');
+ add_circle('module-icon-questions', 'unanswered_questions', 'Unanswered Questions');
erpnext.update_messages();
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 47d08c7c854..539d64d83e1 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,7 +1,7 @@
erpnext.updates = [
["21st December 2012", [
"Manufacturing: For Material Transfer against Production Order, \
- fetch quantity pending to be transferred for each item."
+ fetch quantity pending to be transferred for each item.",
"Desktop: New Icons and now sortable by dragging."
]],
["20th December 2012", [
diff --git a/hr/doctype/attendance/attendance.txt b/hr/doctype/attendance/attendance.txt
index 2ef65aced63..bd8b2a35188 100644
--- a/hr/doctype/attendance/attendance.txt
+++ b/hr/doctype/attendance/attendance.txt
@@ -2,9 +2,9 @@
{
"owner": "ashwini@webnotestech.com",
"docstatus": 0,
- "creation": "2012-07-03 13:30:41",
+ "creation": "2012-12-14 14:27:05",
"modified_by": "Administrator",
- "modified": "2012-12-13 14:23:24"
+ "modified": "2012-12-23 09:42:45"
},
{
"is_submittable": 1,
@@ -134,7 +134,7 @@
"doctype": "DocField",
"label": "Fiscal Year",
"oldfieldname": "fiscal_year",
- "options": "\n2012\n2013",
+ "options": "link:Fiscal Year",
"fieldname": "fiscal_year",
"fieldtype": "Select",
"reqd": 1,
@@ -146,7 +146,7 @@
"doctype": "DocField",
"label": "Company",
"oldfieldname": "company",
- "options": "\nAlpha\nBeta\nDemo Company",
+ "options": "link:Company",
"fieldname": "company",
"fieldtype": "Select",
"reqd": 1,
@@ -174,6 +174,10 @@
"fieldtype": "Link",
"permlevel": 1
},
+ {
+ "role": "System Manager",
+ "doctype": "DocPerm"
+ },
{
"role": "HR User",
"doctype": "DocPerm"
@@ -181,9 +185,5 @@
{
"role": "HR Manager",
"doctype": "DocPerm"
- },
- {
- "role": "System Manager",
- "doctype": "DocPerm"
}
]
\ No newline at end of file
diff --git a/projects/doctype/task/task.py b/projects/doctype/task/task.py
index c390806f5a8..83f899586a3 100644
--- a/projects/doctype/task/task.py
+++ b/projects/doctype/task/task.py
@@ -24,8 +24,6 @@ from webnotes import msgprint
sql = webnotes.conn.sql
-
-
class DocType:
def __init__(self,doc,doclist=[]):
self.doc = doc
@@ -37,7 +35,6 @@ class DocType:
ret = {'customer': cust and cust[0][0] or '', 'customer_name': cust and cust[0][1] or ''}
return ret
- # TODO: Remove these? as the field customer doesn't exists
def get_customer_details(self):
cust = sql("select customer_name from `tabCustomer` where name=%s", self.doc.customer)
if cust:
diff --git a/projects/doctype/task/task.txt b/projects/doctype/task/task.txt
index a7ada4b3d73..f47d2eb9d56 100644
--- a/projects/doctype/task/task.txt
+++ b/projects/doctype/task/task.txt
@@ -2,27 +2,18 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-09-18 11:05:48",
+ "creation": "2012-10-29 14:30:00",
"modified_by": "Administrator",
- "modified": "2012-10-29 14:24:55"
+ "modified": "2012-12-24 10:46:06"
},
{
- "section_style": "Tray",
- "allow_attach": 1,
- "tag_fields": "status",
- "module": "Projects",
- "server_code_error": " ",
- "allow_trash": 1,
- "doctype": "DocType",
- "document_type": "Master",
- "subject": "%(subject)s",
"autoname": "TASK.#####",
- "name": "__common__",
- "colour": "White:FFF",
- "_last_update": "1324880734",
- "show_in_menu": 0,
+ "allow_attach": 1,
+ "doctype": "DocType",
+ "module": "Projects",
"max_attachments": 5,
- "version": 1
+ "document_type": "Master",
+ "name": "__common__"
},
{
"name": "__common__",
@@ -74,13 +65,13 @@
"reqd": 0
},
{
- "search_index": 1,
+ "oldfieldtype": "Date",
"doctype": "DocField",
"label": "Expected End Date",
"oldfieldname": "exp_end_date",
"fieldname": "exp_end_date",
"fieldtype": "Date",
- "oldfieldtype": "Date",
+ "search_index": 1,
"reqd": 0,
"in_filter": 1
},
@@ -93,11 +84,9 @@
},
{
"oldfieldtype": "Link",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Project",
"oldfieldname": "project",
- "trigger": "Client",
"fieldname": "project",
"fieldtype": "Link",
"options": "Project"
@@ -105,23 +94,21 @@
{
"no_copy": 1,
"oldfieldtype": "Select",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Status",
"oldfieldname": "status",
- "trigger": "Client",
"fieldname": "status",
"fieldtype": "Select",
"options": "Open\nWorking\nPending Review\nClosed\nCancelled"
},
{
- "search_index": 1,
+ "oldfieldtype": "Select",
"doctype": "DocField",
"label": "Priority",
"oldfieldname": "priority",
"fieldname": "priority",
"fieldtype": "Select",
- "oldfieldtype": "Select",
+ "search_index": 1,
"reqd": 0,
"options": "Low\nMedium\nHigh\nUrgent",
"in_filter": 1
@@ -217,13 +204,12 @@
},
{
"doctype": "DocField",
+ "label": "More Details",
"fieldname": "more_details",
- "fieldtype": "Section Break",
- "label": "More Details"
+ "fieldtype": "Section Break"
},
{
"oldfieldtype": "Date",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Review Date",
"oldfieldname": "review_date",
@@ -234,7 +220,6 @@
},
{
"oldfieldtype": "Date",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Closing Date",
"oldfieldname": "closing_date",
@@ -260,7 +245,7 @@
"permlevel": 0
},
{
- "permlevel": 1,
- "doctype": "DocPerm"
+ "doctype": "DocPerm",
+ "permlevel": 1
}
]
\ No newline at end of file
diff --git a/public/js/toolbar.js b/public/js/toolbar.js
index 7ade8f89a38..f1eddb0df6f 100644
--- a/public/js/toolbar.js
+++ b/public/js/toolbar.js
@@ -54,16 +54,11 @@ erpnext.toolbar.add_modules = function() {
\
').prependTo('.navbar .nav:first');
- // if no modules list then show all
- if(wn.boot.modules_list && typeof(wn.boot.modules_list) == 'string') {
- wn.boot.modules_list = JSON.parse(wn.boot.modules_list);
- }
- else
- wn.boot.modules_list = keys(wn.modules).sort();
+ var modules_list = wn.user.get_desktop_items();
// add to dropdown
- for(var i in wn.boot.modules_list) {
- var m = wn.boot.modules_list[i]
+ for(var i in modules_list) {
+ var m = modules_list[i]
if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1 && wn.modules[m]) {
args = {
diff --git a/selling/page/sales_analytics/sales_analytics.js b/selling/page/sales_analytics/sales_analytics.js
index 6c4713304d2..3d54203c542 100644
--- a/selling/page/sales_analytics/sales_analytics.js
+++ b/selling/page/sales_analytics/sales_analytics.js
@@ -22,7 +22,9 @@ wn.pages['sales-analytics'].onload = function(wrapper) {
});
new erpnext.SalesAnalytics(wrapper);
- wrapper.appframe.add_module_tab("Selling");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Selling")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
erpnext.SalesAnalytics = wn.views.TreeGridReport.extend({
diff --git a/selling/page/sales_browser/sales_browser.js b/selling/page/sales_browser/sales_browser.js
index 8b570d1ffab..4622f24a43a 100644
--- a/selling/page/sales_browser/sales_browser.js
+++ b/selling/page/sales_browser/sales_browser.js
@@ -16,7 +16,8 @@
pscript['onload_Sales Browser'] = function(wrapper){
wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'));
- wrapper.appframe.add_module_tab("Selling");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Selling")
wrapper.appframe.add_button('Refresh', function() {
wrapper.make_tree();
diff --git a/stock/page/stock_ageing/stock_ageing.js b/stock/page/stock_ageing/stock_ageing.js
index 82ab0bc0244..c20fa929fdb 100644
--- a/stock/page/stock_ageing/stock_ageing.js
+++ b/stock/page/stock_ageing/stock_ageing.js
@@ -24,7 +24,9 @@ wn.pages['stock-ageing'].onload = function(wrapper) {
new erpnext.StockAgeing(wrapper);
- wrapper.appframe.add_module_tab("Stock");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Stock")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
wn.require("app/js/stock_grid_report.js");
diff --git a/stock/page/stock_analytics/stock_analytics.js b/stock/page/stock_analytics/stock_analytics.js
index 8e98de8bec5..3448035947d 100644
--- a/stock/page/stock_analytics/stock_analytics.js
+++ b/stock/page/stock_analytics/stock_analytics.js
@@ -23,7 +23,9 @@ wn.pages['stock-analytics'].onload = function(wrapper) {
new erpnext.StockAnalytics(wrapper);
- wrapper.appframe.add_module_tab("Stock");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Stock")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
wn.require("app/js/stock_grid_report.js");
diff --git a/stock/page/stock_ledger/stock_ledger.js b/stock/page/stock_ledger/stock_ledger.js
index f7427ab2f2a..3287bb07cac 100644
--- a/stock/page/stock_ledger/stock_ledger.js
+++ b/stock/page/stock_ledger/stock_ledger.js
@@ -23,7 +23,9 @@ wn.pages['stock-ledger'].onload = function(wrapper) {
new erpnext.StockLedger(wrapper);
- wrapper.appframe.add_module_tab("Stock");
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Stock")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
}
wn.require("app/js/stock_grid_report.js");
diff --git a/website/css/website.css b/website/css/website.css
index 86f0414bbf1..112d29c4567 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -6,7 +6,9 @@ div#body_div {
padding: 0px;
min-height: 400px;
margin: 40px auto;
- box-shadow: 1px 1px 3px 3px #ccc;
+ box-shadow: 1px 1px 3px 3px #bbb;
+ border-radius: 5px;
+ overflow: hidden;
}
.navbar-inner {
@@ -23,6 +25,7 @@ p, li {
box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
+ border-radius: 0px 0px 5px 5px;
}
.layout-main {
diff --git a/website/templates/css/login.css b/website/templates/css/login.css
index 3d6400954d9..710f88944b1 100644
--- a/website/templates/css/login.css
+++ b/website/templates/css/login.css
@@ -10,6 +10,7 @@
box-shadow: 1px 1px 3px 3px #ccc;
font-size: 12px;
min-height: 100px;
+ border-radius: 5px;
}
#login_wrapper h3 {
diff --git a/website/utils.py b/website/utils.py
index 079ad21e028..bac87ffb9d6 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -210,7 +210,7 @@ def get_outer_env():
from `tabWebsite Product Category` t1, `tabItem Group` t2
where t1.item_group = t2.name
and ifnull(t2.show_in_website,0)=1 order by t1.idx""", as_dict=1)
- products_item = filter(lambda d: d.url.split(".")[0]=="products", top_items)[0]
+ products_item = filter(lambda d: d.url and d.url.split(".")[0]=="products", top_items)[0]
products_item.child_items = products
return {