From 5ade7ca570eafa5bf185459412cf6aa80f6ab76a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Dec 2012 21:40:19 +0530 Subject: [PATCH 1/9] fixes to new desktop --- home/page/desktop/desktop.js | 6 +++--- public/js/toolbar.js | 11 +++-------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js index e154b3a206..46c592cf45 100644 --- a/home/page/desktop/desktop.js +++ b/home/page/desktop/desktop.js @@ -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-project-home', 'open_tasks', 'Open Tasks'); + add_circle('module-icon-questions', 'unanswered_questions', 'Unanswered Questions'); erpnext.update_messages(); diff --git a/public/js/toolbar.js b/public/js/toolbar.js index e228826370..b1ae46e1a6 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_default("_desktop_items") || wn.boot.modules_list; // 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) { args = { From 7ac16faf6bf30dc8d7820f1734af9874819beca6 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Dec 2012 22:49:10 +0530 Subject: [PATCH 2/9] fixes to new desktop --- home/page/desktop/desktop.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js index 46c592cf45..7f8236ae4b 100644 --- a/home/page/desktop/desktop.js +++ b/home/page/desktop/desktop.js @@ -78,7 +78,7 @@ erpnext.desktop.show_pending_notifications = function() { 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-home', 'open_tasks', 'Open Tasks'); + add_circle('module-icon-projects-home', 'open_tasks', 'Open Tasks'); add_circle('module-icon-questions', 'unanswered_questions', 'Unanswered Questions'); erpnext.update_messages(); From ff153490fedef9ccf7f3d21db84155c85563fd74 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sat, 22 Dec 2012 07:42:04 +0530 Subject: [PATCH 3/9] desktop items fix --- home/page/desktop/desktop.js | 2 +- public/js/toolbar.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js index 7f8236ae4b..fc5f22bede 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); diff --git a/public/js/toolbar.js b/public/js/toolbar.js index b1ae46e1a6..71fb082c6d 100644 --- a/public/js/toolbar.js +++ b/public/js/toolbar.js @@ -54,7 +54,7 @@ erpnext.toolbar.add_modules = function() { \ ').prependTo('.navbar .nav:first'); - var modules_list = wn.user.get_default("_desktop_items") || wn.boot.modules_list; + var modules_list = wn.user.get_desktop_items(); // add to dropdown for(var i in modules_list) { From 6f65de15aef4355e819f78780e3758b80fb1c9e8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sat, 22 Dec 2012 13:50:35 +0530 Subject: [PATCH 4/9] appframe fixes --- accounts/page/accounts_browser/accounts_browser.js | 3 ++- accounts/page/financial_analytics/financial_analytics.js | 4 +++- accounts/page/general_ledger/general_ledger.js | 4 +++- accounts/page/trial_balance/trial_balance.js | 4 +++- buying/page/purchase_analytics/purchase_analytics.js | 4 +++- selling/page/sales_analytics/sales_analytics.js | 4 +++- selling/page/sales_browser/sales_browser.js | 3 ++- stock/page/stock_ageing/stock_ageing.js | 4 +++- stock/page/stock_analytics/stock_analytics.js | 4 +++- stock/page/stock_ledger/stock_ledger.js | 4 +++- 10 files changed, 28 insertions(+), 10 deletions(-) diff --git a/accounts/page/accounts_browser/accounts_browser.js b/accounts/page/accounts_browser/accounts_browser.js index 78776ce4a6..6a6d97e3a8 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 cf96258044..f0bafdb07b 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 d163021862..cee749f1cb 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 3d05d49a89..9ea7666617 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 d1af656db2..6919ad3a87 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/selling/page/sales_analytics/sales_analytics.js b/selling/page/sales_analytics/sales_analytics.js index 6c4713304d..3d54203c54 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 8b570d1ffa..4622f24a43 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 82ab0bc024..c20fa929fd 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 8e98de8bec..3448035947 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 f7427ab2f2..3287bb07ca 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"); From 2848bea64e9f65dce220a93d083a857e8e2c8af5 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 23 Dec 2012 09:45:02 +0530 Subject: [PATCH 5/9] fixed company and fiscal year options in attendance doctype --- hr/doctype/attendance/attendance.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hr/doctype/attendance/attendance.txt b/hr/doctype/attendance/attendance.txt index 2ef65aced6..bd8b2a3518 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 From 0cc0c98a149fc8e9abe28ed7bb179bc1d8c2d5e3 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 24 Dec 2012 10:35:39 +0530 Subject: [PATCH 6/9] fix to desktop --- home/page/latest_updates/latest_updates.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js index 47d08c7c85..539d64d83e 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", [ From c0bf435d2cab9e319267dfec516596e21b36215f Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 24 Dec 2012 11:25:11 +0530 Subject: [PATCH 7/9] validate permissions before delete --- projects/doctype/task/task.py | 3 --- projects/doctype/task/task.txt | 45 ++++++++++++---------------------- 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/projects/doctype/task/task.py b/projects/doctype/task/task.py index c390806f5a..83f899586a 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 a7ada4b3d7..f47d2eb9d5 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 From 5b3d83fdf32cbf23ba23ab0bd2200eb8e33be28c Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 24 Dec 2012 11:47:24 +0530 Subject: [PATCH 8/9] updates to website css & better help for doctype --- website/css/website.css | 5 ++++- website/templates/css/login.css | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/website/css/website.css b/website/css/website.css index 86f0414bbf..112d29c456 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 3d6400954d..710f88944b 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 { From bda54e58bf1cf6f2144c0004124d0fba498960e8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 24 Dec 2012 12:52:15 +0530 Subject: [PATCH 9/9] removed jqplot and updated attributions page --- home/page/attributions/attributions.css | 6 + home/page/attributions/attributions.html | 175 +++++++++++++---------- home/page/attributions/attributions.js | 5 +- website/utils.py | 2 +- 4 files changed, 108 insertions(+), 80 deletions(-) diff --git a/home/page/attributions/attributions.css b/home/page/attributions/attributions.css index e69de29bb2..68ec5160ee 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 ab879b7d48..37ee25bae6 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 fc56784431..29eb72f171 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/website/utils.py b/website/utils.py index 079ad21e02..bac87ffb9d 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 {