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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
wnframeworkThe full stack Python + Javascript web application framework on which ERPNext is built.
ERPNextWeb based, Open Source ERP.
Linux Operating SystemThe operating system that brought a revolution in Open Source software.
MySQL DatabaseThe world's most popular Open Source Database.
Apache HTTPD web serverThe Number One HTTP Server On The Internet.
Python Programming LanguageThe "batteries included" language that lets you write elegant code, quickly.

Python Libraries: +
    +
  • MySQLdb +
  • pytz +
  • jinja2 +
  • markdown2 +
  • dateutil +
  • termcolor +
  • python-memcached +
+
Git - Source Code ManagementGit 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 LibaryThe write less, do more Javascript Library.
JQuery UI - User Interface LibraryA curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.
Bootstrap CSS FrameworkSleek, intuitive, and powerful front-end framework for faster and easier web development.
Font Awesome - IconsThe iconic font designed for use with Twitter Bootstrap.
TinyMCE Rich Text EditorTinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB.
SlickGridA lightning fast JavaScript grid/spreadsheet.
Flot Charting LibraryAttractive JavaScript plotting for jQuery.
Ace Code EditorHigh Performance Code Editor for the web.
JQuery.Gantt - Gantt ChartsDraw Gantt charts with the famous jQuery ease of development.
JSColor - Color PickerHTML/Javascript Color Picker.
Downloadify - Flash Download WidgetA 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

-
    -
  • Twitter Bootstrap
  • -
- -

Icons

-
    -
  • The Noun Project
  • -
  • Font Awesome: http://fortawesome.github.com/Font-Awesome
  • -
- -

Web Frameworks

-
    -
  • wnframework
  • -
- -

Web Browsers

-
    -
  • Mozilla Firefox
  • -
      -
    • Firebug (debugger)
    • -
    -
  • 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 {