added setup and removed multi-col layout in body
diff --git a/css/all-app.css b/css/all-app.css
index a6dcdb7..53b33d2 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -103,8 +103,19 @@
div#body_div {
position: relative;
display: none;
- margin-top: 56px;
padding-right: 7px;
+ width: 900px;
+ margin: auto;
+ margin-top: 56px;
+}
+
+footer {
+ width: 900px;
+ margin: auto;
+}
+header .container {
+ width: 900px;
+ margin: auto;
}
div.no_script {
@@ -124,11 +135,6 @@
border: 1px solid #FF4;
}
-
-div#head_div { background-color: #FFF; }
-
-#head_banner { background-color: #FFF; }
-
div.std-footer {
margin: 13px 0px;
border-top: 1px solid #AAA;
@@ -161,18 +167,6 @@
background: linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* W3C */
}
-.header-gradient {
- background: #84827c; /* Old browsers */
- background: -moz-linear-gradient(top, #84827c 0%, #27211c 100%); /* FF3.6+ */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#84827c), color-stop(100%,#27211c)); /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #84827c 0%,#27211c 100%); /* Chrome10+,Safari5.1+ */
- background: -o-linear-gradient(top, #84827c 0%,#27211c 100%); /* Opera11.10+ */
- background: -ms-linear-gradient(top, #84827c 0%,#27211c 100%); /* IE10+ */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#84827c', endColorstr='#27211c',GradientType=0 ); /* IE6-9 */
- background: linear-gradient(top, #84827c 0%,#27211c 100%); /* W3C */
- color: #FFF;
-}
-
.layout_wrapper, .layout-wrapper {
-moz-box-shadow: 1px 1px 6px #AAA;
-webkit-box-shadow: 1px 1px 6px #AAA;
@@ -187,7 +181,7 @@
}
.layout-main-section {
- width: 68%;
+ width: 70%;
float: left;
padding: 15px;
background-color: #FFF;
@@ -195,7 +189,7 @@
}
.layout-side-section {
- width: 24%;
+ width: 22%;
float: right;
color: #606060;
overflow-x: hidden;
@@ -1290,17 +1284,16 @@
cursor: pointer;
}
-ul.box_tabs a {
+ul.box_tabs li a {
display:block;
padding:3px 15px 3px 6px;
- text-decoration:none;
+ text-decoration: none;
}
ul.box_tabs li.box_tab_mouseover {
background-color: #BBB;
}
-
ul.box_tabs li.box_tab_selected {
background-color: #777;
@@ -1312,9 +1305,8 @@
}
ul.box_tabs li.box_tab_selected a {
-
+ color: #fff;
}
-
/*
* lib/css/legacy/bw-icons.css
*/
diff --git a/css/all-web.css b/css/all-web.css
index 1e15489..d7cb10c 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -103,8 +103,19 @@
div#body_div {
position: relative;
display: none;
- margin-top: 56px;
padding-right: 7px;
+ width: 900px;
+ margin: auto;
+ margin-top: 56px;
+}
+
+footer {
+ width: 900px;
+ margin: auto;
+}
+header .container {
+ width: 900px;
+ margin: auto;
}
div.no_script {
@@ -124,11 +135,6 @@
border: 1px solid #FF4;
}
-
-div#head_div { background-color: #FFF; }
-
-#head_banner { background-color: #FFF; }
-
div.std-footer {
margin: 13px 0px;
border-top: 1px solid #AAA;
@@ -161,18 +167,6 @@
background: linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* W3C */
}
-.header-gradient {
- background: #84827c; /* Old browsers */
- background: -moz-linear-gradient(top, #84827c 0%, #27211c 100%); /* FF3.6+ */
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#84827c), color-stop(100%,#27211c)); /* Chrome,Safari4+ */
- background: -webkit-linear-gradient(top, #84827c 0%,#27211c 100%); /* Chrome10+,Safari5.1+ */
- background: -o-linear-gradient(top, #84827c 0%,#27211c 100%); /* Opera11.10+ */
- background: -ms-linear-gradient(top, #84827c 0%,#27211c 100%); /* IE10+ */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#84827c', endColorstr='#27211c',GradientType=0 ); /* IE6-9 */
- background: linear-gradient(top, #84827c 0%,#27211c 100%); /* W3C */
- color: #FFF;
-}
-
.layout_wrapper, .layout-wrapper {
-moz-box-shadow: 1px 1px 6px #AAA;
-webkit-box-shadow: 1px 1px 6px #AAA;
@@ -187,7 +181,7 @@
}
.layout-main-section {
- width: 68%;
+ width: 70%;
float: left;
padding: 15px;
background-color: #FFF;
@@ -195,7 +189,7 @@
}
.layout-side-section {
- width: 24%;
+ width: 22%;
float: right;
color: #606060;
overflow-x: hidden;
@@ -1655,12 +1649,7 @@
/*
* erpnext/website/css/website.css
- */#body_div {
- width: 900px;
- margin: auto;
-}
-
-.layout_wrapper {
+ */.layout_wrapper {
padding: 20px;
}
@@ -1687,15 +1676,6 @@
margin-bottom: 9px;
}
-footer {
- width: 900px;
- margin: auto;
-}
-header .topbar .container {
- width: 900px;
- margin: auto;
-}
-
.web-content input[type="text"], .web-content input[type="password"], .web-content select {
min-width: 180px;
}
diff --git a/erpnext/accounts/page/accounts_home/accounts_home.html b/erpnext/accounts/page/accounts_home/accounts_home.html
index 27868e9..12c80eb 100644
--- a/erpnext/accounts/page/accounts_home/accounts_home.html
+++ b/erpnext/accounts/page/accounts_home/accounts_home.html
@@ -57,6 +57,13 @@
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales or Purchase Returns</a>
</div>
+ <div class="section-item">
+ <a class="section-link"
+ title = "Analyze Sales and Purchase trends and slice them based on item, customer, groups etc"
+ href="#!Report/Profile/Trend Analyzer">Trend Analyzer</a>
+ </div>
+
+
</div>
</div>
@@ -85,6 +92,11 @@
</div>
<div class="section-item">
<a class="section-link"
+ title = "Terms of contract template"
+ href="#!List/Term">Order Terms Template</a>
+ </div>
+ <div class="section-item">
+ <a class="section-link"
title = "Mode of Payment master"
href="#!List/Mode of Payment">Mode of Payment</a>
</div>
diff --git a/erpnext/buying/page/buying_home/buying_home.html b/erpnext/buying/page/buying_home/buying_home.html
index 5207109..7f0e906 100644
--- a/erpnext/buying/page/buying_home/buying_home.html
+++ b/erpnext/buying/page/buying_home/buying_home.html
@@ -40,6 +40,21 @@
title = "Helper for managing return of goods (sales or purchase)"
href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Purchase Returns</a>
</div>
+ <div class="section-item">
+ <a class="section-link"
+ title = "Terms of contract template"
+ href="#!List/Term">Order Terms Template</a>
+ </div>
+ </div>
+ </div>
+ <div class="section">
+ <div class="section-head">Tools</div>
+ <div class="section-body">
+ <div class="section-item">
+ <a class="section-link"
+ title = "Analyze Sales and Purchase trends and slice them based on item, customer, groups etc"
+ href="#!Report/Profile/Trend Analyzer">Trend Analyzer</a>
+ </div>
</div>
</div>
diff --git a/erpnext/projects/page/projects_home/projects_home.html b/erpnext/projects/page/projects_home/projects_home.html
index 5b364b9..37da61f 100644
--- a/erpnext/projects/page/projects_home/projects_home.html
+++ b/erpnext/projects/page/projects_home/projects_home.html
@@ -22,13 +22,16 @@
</div>
<div class="layout-side-section">
<div class="psidebar">
- <!--<div class="section">
- <div class="section-head"></div>
+ <div class="section">
+ <div class="section-head">Setup</div>
<div class="section-body">
<div class="section-item">
+ <a class="section-link"
+ title = "Types of activities for Time Sheets"
+ href="#!List/Activity Type">Activity Type</a>
</div>
</div>
- </div>-->
+ </div>
</div>
</div>
<div style="clear: both;"></div>
diff --git a/erpnext/selling/page/selling_home/selling_home.html b/erpnext/selling/page/selling_home/selling_home.html
index adf4a2b..4216f43 100644
--- a/erpnext/selling/page/selling_home/selling_home.html
+++ b/erpnext/selling/page/selling_home/selling_home.html
@@ -46,6 +46,11 @@
</div>
<div class="section-item">
<a class="section-link"
+ title = "Terms of contract template"
+ href="#!List/Term">Order Terms Template</a>
+ </div>
+ <div class="section-item">
+ <a class="section-link"
title = "Tree of customer groups"
href="#!Sales Browser/Customer Group">Customer Group</a>
</div>
@@ -76,13 +81,18 @@
<div class="section-body">
<div class="section-item">
<a class="section-link"
- title = "sales trends"
- href="#!Sales Dashboard">Sales Dashboard</a>
+ title = "Helper for managing return of goods (sales or purchase)"
+ href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales Returns</a>
</div>
<div class="section-item">
<a class="section-link"
- title = "Helper for managing return of goods (sales or purchase)"
- href="#!Form/Sales and Purchase Return Wizard/Sales and Purchase Return Wizard">Sales Returns</a>
+ title = "Analyze Sales and Purchase trends and slice them based on item, customer, groups etc"
+ href="#!Report/Profile/Trend Analyzer">Trend Analyzer</a>
+ </div>
+ <div class="section-item">
+ <a class="section-link"
+ title = "sales trends"
+ href="#!Sales Dashboard">Sales Dashboard</a>
</div>
</div>
</div>
diff --git a/erpnext/setup/page/setup/setup.css b/erpnext/setup/page/setup/setup.css
new file mode 100644
index 0000000..bff44db
--- /dev/null
+++ b/erpnext/setup/page/setup/setup.css
@@ -0,0 +1,6 @@
+.setup-column {
+ float: left;
+ width: 45%;
+ margin-right: 5%;
+ margin-bottom: 15px;
+}
\ No newline at end of file
diff --git a/erpnext/setup/page/setup/setup.html b/erpnext/setup/page/setup/setup.html
index ec21ab7..7963cb9 100644
--- a/erpnext/setup/page/setup/setup.html
+++ b/erpnext/setup/page/setup/setup.html
@@ -1,3 +1,124 @@
-<div id="setup_div" class="layout_wrapper">
- <div style="margin: 200px auto; text-align: center; color: #888">Loading...</div>
+<div class="layout-wrapper">
+ <a class="close" onclick="window.history.back();">×</a>
+ <h1>Setup</h1>
+ <hr>
+ <div class="setup-column">
+ <h3>Company</h3>
+ <p>
+ <b><a href="#!List/Company">Companies</a></b><br>
+ <span class="help">List of companies (not customers / suppliers)</span>
+ </p>
+ <p>
+ <b><a href="#!List/Fiscal Year">Fiscal Years</a></b><br>
+ <span class="help">Financial Years for books of accounts</span>
+ </p>
+ <p>
+ <b><a href="#!List/Currency">Currencies</a></b><br>
+ <span class="help">Currency Master</span>
+ </p>
+ </div>
+ <div class="setup-column">
+ <h3>Users and Permissions</h3>
+ <p>
+ <b><a href="#!My Company">Users</a></b><br>
+ <span class="help">Add/remove users, set roles, passwords etc</span>
+ </p>
+ <p>
+ <b><a href="#!Permission Engine">Permission Manager</a></b><br>
+ <span class="help">Set permissions on transactions / masters</span>
+ </p>
+ <p>
+ <b><a href="#!List/Authorization Rule">Amount based Authorization Rules</a></b><br>
+ <span class="help">Restrict submission rights based on amount</span>
+ </p>
+ </div>
+ <div class="setup-column">
+ <h3>Data</h3>
+ <p>
+ <b><a href="#!Import Data">Import Data</a></b><br>
+ <span class="help">Import data from spreadsheet (csv) files</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Manage Account/Manage Account">Global Defaults</a></b><br>
+ <span class="help">Set default values for entry</span>
+ </p>
+ <p>
+ <b><a href="#!Trash">Recycle Bin</a></b><br>
+ <span class="help">Un-trash items</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Rename Tool/Rename Tool">Rename Master</a></b><br>
+ <span class="help">Rename a single master record</span>
+ </p>
+ <p>
+ <b><a href="#!List/Bulk Rename Tool">Rename Many</a></b><br>
+ <span class="help">Rename by uploading a csv file</span>
+ </p>
+ </div>
+ <div class="setup-column">
+ <h3>Email and Notifications</h3>
+ <p>
+ <b><a href="#!Form/Email Settings/Email Settings">Email Settings</a></b><br>
+ <span class="help">Out going mail server and support ticket mailbox</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Notification Control/Notification Control">Auto Notifications</a></b><br>
+ <span class="help">Automatic email sending to customers and suppliers</span>
+ </p>
+ <p>
+ <b><a href="#!List/Email Digest">Email Digests</a></b><br>
+ <span class="help">Daily, weekly, monthly email Digests</span>
+ </p>
+ <p>
+ <b><a href="#!Form/SMS Settings/SMS Settings">SMS Setup</a></b><br>
+ <span class="help">Setup outgoing SMS via your bulk SMS provider</span>
+ </p>
+ <p>
+ <b><a href="#!Form/SMS Center/SMS Center">Send Bulk SMS</a></b><br>
+ <span class="help">Send bulk SMS to leads, customers, contacts</span>
+ </p>
+ </div>
+ <div class="setup-column">
+ <h3>Customize ERPNext</h3>
+ <p>
+ <b><a href="#!List/Custom Field">Custom Fields</a></b><br>
+ <span class="help">Add fields to forms</span>
+ </p>
+ <p>
+ <b><a href="#!Form/DocLayer/DocLayer">Customize Forms</a></b><br>
+ <span class="help">Change entry properties (hide fields, make mandatory etc)</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Naming Series/Naming Series">Numbering Series</a></b><br>
+ <span class="help">Set multiple numbering series for transactions</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Features Setup/Features Setup">Disable Features</a></b><br>
+ <span class="help">Simplify entry forms by disabling features</span>
+ </p>
+ </div>
+ <div class="setup-column">
+ <h3>Branding and Printing</h3>
+ <p>
+ <b><a href="#!List/Letter Head">Letter Heads</a></b><br>
+ <span class="help">Letter heads for print</span>
+ </p>
+ <p>
+ <b><a href="#!List/Print Format">Print Formats</a></b><br>
+ <span class="help">HTML print formats for quotes, invoices etc</span>
+ </p>
+ <p>
+ <b><a href="#!List/Print Heading">Print Headings</a></b><br>
+ <span class="help">Add headers for standard print formats</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Personalize/Personalize">Home Banner</a></b><br>
+ <span class="help">Add a home page banner</span>
+ </p>
+ <p>
+ <b><a href="#!Form/Style Settings/Style Settings">Style Settings</a></b><br>
+ <span class="help">Change background fonts etc</span>
+ </p>
+ </div>
+ <div style="clear: both"></div>
</div>
\ No newline at end of file
diff --git a/erpnext/setup/page/setup/setup.js b/erpnext/setup/page/setup/setup.js
index d58f11a..5b8f176 100644
--- a/erpnext/setup/page/setup/setup.js
+++ b/erpnext/setup/page/setup/setup.js
@@ -1,255 +1,3 @@
-pscript.onload_Setup = function() {
- var parent = $i('setup_div');
-
- var callback = function(r,rt){
- $('#setup_div').empty();
- // header
- parent.page_head = new PageHeader(parent,'Setup');
-
- // sections
- var setup_data = new SetupData(r.message);
- pscript.setup_make_sections(setup_data);
-
- }
- $c_obj('Setup Wizard Control','get_country','',callback);
-}
-
-pscript.setup_set_height = function() {
- var parent = $i('setup_div');
- $y(parent.tray.body, {height: get_window_height() - parent.page_head.wrapper.offsetHeight + 'px', overflow:'auto'})
-}
-
-// Make sections
-// ===================================================
-
-pscript.setup_make_sections = function(setup_data) {
- var parent = $i('setup_div');
- parent.tray = new TrayPage(parent)
-
- // list of setup data
- var lst = [setup_data.system, setup_data.general, setup_data.accounts, setup_data.selling, setup_data.buying, setup_data.stock, setup_data.hr, setup_data.maintenance, setup_data.production];
-
- for(var s=0; s<lst.length; s++){
- var lbl = keys(lst[s])[0];
-
- var ti = parent.tray.add_item(lbl, null, null, 1)
- new SetupItem(ti.body, lbl, lst[s][lbl]);
-
- if(s==0) ti.expand();
- }
-
- setTimeout(pscript.setup_set_height, 100);
- resize_observers.push(pscript.setup_set_height);
-}
-
-// Setup Item
-// ===================================================
-SetupItem = function(parent, lbl, link_list) {
- this.icons = {'System':'back_img Setup', 'General':'back_img Home', 'Accounts':'back_img Accounts', 'Selling':'back_img Selling', 'Stock':'back_img Stock', 'Buying':'back_img Buying', 'Maintenance':'back_img Maintenance', 'Production':'back_img Production', 'HR':'back_img HR'};
- this.make_item_body(parent, lbl, link_list);
-}
-
-
-// Make body for item in setup wizard
-// ===================================================
-SetupItem.prototype.make_item_body = function(parent, lbl, link_list){
- // item link area
- this.link_area = parent;
- this.render_item_body(lbl, link_list);
-}
-
-
-// Render item body
-// ===================================================
-SetupItem.prototype.render_item_body = function(lbl, link_list) {
- var me = this;
- // set item header
-
- link_list.sort(function(a, b) { return a[0] > b[0]; });
-
- // show links for item
- for(var i=0; i<link_list.length; i++){
- var wrapper = $a(this.link_area, 'div','',{marginBottom:'4px', padding:'2px'});
- $(wrapper).hover(
- function() { $y(this,{backgroundColor:'#EEF'}) }
- ,function() { $y(this,{backgroundColor:''}) }
- )
- var tab = make_table($a(wrapper,'div'), 1, 2, '100%', [200/7+'%', 500/7+'%'])
-
- var dt= $a($td(tab,0,0), 'span', 'link_type');
- dt.innerHTML = link_list[i][0];
- dt.label = link_list[i][0];
- dt.arg = link_list[i][1];
- dt.nm = link_list[i][2];
-
- if(dt.arg == 1) dt.cn = link_list[i][3];
- else if(dt.arg == 2) dt.cb=link_list[i][3];
-
- // execute when link is clicked
- dt.onclick = function(){
- me.link_action(this)
- }
-
- // description
- $y($td(tab,0,1), {color:'#777'});
- $td(tab,0,1).innerHTML = link_list[i][4];
- }
-}
-
-
-// Execute when link is clicked
-// ----------------------------
-SetupItem.prototype.link_action = function(obj) {
- var me = this;
- var obj = obj;
-
- // if object links to a doc browser
- if(obj.arg == 1){
- if(in_list(profile.can_read, obj.nm)){
- if(obj.cn !='')
- loaddocbrowser(obj.nm, obj.nm, obj.cn);
- else
- loaddocbrowser(obj.nm);
- }
- else
- msgprint('No read permission',1);
- }
-
- // if obj links to a page
- else if(obj.arg == 2){
- me.show_page(obj);
- }
-
- // if object links to a single doctype
- else if(obj.arg == 3){
- newdoc(obj.nm);
- }
-}
-
-
-// Show page for corresponding link
-// --------------------------------
-SetupItem.prototype.show_page = function(obj) {
- var me = obj;
- var callback = function(r,rt)
- {
- if(r.message){
- if(me.cb == '')
- loadpage(me.nm);
- else
- show_chart_browser(me.nm,me.cb);
- }
- else
- msgprint('No read permission',1);
- }
- $c_obj('Setup Wizard Control','get_page_lst',me.nm,callback);
-}
-
-
-// Setup Data
-// =======================================================================================================================================================
-SetupData = function(cnty){
-
- // arg : 1 - Docbrowser, 2 - Page, 3 - DocType
-
- //[label, arg, name, callback/col_name, description]
-
- this.system = {'System':[['Global Defaults',3,'Manage Account','','Set global default values'],
- ['Manage Series',3,'Naming Series','','Manage numbering series for transactions'],
- ['Custom Field',1,'Custom Field','dt'+NEWLINE+'label'+NEWLINE+'fieldtype'+NEWLINE+'options','Add and manage custom fields on forms'],
- ['Email Settings',3,'Email Settings','','Outgoing email server and address'],
- ['Notification Settings',3,'Notification Control','','Automatic emails set at selected events'],
- ['Email Digest', 1, 'Email Digest', '', 'Schedule Daily / Weekly / Monthly Summary e-mails'],
- ['Company',1,'Company','id'+NEWLINE+'is_active'+NEWLINE+'email','Manage list of companies'],
- ['Fiscal Year',1,'Fiscal Year','id'+NEWLINE+'company'+NEWLINE+'is_active'+NEWLINE+'year','Manage list of fiscal years'],
- ['Personalize',3,'Personalize','','Set your banner'],
- ['Manage Trash',2,'Trash','','Restore trashed items'],
- ['Import Data',2,'Import Data','','Import data from CSV files'],
- ['Manage Users',2,'My Company','','Add / remove users and manage their roles'],
- //['Web Forms',2,'Webforms','', 'Code to embed forms in yor website'],
- ['Permissions Manager',2,'Permission Engine','', 'Manage all permissions from one tool'],
- //['Property Setter',1,'Property Setter','', 'Customize properties of a Form (DocType) or Field'],
- ['Customize Form View',3,'DocLayer','', 'Customize properties of a Form (DocType) or Field'],
- ['Print Formats', 1, 'Print Format', '', 'Manage Print Formats'],
- ['Letter Head',1,'Letter Head','','Manage different letter heads for Prints'],
- ['SMS Settings',3,'SMS Settings','','Integrate your personalized SMS gateway which support http web service'],
- ['SMS Center',3,'SMS Center','','Send mass sms to your leads, contacts and partners'],
- ['Features Setup',3,'Features Setup','','Displays fields based on features selected']
- ]};
-
-
- this.general = {'General':[['Authorization Rule',1,'Authorization Rule','','Set rules based on amounts'],
- ['Print Heading',1,'Print Heading','','Manage headings for printing transactions'],
- ['Term',1,'Term','','Manage template of standard Terms for order / invoices etc'],
- ['Currency',1,'Currency','','Manage list of currencies'],
- ['Address',1,'Address','','Manage Address of customers, suppliers'],
- ['Country',1,'Country','','Country master'],
- ['State',1,'State','','State master'],
- ['Rename Tool',3,'Rename Tool','','Rename a record'],
- ['Bulk Rename Tool',3,'Bulk Rename Tool','','Rename multiple records at a time'],
- ['Activty Type',1,'Activity Type','','Types of activities that you can select in your Timesheet'],
- ['City',1,'City','','City master']]};
-
- this.selling = {'Selling':[['Customer Group',2,'Sales Browser','Customer Group','Manage customer categories'],
- ['Territory',2,'Sales Browser','Territory','Manage sales territories'],
- ['Customer',1,'Customer','customer_group'+NEWLINE+'country','Customer master'],
- ['Sales Person',2,'Sales Browser','Sales Person','Manage sales persons'],
- ['Sales Partner',1,'Sales Partner','', 'Manage sales partners'],
- ['Campaign',1,'Campaign','id'+NEWLINE+'campaign_name'+NEWLINE+'description','Manage sales / marketing campaigns'],
- ['Sales BOM',1,'Sales BOM','id'+NEWLINE+'is_active'+NEWLINE+'new_item_name'+NEWLINE+'description'+NEWLINE+'item_group','Manage Sales Bill of Material (Main item + accessories)'],
- ['Price List',1,'Price List','','Price list master']]};
-
- this.accounts = {'Accounts':[['Chart of Accounts',2,'Accounts Browser','Account','Manage chart of accounts'],
- ['Chart of Cost Centers',2,'Accounts Browser','Cost Center','Manage chart of cost centers'],
- ['POS Setting',1,'POS Setting','','Manage Point of Sales default Settings.']]};
-
- // if country = india; show india related doctypes
- //-------------------------------------------------
-
- if(cnty == 'India'){
- var lst1 = [['TDS Rate Chart',1,'TDS Rate Chart','', 'TDS rate master'],['TDS Category',1,'TDS Category','id'+NEWLINE+'module','TDS categories']];
- for(var i =0; i<lst1.length;i++)
- this.accounts['Accounts'].push(lst1[i]);
- }
- //--------------------------------------------------
-
- var lst = [['Monthly Distribution',1,'Budget Distribution','id'+NEWLINE+'fiscal_year'+NEWLINE+'distribution_id','Manage budget distributions (seasonalities)'],
- ['Sales Other Charges',1,'Other Charges','','Manage your charge structures (taxes + charges) for sales'],
- ['Purchase Other Charges',1,'Purchase Other Charges','','Manage your charge structures (taxes + charges) for purchase'],
- ['Mode of Payment',1,'Mode of Payment','','Mode of payment master']];
-
- for(var i =0; i<lst.length;i++)
- this.accounts['Accounts'].push(lst[i]);
-
- this.stock = {'Stock':[['Item Group',2,'Sales Browser','Item Group','Manage item classifications'],
- ['Item',1,'Item','name'+NEWLINE+'item_group'+NEWLINE+'description','Item master'],
- ['Brand',1,'Brand','id'+NEWLINE+'description','Brand master'],
- ['Batch',1,'Batch','name'+NEWLINE+'start_date'+NEWLINE+'item'+NEWLINE+'expiry_date','Manage batches'],
- ['Price List',1,'Price List','','Price list master'],
- ['UOM',1,'UOM','','Unit of measure (UOM) master'],
- ['Warehouse Type',1,'Warehouse Type','','Warehouse classifications'],
- ['Warehouse',1,'Warehouse','','Warehouse master']]};
-
- this.buying = {'Buying':[['Supplier Type',1,'Supplier Type','','Manage supplier classifications'],
- ['Supplier',1,'Supplier','id'+NEWLINE+'supplier_type'+NEWLINE+'supplier_status'+NEWLINE+'company','Supplier master']]};
-
- this.maintenance = {'Maintenance':[['Serial No',1,'Serial No','item_code'+NEWLINE+'status'+NEWLINE+'pr_no'+NEWLINE+'delivery_note_no'+NEWLINE+'customer_name','Manage unique serial numbers for items']]};
-
- this.production = {'Production':[['Bill of Materials',1,'Bill Of Materials','id'+NEWLINE+'item'+NEWLINE+'description'+NEWLINE+'operating_cost'+NEWLINE+'maintained_by','Muti-level bill of materials and operations'],
- ['Workstation',1,'Workstation','id'+NEWLINE+'workstation_name'+NEWLINE+'warehouse'+NEWLINE+'description','Workstation master']]};
-
- this.hr = {'HR':[['Department',1,'Department','','Company department master'],
- ['Designation',1,'Designation','','Company designation master'],
- ['Branch',1,'Branch','','Manage branches for your company'],
- ['Grade',1,'Grade','','Manage employee grades'],
- ['Employment Type',1,'Employment Type','','Manage types of employment'],
- ['Employee',1,'Employee','employee_name'+NEWLINE+'employment_type'+NEWLINE+'status'+NEWLINE+'branch'+NEWLINE+'designation'+NEWLINE+'department'+NEWLINE+'grade'+NEWLINE+'reports_to','Employee master'],
- ['Earning Type',1,'Earning Type','taxable'+NEWLINE+'exemption_limit','Types of salary earning master'],
- ['Deduction Type',1,'Deduction Type','','Types of salary deduction master'],
- ['Expense Type',1,'Expense Type','', 'Types of expense master'],
-
- ['Salary Structure',1,'Salary Structure','employee'+NEWLINE+'is_active'+NEWLINE+'fiscal_year'+NEWLINE+'from_date'+NEWLINE+'ctc'+NEWLINE+'total_earning'+NEWLINE+'total_deduction'+NEWLINE+'total','Salary structure template'],
- ['Holiday List',1,'Holiday List','fiscal_year','List of holidays'],
- ['Leave Type',1,'Leave Type','max_days_allowed'+NEWLINE+'is_carry_forward'+NEWLINE+'is_encash','Leave type master'],
- ['KRA Template',1,'KRA Template','','Template of Key Result Areas (KRAs)']]};
-}
+pscript.onload_Setup = function(wrapper) {
+ erpnext.module_page.hide_links(wrapper);
+}
\ No newline at end of file
diff --git a/erpnext/setup/page/setup/setup_static.html b/erpnext/setup/page/setup/setup_static.html
deleted file mode 100644
index 54fee71..0000000
--- a/erpnext/setup/page/setup/setup_static.html
+++ /dev/null
@@ -1 +0,0 @@
-Setup
\ No newline at end of file
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 9740be4..729648f 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -54,12 +54,13 @@
import webnotes
import webnotes.model.doc
+ bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
+
if webnotes.session['user']=='Guest':
bootinfo['website_settings'] = webnotes.model.doc.getsingle('Website Settings')
bootinfo['website_menus'] = webnotes.conn.sql("""select label, url, custom_page,
parent_label, parentfield
from `tabTop Bar Item` where parent='Website Settings' order by idx asc""", as_dict=1)
- bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
bootinfo['analytics_code'] = \
webnotes.conn.get_value('Website Settings', None, 'analytics_code')
bootinfo['analytics_call'] = \
diff --git a/erpnext/startup/modules.js b/erpnext/startup/modules.js
index 429920f..553cc3e 100644
--- a/erpnext/startup/modules.js
+++ b/erpnext/startup/modules.js
@@ -60,357 +60,4 @@
no_refresh: true
});
wrapper.list.run();
-}
-
-
-
-// ====================================================================
-
-pscript.startup_make_sidebar = function() {
- $y(page_body.left_sidebar, {width:(100/6)+'%', paddingTop:'8px'});
-
- var callback = function(r,rt) {
- // menu
- var ml = r.message;
-
- // clear
- page_body.left_sidebar.innerHTML = '';
-
- for(var m=0; m<ml.length; m++){
- if(ml[m]) {
- new SidebarItem(ml[m]);
- }
- }
- nav_obj.observers.push({notify:function(t,dt,dn) { pscript.select_sidebar_menu(t, dt, dn); }});
-
- // select current
- var no = nav_obj.ol[nav_obj.ol.length-1];
- if(no && menu_item_map[decodeURIComponent(no[0])][decodeURIComponent(no[1])])
- pscript.select_sidebar_menu(decodeURIComponent(no[0]), decodeURIComponent(no[1]));
- }
- $c_obj('Home Control', 'get_modules', '', callback);
-}
-
-// ====================================================================
-// Menu observer
-// ====================================================================
-
-cur_menu_pointer = null;
-var menu_item_map = {'Form':{}, 'Page':{}, 'Report':{}, 'List':{}}
-
-pscript.select_sidebar_menu = function(t, dt, dn) {
- // get menu item
- if(menu_item_map[t][dt]) {
- // select
- menu_item_map[t][dt].select();
- } else {
- // none found :-( Unselect
- if(cur_menu_pointer)
- cur_menu_pointer.deselect();
- }
-}
-
-// ====================================================================
-// Menu pointer
-// ====================================================================
-
-var body_background = '#e2e2e2';
-
-MenuPointer = function(parent, label) {
- var me = this;
- this.wrapper = $a(parent, 'div', '', {padding:'0px', cursor:'pointer', margin:'2px 0px'});
- $br(this.wrapper, '3px');
-
- this.tab = make_table($a(this.wrapper, 'div'), 1, 2, '100%', ['', '11px'], {height:'22px',
- verticalAlign:'middle', padding:'0px'}, {borderCollapse:'collapse', tableLayout:'fixed'});
-
- $y($td(this.tab, 0, 0), {padding:'0px 4px', color:'#444', whiteSpace:'nowrap'});
-
- // triangle border (?)
- this.tab.triangle_div = $a($td(this.tab, 0, 1), 'div','', {
- borderColor: body_background + ' ' + body_background + ' ' + body_background + ' ' + 'transparent',
- borderWidth:'11px', borderStyle:'solid', height:'0px', width:'0px', marginRight:'-11px'});
-
- this.label_area = $a($td(this.tab, 0, 0), 'span', '', '', label);
-
- $(this.wrapper)
- .hover(
- function() { if(!me.selected)
- $bg(this, '#eee'); } ,
- function() { if(!me.selected)
- $bg(this, body_background); }
- )
-
- $y($td(this.tab, 0, 0), {borderBottom:'1px solid #ddd'});
-
-}
-
-// ====================================================================
-
-MenuPointer.prototype.select = function(grey) {
- $y($td(this.tab, 0, 0), {
- color:'#fff', borderBottom:'0px solid #000'
- });
- $(this.wrapper).css('background-color', '#999');
- this.selected = 1;
-
- if(cur_menu_pointer && cur_menu_pointer != this)
- cur_menu_pointer.deselect();
-
- cur_menu_pointer = this;
-}
-
-// ====================================================================
-
-MenuPointer.prototype.deselect = function() {
- $y($td(this.tab, 0, 0), {color:'#444', borderBottom:'1px solid #ddd'});
- $(this.wrapper).css('background-color', body_background);
- this.selected = 0;
-}
-
-
-// ====================================================================
-// Sidebar Item
-// ====================================================================
-
-var cur_sidebar_item = null;
-
-SidebarItem = function(det) {
- var me = this;
- this.det = det;
- this.wrapper = $a(page_body.left_sidebar, 'div', '', {marginRight:'12px'});
-
- this.body = $a(this.wrapper, 'div');
- this.tab = make_table(this.body, 1, 2, '100%', ['24px', null], {verticalAlign:'middle'}, {tableLayout:'fixed'});
-
- // icon
- var ic = $a($td(this.tab, 0, 0), 'div', 'module-icons module-icons-' + det.module_label.toLowerCase(), {marginLeft:'3px', marginBottom:'-2px'});
-
- // pointer table
- this.pointer = new MenuPointer($td(this.tab, 0, 1), det.module_label);
- $y($td(this.pointer.tab, 0, 0), {fontWeight:'bold'});
-
- // for page type
- if(det.module_page) {
- menu_item_map.Page[det.module_page] = this.pointer;
- }
-
- // items area
- this.items_area = $a(this.wrapper, 'div');
-
- this.body.onclick = function() { me.onclick(); }
-}
-
-// ====================================================================
-
-SidebarItem.prototype.onclick = function() {
- var me = this;
-
- if(this.det.module_page) {
- // page type
- this.pointer.select();
-
- $(me.pointer.label_area).set_working();
- loadpage(this.det.module_page, function() {
- $(me.pointer.label_area).done_working();
- });
-
- } else {
- // show sub items
- this.toggle();
- }
-}
-
-// ====================================================================
-
-SidebarItem.prototype.collapse = function() {
- $(this.items_area).slideUp();
- this.is_open = 0;
- $fg(this.pointer.label_area, '#444')
-}
-
-// ====================================================================
-
-SidebarItem.prototype.toggle = function() {
- if(this.loading) return;
-
- if(this.is_open) {
- this.collapse();
- } else {
- if(this.loaded) $(this.items_area).slideDown();
- else this.show_items();
- this.is_open = 1;
- $fg(this.pointer.label_area, '#000')
- //this.pointer.select(1);
-
- // close existing open
- if(cur_sidebar_item && cur_sidebar_item != this) {
- cur_sidebar_item.collapse();
- }
- cur_sidebar_item = this;
- }
-}
-
-// ====================================================================
-
-SidebarItem.prototype.show_items = function() {
- this.loading = 1;
- var me = this;
-
- $(this.pointer.label_area).set_working();
- var callback = function(r,rt){
- me.loaded = 1;
- me.loading = 0;
- var smi = null;
- var has_reports = 0;
- var has_tools = 0;
-
- // widget code
- $(me.pointer.label_area).done_working();
-
- if(r.message.il) {
- me.il = r.message.il;
-
- // forms
- for(var i=0; i<me.il.length;i++){
- if(me.il[i].doc_type == 'Forms') {
- if(in_list(profile.can_read, me.il[i].doc_name)) {
- var smi = new SidebarModuleItem(me, me.il[i]);
-
- menu_item_map['Form'][me.il[i].doc_name] = smi.pointer;
- menu_item_map['List'][me.il[i].doc_name] = smi.pointer;
- }
- }
- if(me.il[i].doc_type=='Reports') has_reports = 1;
- if(in_list(['Single DocType', 'Pages', 'Setup Forms'], me.il[i].doc_type))
- has_tools = 1;
- }
- // reports
- if(has_reports) {
- var smi = new SidebarModuleItem(me, {doc_name:'Reports', doc_type:'Reports'});
-
- // add to menu-item mapper
- menu_item_map['Page'][me.det.module_label + ' Reports'] = smi.pointer;
- }
-
- // tools
- if(has_tools) {
- var smi = new SidebarModuleItem(me, {doc_name:'Tools', doc_type:'Tools'});
-
- // add to menu-item mapper
- menu_item_map['Page'][me.det.module_label + ' Tools'] = smi.pointer;
- }
-
- // custom reports
- if(r.message.custom_reports.length) {
- me.il = add_lists(r.message.il, r.message.custom_reports);
- var smi = new SidebarModuleItem(me, {doc_name:'Custom Reports', doc_type:'Custom Reports'});
-
- // add to menu-item mapper
- menu_item_map['Page'][me.det.module_label + ' Custom Reports'] = smi.pointer;
- }
- }
-
-
- $(me.items_area).slideDown();
-
- // high light
- var no = nav_obj.ol[nav_obj.ol.length-1];
- if(no && menu_item_map[decodeURIComponent(no[0])][decodeURIComponent(no[1])])
- pscript.select_sidebar_menu(decodeURIComponent(no[0]), decodeURIComponent(no[1]));
-
- }
-
- $c_obj('Home Control', 'get_module_details', me.det.name, callback);
-}
-
-// ====================================================================
-// Show Reports
-// ====================================================================
-
-SidebarItem.prototype.show_section = function(sec_type) {
- var me = this;
- var label = this.det.module_label + ' ' + sec_type;
- var type_map = {'Reports':'Reports', 'Custom Reports':'Custom Reports',
- 'Pages':'Tools', 'Single DocType':'Tools', 'Setup Forms':'Tools'}
-
-
- if(page_body.pages[label]) {
- loadpage(label, null, 1);
- } else {
-
- // make the reports page
- var page = page_body.add_page(label);
- this.wrapper = $a(page,'div','layout_wrapper');
-
-
- // head
- this.head = new PageHeader(this.wrapper, label);
-
- // body
- this.body1 = $a(this.wrapper, 'div', '', {marginTop:'16px'});
-
- // add a report link
- var add_link = function(det) {
- var div = $a(me.body1, 'div', '', {marginBottom:'6px'});
- var span = $a(div, 'span', 'link_type');
-
- // tag the span
- span.innerHTML = det.display_name; span.det = det;
- if(sec_type=='Reports' || sec_type=='Custom Reports') {
- // Reports
- // -------
- span.onclick = function() { loadreport(this.det.doc_name, this.det.display_name); }
-
- } else {
- // Tools
- // -----
-
- if(det.doc_type=='Pages') {
- // Page
- if(det.click_function) {
- span.onclick = function() { eval(this.det.click_function) }
- span.click_function = det.click_function;
- } else {
- span.onclick = function() { loadpage(this.det.doc_name); }
- }
- } else if(det.doc_type=='Setup Forms') {
- // Doc Browser
- span.onclick = function() { loaddocbrowser(this.det.doc_name); }
- } else {
- // Single
- span.onclick = function() { loaddoc(this.det.doc_name, this.det.doc_name); }
- }
- }
- }
-
- // item list
- for(var i=0; i<me.il.length;i++){
- if(type_map[me.il[i].doc_type] == sec_type) {
- add_link(me.il[i]);
- }
- }
- loadpage(label, null, 1);
- }
-}
-
-
-// ====================================================================
-// Sidebar module item
-// ====================================================================
-
-SidebarModuleItem = function(si, det) {
- this.det = det;
- var me= this;
-
- this.pointer = new MenuPointer(si.items_area, get_doctype_label(det.doc_name));
- $y(si.items_area, {marginLeft:'32px'})
- $y($td(this.pointer.tab, 0, 0), {fontSize:'11px'});
-
- this.pointer.wrapper.onclick = function() {
- if(me.det.doc_type=='Forms')
- loaddocbrowser(det.doc_name);
- else
- si.show_section(me.det.doc_type);
- }
-}
+}
\ No newline at end of file
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index a456500..57993de 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -14,19 +14,16 @@
$('#startup_div').html('Starting up...').toggle(true);
erpnext.startup.set_globals();
-
+
+ if(wn.boot.custom_css) {
+ set_style(wn.boot.custom_css);
+ }
+
if(user == 'Guest'){
- $dh(page_body.left_sidebar);
- if(wn.boot.custom_css) {
- set_style(wn.boot.custom_css);
- }
if(wn.boot.website_settings.title_prefix) {
wn.title_prefix = wn.boot.website_settings.title_prefix;
}
} else {
- // modules
- pscript.startup_make_sidebar();
-
// setup toolbar
erpnext.toolbar.setup();
diff --git a/erpnext/website/css/website.css b/erpnext/website/css/website.css
index 9fd7f12..693b8fb 100644
--- a/erpnext/website/css/website.css
+++ b/erpnext/website/css/website.css
@@ -1,8 +1,3 @@
-#body_div {
- width: 900px;
- margin: auto;
-}
-
.layout_wrapper {
padding: 20px;
}
@@ -30,15 +25,6 @@
margin-bottom: 9px;
}
-footer {
- width: 900px;
- margin: auto;
-}
-header .topbar .container {
- width: 900px;
- margin: auto;
-}
-
.web-content input[type="text"], .web-content input[type="password"], .web-content select {
min-width: 180px;
}
diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js
index 247614b..29b2c51 100644
--- a/erpnext/website/js/topbar.js
+++ b/erpnext/website/js/topbar.js
@@ -83,7 +83,6 @@
this.make_items();
},
make_items: function() {
- alert(16);
var items = wn.boot.website_menus
for(var i=0;i<items.length;i++) {
var item = items[i];
diff --git a/js/all-app.js b/js/all-app.js
index ab94eee..f0bed4f 100644
--- a/js/all-app.js
+++ b/js/all-app.js
Binary files differ
diff --git a/js/all-web.js b/js/all-web.js
index d820dca..01e80f6 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -979,13 +979,8 @@
/*
* lib/js/legacy/webpage/body.js
*/
-function Body(){this.left_sidebar=null;this.right_sidebar=null;this.status_area=null;var me=this;page_body=this;this.no_of_columns=function(){var n=2;if(cint(me&&me.cp&&me.cp.right_sidebar_width))
-n=n+1;return n;}
-this.ready=function(){$dh('startup_div');$ds('body_div');}
-this.setup_page_areas=function(){var n=this.no_of_columns();this.body_table=make_table(this.body,1,n,'100%');$y(this.body_table,{tableLayout:'fixed'});var c=0;this.left_sidebar=$td(this.body_table,0,c);$y(this.left_sidebar,{width:cint(this.cp.left_sidebar_width)+'px'});c++;this.center=$a($td(this.body_table,0,c),'div');c++;if(cint(this.cp.right_sidebar_width)){this.right_sidebar=$td(this.body_table,0,c);$y(this.right_sidebar,{width:cint(this.cp.right_sidebar_width)+'px'})
-c++;}
-this.center.header=$a(this.center,'div');this.center.body=$a(this.center,'div');this.center.loading=$a(this.center,'div','',{margin:'200px 0px',fontSize:'14px',color:'#999',textAlign:'center'});this.center.loading.innerHTML='Loading...'}
-this.setup_sidebar_menu=function(){if(this.left_sidebar&&this.cp.show_sidebar_menu){sidebar_menu=new SidebarMenu();sidebar_menu.make_menu('');}}
+function Body(){this.left_sidebar=null;this.right_sidebar=null;this.status_area=null;var me=this;page_body=this;this.ready=function(){$dh('startup_div');$ds('body_div');}
+this.setup_page_areas=function(){this.center=this.body;this.center.header=$a(this.center,'div');this.center.body=$a(this.center,'div');this.center.loading=$a(this.center,'div','',{margin:'200px 0px',fontSize:'14px',color:'#999',textAlign:'center'});this.center.loading.innerHTML='Loading...'}
this.run_startup_code=function(){$(document).trigger('startup');try{if(this.cp.custom_startup_code)
eval(this.cp.custom_startup_code);}catch(e){errprint(e);}}
this.setup=function(){this.cp=wn.control_panel;this.wrapper=$a($i('body_div'),'div');this.body=$a(this.wrapper,'div');this.setup_page_areas();if(user=='Guest')user_defaults.hide_webnotes_toolbar=1;if(!cint(user_defaults.hide_webnotes_toolbar)||user=='Administrator'){this.wntoolbar=new wn.ui.toolbar.Toolbar();}
@@ -1009,7 +1004,7 @@
if(r.dt_labels){for(key in r.dt_labels)session.rev_dt_labels[r.dt_labels[key]]=key;}
wn.control_panel=r.control_panel;}
var setup_history=function(r){rename_observers.push(nav_obj);}
-var callback=function(r,rt){if(r.exc)console.log(r.exc);setup_globals(r);setup_history();var a=new Body();page_body.run_startup_code();page_body.setup_sidebar_menu();for(var i=0;i<startup_list.length;i++){startup_list[i]();}
+var callback=function(r,rt){if(r.exc)console.log(r.exc);setup_globals(r);setup_history();var a=new Body();page_body.run_startup_code();for(var i=0;i<startup_list.length;i++){startup_list[i]();}
var t=to_open();if(t){historyChange(t);}else if(home_page){loadpage(home_page);}
page_body.ready();}
if(wn.boot){LocalDB.sync(wn.boot.docs);callback(wn.boot,'');if(wn.boot.error_messages)
@@ -1047,8 +1042,8 @@
*/
var current_module;var is_system_manager=0;var module_content_dict={};var user_full_nm={};wn.provide('erpnext.startup');erpnext.startup.set_globals=function(){pscript.is_erpnext_saas=cint(wn.control_panel.sync_with_gateway)
if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(user=='Guest'){$dh(page_body.left_sidebar);if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
-if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{pscript.startup_make_sidebar();erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('<div class="erpnext-footer">\
+erpnext.startup.start=function(){$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(wn.boot.custom_css){set_style(wn.boot.custom_css);}
+if(user=='Guest'){if(wn.boot.website_settings.title_prefix){wn.title_prefix=wn.boot.website_settings.title_prefix;}}else{erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('<div class="erpnext-footer">\
Powered by <a href="https://erpnext.com">ERPNext</a></div>');}
$('#startup_div').toggle(false);}
show_chart_browser=function(nm,chart_type){var call_back=function(){if(nm=='Sales Browser'){var sb_obj=new SalesBrowser();sb_obj.set_val(chart_type);}
@@ -1082,6 +1077,12 @@
<a href="#!%(route)s">%(label)s</a></li>',item))}}
for(var i=0;i<items.length;i++){var item=items[i];if(item.parent_label&&item.parentfield=='top_bar_items'){$parent_li=$(repl('header li[data-label="%(parent_label)s"]',item));if(!$parent_li.hasClass('dropdown')){$parent_li.addClass('dropdown');$parent_li.find('a:first').addClass('dropdown-toggle').attr('data-toggle','dropdown').attr('href','').append('<b class="caret"></b>').click(function(){return false;});$parent_li.append('<ul class="dropdown-menu"></ul>');}
item.route=item.url||item.custom_page;$parent_li.find('.dropdown-menu').append(repl('<li data-label="%(label)s">\
- <a href="#!%(route)s">%(label)s</a></li>',item))}}}});erpnext.Footer=Class.extend({init:function(){alert(15);this.make_items();},make_items:function(){alert(16);var items=wn.boot.website_menus
+ <a href="#!%(route)s">%(label)s</a></li>',item))}}}});erpnext.Footer=Class.extend({init:function(){$('footer').html(repl('<div class="web-footer">\
+ <div class="web-footer-menu"><ul></ul></div>\
+ <div class="web-footer-address">%(address)s</div>\
+ <div class="web-footer-copyright">© %(copyright)s</div>\
+ <div class="web-footer-powered">Powered by \
+ <a href="https://erpnext.com">erpnext.com</a></div>\
+ </div>',wn.boot.website_settings));this.make_items();},make_items:function(){var items=wn.boot.website_menus
for(var i=0;i<items.length;i++){var item=items[i];if(!item.parent_label&&item.parentfield=='footer_items'){item.route=item.url||item.custom_page;$('.web-footer-menu ul').append(repl('<li><a href="#!%(route)s" \
data-label="%(label)s">%(label)s</a></li>',item))}}}});$(document).bind('startup',function(){erpnext.footer=new erpnext.Footer();erpnext.navbar.navbar=new erpnext.navbar.navbar();})
\ No newline at end of file
diff --git a/version.num b/version.num
index 748e6f1..70e3603 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-637
\ No newline at end of file
+648
\ No newline at end of file