Merge branch 'master' of github.com:webnotes/erpnext

This commit is contained in:
Anand Doshi 2012-12-24 18:08:16 +05:30
commit a0713196d2
22 changed files with 172 additions and 145 deletions

View File

@ -22,7 +22,8 @@
pscript['onload_Accounts Browser'] = function(wrapper){ pscript['onload_Accounts Browser'] = function(wrapper){
wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area')); 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) { if (wn.boot.profile.can_create.indexOf("Company") !== -1) {
wrapper.appframe.add_button('New Company', function() { newdoc('Company'); }, wrapper.appframe.add_button('New Company', function() { newdoc('Company'); },

View File

@ -24,7 +24,9 @@ wn.pages['financial-analytics'].onload = function(wrapper) {
}); });
erpnext.trial_balance = new erpnext.FinancialAnalytics(wrapper, 'Financial Analytics'); 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({ erpnext.FinancialAnalytics = erpnext.AccountTreeGrid.extend({

View File

@ -23,7 +23,9 @@ wn.pages['general-ledger'].onload = function(wrapper) {
erpnext.general_ledger = new erpnext.GeneralLedger(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")
} }

View File

@ -56,5 +56,7 @@ wn.pages['trial-balance'].onload = function(wrapper) {
}) })
erpnext.trial_balance = new TrialBalance(wrapper, 'Trial Balance'); 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")
} }

View File

@ -23,7 +23,9 @@ wn.pages['purchase-analytics'].onload = function(wrapper) {
new erpnext.PurchaseAnalytics(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({ erpnext.PurchaseAnalytics = wn.views.TreeGridReport.extend({

View File

@ -0,0 +1,6 @@
.layout-attributions table {
width: 70%;
}
.layout-attributions td:first-child {
width: 30%;
}

View File

@ -1,83 +1,99 @@
<div class="layout-wrapper"> <div class="layout-wrapper layout-wrapper-appframe layout-attributions">
<a class="close" onclick="window.history.back();">&times;</a> <div class="layout-appframe"></div>
<h1>Attributions</h1> <div class="layout-main">
<h3>ERPNext is made using these Awesome Open Source Projects <i class="icon-heart" style="color: red"></i></h3>
<hr> <hr>
<p><b>Source Code:</b> <a href="https://github.com/webnotes/erpnext"> <table class="table table-bordered table-striped">
https://github.com/webnotes/erpnext</a></p> <tbody>
<p><b>Website:</b> <a href="https://erpnext.com"> <tr>
https://erpnext.com</a></p> <td><a href="https://github.com/webnotes/wnframework">wnframework</a></td>
<td>The full stack Python + Javascript web application framework on which ERPNext is built.</td>
</tr>
<tr>
<td><a href="https://github.com/webnotes/erpnext">ERPNext</a></td>
<td>Web based, Open Source ERP.</td>
</tr>
<tr>
<td><a href="http://en.wikipedia.org/wiki/Linux">Linux Operating System</a></td>
<td>The operating system that brought a revolution in Open Source software.</td>
</tr>
<tr>
<td><a href="http://www.mysql.com/">MySQL Database</a></td>
<td>The world's most popular Open Source Database.</td>
</tr>
<tr>
<td><a href="http://httpd.apache.org">Apache HTTPD web server</a></td>
<td>The Number One HTTP Server On The Internet.</td>
</tr>
<tr>
<td><a href="http://python.org/">Python Programming Language</a></td>
<td>The "batteries included" language that lets you write elegant code, quickly.<br><br>Python Libraries:
<ul>
<li>MySQLdb
<li>pytz
<li>jinja2
<li>markdown2
<li>dateutil
<li>termcolor
<li>python-memcached
</ul>
</td>
</tr>
<tr>
<td><a href="http://git-scm.com/">Git - Source Code Management</a></td>
<td>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.<br><br>
Kindly hosted on the web by <a href="https://github.com">GitHub</a>: The service that makes it easier for individuals and teams to write better code, faster. </td>
</tr>
<tr>
<td><a href="http://jquery.com/">JQuery Javascript Libary</a></td>
<td>The write less, do more Javascript Library.</td>
</tr>
<tr>
<td><a href="http://jqueryui.com/">JQuery UI - User Interface Library</a></td>
<td>A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.</td>
</tr>
<tr>
<td><a href="http://twitter.github.com/bootstrap/index.html">Bootstrap CSS Framework</a></td>
<td>Sleek, intuitive, and powerful front-end framework for faster and easier web development.</td>
</tr>
<tr>
<td><a href="http://fortawesome.github.com/Font-Awesome/">Font Awesome - Icons</a></td>
<td>The iconic font designed for use with Twitter Bootstrap.</td>
</tr>
<tr>
<td><a href="http://www.tinymce.com/">TinyMCE Rich Text Editor</a></td>
<td>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB.</td>
</tr>
<tr>
<td><a href="https://github.com/mleibman/SlickGrid">SlickGrid</a></td>
<td>A lightning fast JavaScript grid/spreadsheet.</td>
</tr>
<tr>
<td><a href="http://www.flotcharts.org/">Flot Charting Library</a></td>
<td>Attractive JavaScript plotting for jQuery.</td>
</tr>
<tr>
<td><a href="http://ace.ajax.org/">Ace Code Editor</a></td>
<td>High Performance Code Editor for the web.</td>
</tr>
<tr>
<td><a href="http://taitems.github.com/jQuery.Gantt/">JQuery.Gantt - Gantt Charts</a></td>
<td>Draw Gantt charts with the famous jQuery ease of development.</td>
</tr>
<tr>
<td><a href="http://jscolor.com/">JSColor - Color Picker</a></td>
<td>HTML/Javascript Color Picker.</td>
</tr>
<tr>
<td><a href="https://github.com/dcneiner/Downloadify">Downloadify - Flash Download Widget</a></td>
<td>A tiny javascript + Flash library that enables the creation and download of text files without server interaction.</td>
</tr>
</tbody>
</table>
<hr> <hr>
<p class="help">ERPNext is an Open Source project and is possible because of the work of <h3>ERPNext License: GNU/General Public License</h3>
thousands of software developers, companies and designers who have contributed their <div class="well">
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.</p>
<h4>Server</h4>
<ul>
<li>Linux (GNU)</li>
<li>Apache HTTPD server (web server)</li>
<li>MySQL (database, Percona build)</li>
<li>Git (source code control via Github)</li>
</ul>
<h4>Programming Languages & Libraries</h4>
<ul>
<li><a href="http://python.org">Python</a></li>
<ul>
<li>Python-MySQL</li>
<li>pytz (timezones)</li>
<li>jinja2 (templating)</li>
<li>markdown2 (markdown parser)</li>
<li>jsmin (javascript minifier)</li>
</ul>
<li>Javascript</li>
<ul>
<li>JQuery</li>
<li>JQuery UI (datepicker, sortable)</li>
<li>TinyMCE - text editor</li>
<li>Twitter Bootstrap</li>
<li>Ace - code editor</li>
<li>Slick Grid - report grid</li>
<li>jQPlot - graphs</li>
<li><a href="http://taitems.github.com/jQuery.Gantt/" target="_blank">
JQuery.Gantt</a> - Gantt Chart</li>
<li>JSON2 - JSON builder, parser</li>
<li>JSColor - color picker</li>
<li><a href="https://github.com/dcneiner/Downloadify" target="_blank">
Downloadify</a> - Export CSV files from the browser</li>
<li><a href="https://github.com/harvesthq/chosen" target="_blank">
Chosen</a> - a searchable select dropdown</li>
</ul>
</ul>
<h4>CSS Frameworks</h4>
<ul>
<li>Twitter Bootstrap</li>
</ul>
<h4>Icons</h4>
<ul>
<li>The Noun Project</li>
<li>Font Awesome: http://fortawesome.github.com/Font-Awesome</li>
</ul>
<h4>Web Frameworks</h4>
<ul>
<li>wnframework</li>
</ul>
<h4>Web Browsers</h4>
<ul>
<li>Mozilla Firefox</li>
<ul>
<li>Firebug (debugger)</li>
</ul>
<li>Apple Safari</li>
<li>Google Chorme</li>
</ul>
<hr>
<h2>ERPNext License</h2>
<p><b>ERPNext - Open Source, web based ERP</b></p> <p><b>ERPNext - Open Source, web based ERP</b></p>
<p>Copyright &copy; 2008 onwards, Web Notes Technologies Pvt Ltd, India</p> <p>Copyright &copy; 2008 onwards, Web Notes Technologies Pvt Ltd, India</p>
@ -92,6 +108,9 @@
GNU General Public License for more details.</p> GNU General Public License for more details.</p>
<p>For complete license see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a></p> <p>For complete license see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a></p>
</div>
<p class="alert">Note: A link to this page must be easily accessible and all other ERPNext branding must remain as it is.</p>
<hr> <hr>
<p>For more information please write to us at support@erpnext.com</p> <p>For more information please write to us at support@erpnext.com</p>
</div> </div>
</div>

View File

@ -1 +1,4 @@
wn.pages['attributions'].onload = function(wrapper) { } wn.pages['attributions'].onload = function(wrapper) {
wrapper.appframe = new wn.ui.AppFrame($(wrapper).find(".layout-appframe"),
"Attributions");
}

View File

@ -32,7 +32,7 @@ erpnext.desktop.render = function() {
} }
// modules // 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) { $.each(modules_list, function(i, m) {
if(!in_list(['Setup', 'Core'], m) && wn.boot.profile.allow_modules.indexOf(m)!=-1) if(!in_list(['Setup', 'Core'], m) && wn.boot.profile.allow_modules.indexOf(m)!=-1)
add_icon(m); 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-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-todo', 'things_todo', 'Things To Do');
add_circle('module-icon-calendar', 'todays_events', 'Todays Events'); add_circle('module-icon-calendar', 'todays_events', 'Todays Events');
add_circle('module-icon-project', 'open_tasks', 'Open Tasks'); add_circle('module-icon-projects-home', 'open_tasks', 'Open Tasks');
add_circle('module-icon-kb', 'unanswered_questions', 'Unanswered Questions'); add_circle('module-icon-questions', 'unanswered_questions', 'Unanswered Questions');
erpnext.update_messages(); erpnext.update_messages();

View File

@ -1,7 +1,7 @@
erpnext.updates = [ erpnext.updates = [
["21st December 2012", [ ["21st December 2012", [
"Manufacturing: For Material Transfer against Production Order, \ "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." "Desktop: New Icons and now sortable by dragging."
]], ]],
["20th December 2012", [ ["20th December 2012", [

View File

@ -2,9 +2,9 @@
{ {
"owner": "ashwini@webnotestech.com", "owner": "ashwini@webnotestech.com",
"docstatus": 0, "docstatus": 0,
"creation": "2012-07-03 13:30:41", "creation": "2012-12-14 14:27:05",
"modified_by": "Administrator", "modified_by": "Administrator",
"modified": "2012-12-13 14:23:24" "modified": "2012-12-23 09:42:45"
}, },
{ {
"is_submittable": 1, "is_submittable": 1,
@ -134,7 +134,7 @@
"doctype": "DocField", "doctype": "DocField",
"label": "Fiscal Year", "label": "Fiscal Year",
"oldfieldname": "fiscal_year", "oldfieldname": "fiscal_year",
"options": "\n2012\n2013", "options": "link:Fiscal Year",
"fieldname": "fiscal_year", "fieldname": "fiscal_year",
"fieldtype": "Select", "fieldtype": "Select",
"reqd": 1, "reqd": 1,
@ -146,7 +146,7 @@
"doctype": "DocField", "doctype": "DocField",
"label": "Company", "label": "Company",
"oldfieldname": "company", "oldfieldname": "company",
"options": "\nAlpha\nBeta\nDemo Company", "options": "link:Company",
"fieldname": "company", "fieldname": "company",
"fieldtype": "Select", "fieldtype": "Select",
"reqd": 1, "reqd": 1,
@ -174,6 +174,10 @@
"fieldtype": "Link", "fieldtype": "Link",
"permlevel": 1 "permlevel": 1
}, },
{
"role": "System Manager",
"doctype": "DocPerm"
},
{ {
"role": "HR User", "role": "HR User",
"doctype": "DocPerm" "doctype": "DocPerm"
@ -181,9 +185,5 @@
{ {
"role": "HR Manager", "role": "HR Manager",
"doctype": "DocPerm" "doctype": "DocPerm"
},
{
"role": "System Manager",
"doctype": "DocPerm"
} }
] ]

View File

@ -24,8 +24,6 @@ from webnotes import msgprint
sql = webnotes.conn.sql sql = webnotes.conn.sql
class DocType: class DocType:
def __init__(self,doc,doclist=[]): def __init__(self,doc,doclist=[]):
self.doc = doc 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 ''} ret = {'customer': cust and cust[0][0] or '', 'customer_name': cust and cust[0][1] or ''}
return ret return ret
# TODO: Remove these? as the field customer doesn't exists
def get_customer_details(self): def get_customer_details(self):
cust = sql("select customer_name from `tabCustomer` where name=%s", self.doc.customer) cust = sql("select customer_name from `tabCustomer` where name=%s", self.doc.customer)
if cust: if cust:

View File

@ -2,27 +2,18 @@
{ {
"owner": "Administrator", "owner": "Administrator",
"docstatus": 0, "docstatus": 0,
"creation": "2012-09-18 11:05:48", "creation": "2012-10-29 14:30:00",
"modified_by": "Administrator", "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.#####", "autoname": "TASK.#####",
"name": "__common__", "allow_attach": 1,
"colour": "White:FFF", "doctype": "DocType",
"_last_update": "1324880734", "module": "Projects",
"show_in_menu": 0,
"max_attachments": 5, "max_attachments": 5,
"version": 1 "document_type": "Master",
"name": "__common__"
}, },
{ {
"name": "__common__", "name": "__common__",
@ -74,13 +65,13 @@
"reqd": 0 "reqd": 0
}, },
{ {
"search_index": 1, "oldfieldtype": "Date",
"doctype": "DocField", "doctype": "DocField",
"label": "Expected End Date", "label": "Expected End Date",
"oldfieldname": "exp_end_date", "oldfieldname": "exp_end_date",
"fieldname": "exp_end_date", "fieldname": "exp_end_date",
"fieldtype": "Date", "fieldtype": "Date",
"oldfieldtype": "Date", "search_index": 1,
"reqd": 0, "reqd": 0,
"in_filter": 1 "in_filter": 1
}, },
@ -93,11 +84,9 @@
}, },
{ {
"oldfieldtype": "Link", "oldfieldtype": "Link",
"colour": "White:FFF",
"doctype": "DocField", "doctype": "DocField",
"label": "Project", "label": "Project",
"oldfieldname": "project", "oldfieldname": "project",
"trigger": "Client",
"fieldname": "project", "fieldname": "project",
"fieldtype": "Link", "fieldtype": "Link",
"options": "Project" "options": "Project"
@ -105,23 +94,21 @@
{ {
"no_copy": 1, "no_copy": 1,
"oldfieldtype": "Select", "oldfieldtype": "Select",
"colour": "White:FFF",
"doctype": "DocField", "doctype": "DocField",
"label": "Status", "label": "Status",
"oldfieldname": "status", "oldfieldname": "status",
"trigger": "Client",
"fieldname": "status", "fieldname": "status",
"fieldtype": "Select", "fieldtype": "Select",
"options": "Open\nWorking\nPending Review\nClosed\nCancelled" "options": "Open\nWorking\nPending Review\nClosed\nCancelled"
}, },
{ {
"search_index": 1, "oldfieldtype": "Select",
"doctype": "DocField", "doctype": "DocField",
"label": "Priority", "label": "Priority",
"oldfieldname": "priority", "oldfieldname": "priority",
"fieldname": "priority", "fieldname": "priority",
"fieldtype": "Select", "fieldtype": "Select",
"oldfieldtype": "Select", "search_index": 1,
"reqd": 0, "reqd": 0,
"options": "Low\nMedium\nHigh\nUrgent", "options": "Low\nMedium\nHigh\nUrgent",
"in_filter": 1 "in_filter": 1
@ -217,13 +204,12 @@
}, },
{ {
"doctype": "DocField", "doctype": "DocField",
"label": "More Details",
"fieldname": "more_details", "fieldname": "more_details",
"fieldtype": "Section Break", "fieldtype": "Section Break"
"label": "More Details"
}, },
{ {
"oldfieldtype": "Date", "oldfieldtype": "Date",
"colour": "White:FFF",
"doctype": "DocField", "doctype": "DocField",
"label": "Review Date", "label": "Review Date",
"oldfieldname": "review_date", "oldfieldname": "review_date",
@ -234,7 +220,6 @@
}, },
{ {
"oldfieldtype": "Date", "oldfieldtype": "Date",
"colour": "White:FFF",
"doctype": "DocField", "doctype": "DocField",
"label": "Closing Date", "label": "Closing Date",
"oldfieldname": "closing_date", "oldfieldname": "closing_date",
@ -260,7 +245,7 @@
"permlevel": 0 "permlevel": 0
}, },
{ {
"permlevel": 1, "doctype": "DocPerm",
"doctype": "DocPerm" "permlevel": 1
} }
] ]

View File

@ -54,16 +54,11 @@ erpnext.toolbar.add_modules = function() {
</ul>\ </ul>\
</li>').prependTo('.navbar .nav:first'); </li>').prependTo('.navbar .nav:first');
// if no modules list then show all var modules_list = wn.user.get_desktop_items();
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();
// add to dropdown // add to dropdown
for(var i in wn.boot.modules_list) { for(var i in modules_list) {
var m = wn.boot.modules_list[i] var m = modules_list[i]
if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1 && wn.modules[m]) { if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1 && wn.modules[m]) {
args = { args = {

View File

@ -22,7 +22,9 @@ wn.pages['sales-analytics'].onload = function(wrapper) {
}); });
new erpnext.SalesAnalytics(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({ erpnext.SalesAnalytics = wn.views.TreeGridReport.extend({

View File

@ -16,7 +16,8 @@
pscript['onload_Sales Browser'] = function(wrapper){ pscript['onload_Sales Browser'] = function(wrapper){
wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area')); 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.appframe.add_button('Refresh', function() {
wrapper.make_tree(); wrapper.make_tree();

View File

@ -24,7 +24,9 @@ wn.pages['stock-ageing'].onload = function(wrapper) {
new erpnext.StockAgeing(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"); wn.require("app/js/stock_grid_report.js");

View File

@ -23,7 +23,9 @@ wn.pages['stock-analytics'].onload = function(wrapper) {
new erpnext.StockAnalytics(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"); wn.require("app/js/stock_grid_report.js");

View File

@ -23,7 +23,9 @@ wn.pages['stock-ledger'].onload = function(wrapper) {
new erpnext.StockLedger(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"); wn.require("app/js/stock_grid_report.js");

View File

@ -6,7 +6,9 @@ div#body_div {
padding: 0px; padding: 0px;
min-height: 400px; min-height: 400px;
margin: 40px auto; margin: 40px auto;
box-shadow: 1px 1px 3px 3px #ccc; box-shadow: 1px 1px 3px 3px #bbb;
border-radius: 5px;
overflow: hidden;
} }
.navbar-inner { .navbar-inner {
@ -23,6 +25,7 @@ p, li {
box-shadow: none; box-shadow: none;
-webkit-box-shadow: none; -webkit-box-shadow: none;
-moz-box-shadow: none; -moz-box-shadow: none;
border-radius: 0px 0px 5px 5px;
} }
.layout-main { .layout-main {

View File

@ -10,6 +10,7 @@
box-shadow: 1px 1px 3px 3px #ccc; box-shadow: 1px 1px 3px 3px #ccc;
font-size: 12px; font-size: 12px;
min-height: 100px; min-height: 100px;
border-radius: 5px;
} }
#login_wrapper h3 { #login_wrapper h3 {

View File

@ -210,7 +210,7 @@ def get_outer_env():
from `tabWebsite Product Category` t1, `tabItem Group` t2 from `tabWebsite Product Category` t1, `tabItem Group` t2
where t1.item_group = t2.name where t1.item_group = t2.name
and ifnull(t2.show_in_website,0)=1 order by t1.idx""", as_dict=1) 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 products_item.child_items = products
return { return {