diff --git a/css/all-app.css b/css/all-app.css index b2fd2e5732..b49caedee9 100644 --- a/css/all-app.css +++ b/css/all-app.css @@ -1043,7 +1043,7 @@ div.dialog_head { } div.dialog_body { - padding: 8px 4px 16px 4px; + padding: 8px 8px 16px; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; diff --git a/css/all-web.css b/css/all-web.css index 9359de898e..bebfe9a334 100644 --- a/css/all-web.css +++ b/css/all-web.css @@ -362,7 +362,7 @@ div.dialog_head { } div.dialog_body { - padding: 8px 4px 16px 4px; + padding: 8px 8px 16px; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; diff --git a/erpnext/home/page/desktop/desktop.js b/erpnext/home/page/desktop/desktop.js index e2a8d5386e..ebd3da1dda 100644 --- a/erpnext/home/page/desktop/desktop.js +++ b/erpnext/home/page/desktop/desktop.js @@ -44,35 +44,60 @@ erpnext.desktop.add_classes = function() { erpnext.desktop.render = function() { var icons = [ - { gradient: 'brown', sprite: 'feed', label: 'Activity', link: '#!Event Updates' }, - { gradient: 'blue', sprite: 'account', label: 'Accounts', link: '#!accounts-home' }, - { gradient: 'green', sprite: 'selling', label: 'Selling', link: '#!selling-home' }, - { gradient: 'yellow', sprite: 'stock', label: 'Stock', link: '#!stock-home' }, - { gradient: 'red', sprite: 'buying', label: 'Buying', link: '#!buying-home' }, - { gradient: 'purple', sprite: 'support', label: 'Support', link: '#!support-home' }, - { gradient: 'ocean', sprite: 'hr', label: 'Human
Resources', link: '#!hr-home' }, - { gradient: 'violet', sprite: 'project', label: 'Projects', link: '#!projects-home' }, - { gradient: 'dark-red', sprite: 'production', label: 'Production', link: '#!production-home' }, - { gradient: 'leaf-green', sprite: 'website', label: 'Website', link: '#!website-home' }, - { gradient: 'grey', sprite: 'setting', label: 'Settings', link: '#!Setup' }, - { gradient: 'bright-green', sprite: 'dashboard', label: 'Dashboard', link: '#!dashboard' }, - //{ gradient: 'dark-blue', sprite: 'report', label: 'Report' }, - { gradient: 'pink', sprite: 'messages', label: 'Messages', link: '#!messages' }, - { gradient: 'bright-yellow', sprite: 'todo', label: 'To Do', link: '#!todo' }, - { gradient: 'peacock', sprite: 'calendar', label: 'Calendar', link: '#!calendar' }, - { gradient: 'ultra-dark-green', sprite: 'kb', label: 'Knowledge
Base', link: '#!questions' }, + { gradient: 'blue', sprite: 'account', label: 'Accounts', link: '#!accounts-home', + is_module: 'Accounts'}, + { gradient: 'green', sprite: 'selling', label: 'Selling', link: '#!selling-home', + is_module: 'Selling'}, + { gradient: 'yellow', sprite: 'stock', label: 'Stock', link: '#!stock-home', + is_module: 'Stock'}, + { gradient: 'red', sprite: 'buying', label: 'Buying', link: '#!buying-home', + is_module: 'Buying'}, + { gradient: 'purple', sprite: 'support', label: 'Support', link: '#!support-home', + is_module: 'Support'}, + { gradient: 'ocean', sprite: 'hr', label: 'Human
Resources', link: '#!hr-home', + is_module: 'HR'}, + { gradient: 'violet', sprite: 'project', label: 'Projects', link: '#!projects-home', + is_module: 'Projects'}, + { gradient: 'dark-red', sprite: 'production', label: 'Production', link: '#!production-home', + is_module: 'Production'}, + { gradient: 'leaf-green', sprite: 'website', label: 'Website', link: '#!website-home', + is_module: 'Website'}, ] - $.each(icons, function(i, v) { - var icon_case = $('#icon-grid').append(repl('\ + var add_icon = function(v) { + $('#icon-grid').append(repl('\
\
\
\
\
%(label)s
\ -
', v)); - }); + ', v)); + } + + var get_module = function(m) { + for(var i in icons) { + if(icons[i].is_module==m) return icons[i] + } + } + + // activity + add_icon({ gradient: 'brown', sprite: 'feed', label: 'Activity', link: '#!Event Updates'}); + // modules + for(var i in wn.boot.modules_list) + add_icon(get_module(wn.boot.modules_list[i])); + + // setup + if(user_roles.indexOf('System Manager')!=-1) + add_icon({ gradient: 'grey', sprite: 'setting', label: 'Setup', link: '#!Setup' }); + + // apps + add_icon({ gradient: 'bright-green', sprite: 'dashboard', label: 'Dashboard', link: '#!dashboard' }); + add_icon({ gradient: 'bright-yellow', sprite: 'todo', label: 'To Do', link: '#!todo' }); + add_icon({ gradient: 'pink', sprite: 'messages', label: 'Messages', link: '#!messages' }); + add_icon({ gradient: 'peacock', sprite: 'calendar', label: 'Calendar', link: '#!calendar' }); + add_icon({ gradient: 'ultra-dark-green', sprite: 'kb', label: 'Knowledge
Base', link: '#!questions' }); + erpnext.desktop.show_pending_notifications(); } diff --git a/erpnext/home/page/my_company/my_company.js b/erpnext/home/page/my_company/my_company.js index 775c89e7a8..8217cc71c1 100644 --- a/erpnext/home/page/my_company/my_company.js +++ b/erpnext/home/page/my_company/my_company.js @@ -758,253 +758,3 @@ MemberCoversationComment = function(cell, det, conv) { -// ========================== Role object ===================================== - -pscript.all_roles = null; - -RoleObj = function(profile_id){ - this.roles_dict = {}; - this.profile_id = profile_id; - this.setup_done = 0; - - var d = new Dialog(500,500,'Assign Roles'); - d.make_body([ - ['HTML','roles'] - ]); - - this.dialog = d; - this.make_role_body(profile_id); - this.make_help_body(); - - this.body.innerHTML = 'Loading... ' - var me=this; - - d.onshow = function() { - if(!me.setup_done) - me.get_all_roles(me.profile_id); - } -} - -// make role body -RoleObj.prototype.make_role_body = function(id){ - var me = this; - var d = this.dialog; - this.role_div = $a(d.widgets['roles'],'div'); - - this.head = $a(this.role_div,'div','',{marginLeft:'4px', marginBottom:'4px',fontWeight:'bold'}); - this.body = $a(this.role_div,'div'); - this.footer = $a(this.role_div,'div'); - - this.update_btn = $btn(this.footer,'Update',function() { me.update_roles(me.profile_id); },{marginRight:'4px'},'',1); -} - -// make help body -RoleObj.prototype.make_help_body = function(){ - var me = this; - - var d = this.dialog; - this.help_div = $a(d.widgets['roles'],'div'); - - var head = $a(this.help_div,'div'); this.help_div.head = head; - var body = $a(this.help_div,'div'); this.help_div.body = body; - var tail = $a(this.help_div,'div'); this.help_div.tail = tail; - - var back_btn = $btn(tail,'Back', function() { - // back to assign roles - $(me.role_div).slideToggle('medium'); - $(me.help_div).slideToggle('medium'); - }); - this.help_div.back_btn = back_btn; - $dh(this.help_div); -} - -// get all roles -RoleObj.prototype.get_all_roles = function(id){ - if(pscript.all_roles) { - this.make_roles(id); - return; - } - - var me = this; - var callback = function(r,rt){ - pscript.all_roles = r.message; - me.make_roles(id); - } - $c_obj('Company Control','get_all_roles','',callback); -} - -// make roles -RoleObj.prototype.make_roles = function(id){ - var me = this; - var list = pscript.all_roles; - me.setup_done = 1; - me.body.innerHTML = ''; - - var tbl = make_table( me.body, cint(list.length / 2) + 1,4,'100%',['5%','45%','5%','45%'],{padding:'4px'}); - var in_right = 0; var ridx = 0; - - for(i=0;i 1){ - var c = confirm("You have unchecked the System Manager role.\nYou will lose administrative rights and will not be able to set roles.\n\nDo you want to continue anyway?"); - if(!c) return; - } - else{ - var c = "There should be atleast one user with System Manager role."; - me.roles_dict['System Manager'].checked = 1; - } - } - me.set_roles(id); - } - $c_obj('Company Control','get_sm_count','',callback); - } - else{ - me.set_roles(id); - } -} - -// set roles -RoleObj.prototype.set_roles = function(id){ - - var me = this; - var role_list = []; - - for(d in me.roles_dict){ - if(me.roles_dict[d].checked){ - role_list.push(d); - } - } - - var callback = function(r,rt){ - me.update_btn.done_working(); - me.dialog.hide(); - } - var arg = {'usr':id, 'role_list':role_list}; - me.update_btn.set_working(); - $c_obj('Company Control','update_roles',docstring(arg), callback); - -} - -// get permission -RoleObj.prototype.get_permissions = function(role){ - var me = this; - - var callback = function(r,rt){ - $(me.help_div).slideToggle('medium'); - $(me.role_div).slideToggle('medium'); - me.set_permissions(r.message, role); - } - $c_obj('Company Control','get_permission',role,callback); -} - - -// set permission -RoleObj.prototype.set_permissions = function(perm, role){ - var me = this; - me.help_div.body.innerHTML =''; - - if(perm){ - me.help_div.head.innerHTML = 'Permissions for ' + role + ':

'; - - perm_tbl = make_table(me.help_div.body,cint(perm.length)+2,7,'100%',['30%','10%','10%','10%','10%','10%','10%'],{padding:'4px'}); - - var head_lst = ['Document','Read','Write','Create','Submit','Cancel','Amend']; - - for(var i=0; i<(head_lst.length-1);i++){ - $td(perm_tbl,0,i).innerHTML= ""+head_lst[i]+""; - } - var accept_img1 = 'lib/images/icons/accept.gif'; - var cancel_img1 = 'lib/images/icons/cancel.gif'; - - for(i=1; i
'; -} diff --git a/erpnext/setup/page/modules_setup/__init__.py b/erpnext/setup/page/modules_setup/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/setup/page/modules_setup/modules_setup.css b/erpnext/setup/page/modules_setup/modules_setup.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/setup/page/modules_setup/modules_setup.html b/erpnext/setup/page/modules_setup/modules_setup.html new file mode 100644 index 0000000000..ea136ffcae --- /dev/null +++ b/erpnext/setup/page/modules_setup/modules_setup.html @@ -0,0 +1,14 @@ +
+ × +

Modules Setup

+
+
+ Select checkbox to show / hide module. Drag around to move order. +
+
+
+
+ +
+
\ No newline at end of file diff --git a/erpnext/setup/page/modules_setup/modules_setup.js b/erpnext/setup/page/modules_setup/modules_setup.js new file mode 100644 index 0000000000..fe7f14fad3 --- /dev/null +++ b/erpnext/setup/page/modules_setup/modules_setup.js @@ -0,0 +1,50 @@ +wn.require('lib/js/lib/jquery-ui-sortable.min.js'); + +$.extend(wn.pages.modules_setup, { + modules: ['Accounts', 'Selling', 'Buying', 'Stock', 'Production', 'Projects', + 'Support', 'HR', 'Website'], + onload: function(wrapper) { + wn.pages.modules_setup.refresh(wn.boot.modules_list); + }, + refresh: function(ml) { + $('#modules-list').empty(); + + // checked modules + for(i in ml) { + $('#modules-list').append(repl('

\ + \ + %(m)s

', {m:ml[i]})); + } + $('#modules-list [data-module]').attr('checked', true); + + // unchecked modules + var all = wn.pages.modules_setup.modules; + for(i in all) { + if(!$('#modules-list [data-module="'+all[i]+'"]').length) { + $('#modules-list').append(repl('

\ + \ + %(m)s

', {m:all[i]})); + } + } + + $('#modules-list').sortable(); + + }, + update: function() { + var ml = []; + $('#modules-list [data-module]').each(function() { + if($(this).attr('checked')) + ml.push($(this).attr('data-module')); + }); + + wn.call({ + method: 'setup.page.modules_setup.modules_setup.update', + args: { + ml: JSON.stringify(ml) + }, + callback: function(r) { + }, + btn: $('#modules-update').get(0) + }); + } +}); \ No newline at end of file diff --git a/erpnext/setup/page/modules_setup/modules_setup.py b/erpnext/setup/page/modules_setup/modules_setup.py new file mode 100644 index 0000000000..ee36dfaeaa --- /dev/null +++ b/erpnext/setup/page/modules_setup/modules_setup.py @@ -0,0 +1,8 @@ +import webnotes + +@webnotes.whitelist() +def update(arg=None): + """update modules""" + webnotes.conn.set_global('modules_list', webnotes.form_dict['ml']) + webnotes.msgprint('Updated') + webnotes.clear_cache() \ No newline at end of file diff --git a/erpnext/setup/page/modules_setup/modules_setup.txt b/erpnext/setup/page/modules_setup/modules_setup.txt new file mode 100644 index 0000000000..70c6a90cc2 --- /dev/null +++ b/erpnext/setup/page/modules_setup/modules_setup.txt @@ -0,0 +1,28 @@ +# Page, modules_setup +[ + + # These values are common in all dictionaries + { + 'creation': '2012-02-28 17:48:39', + 'docstatus': 0, + 'modified': '2012-02-28 17:48:39', + 'modified_by': u'Administrator', + 'owner': u'Administrator' + }, + + # These values are common for all Page + { + 'doctype': 'Page', + 'module': u'Setup', + 'name': '__common__', + 'page_name': u'modules_setup', + 'standard': u'Yes', + 'title': u'Modules Setup' + }, + + # Page, modules_setup + { + 'doctype': 'Page', + 'name': u'modules_setup' + } +] \ No newline at end of file diff --git a/erpnext/setup/page/setup/setup.html b/erpnext/setup/page/setup/setup.html index 7963cb9d9a..50ef112bbb 100644 --- a/erpnext/setup/page/setup/setup.html +++ b/erpnext/setup/page/setup/setup.html @@ -20,7 +20,7 @@

Users and Permissions

- Users
+ Users
Add/remove users, set roles, passwords etc

@@ -31,6 +31,10 @@ Amount based Authorization Rules
Restrict submission rights based on amount

+

+ Modules Setup
+ Show, hide modules +

Data

diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py index 5f0cc2334c..a1d805ef1f 100644 --- a/erpnext/startup/event_handlers.py +++ b/erpnext/startup/event_handlers.py @@ -87,6 +87,8 @@ def boot_session(bootinfo): import webnotes.model.doctype bootinfo['docs'] += webnotes.model.doctype.get('Event') + + bootinfo['modules_list'] = webnotes.conn.get_global('modules_list') def get_letter_heads(): """load letter heads with startup""" diff --git a/erpnext/startup/toolbar.js b/erpnext/startup/toolbar.js index 7eda49361c..8c8d04167e 100644 --- a/erpnext/startup/toolbar.js +++ b/erpnext/startup/toolbar.js @@ -73,20 +73,35 @@ erpnext.toolbar.add_modules = function() { $('
\ ',wn.boot.website_settings));this.make_items();},make_items:function(){var items=wn.boot.website_menus for(var i=0;i%(label)s',item))}}}});$(document).bind('startup',function(){erpnext.footer=new erpnext.Footer();erpnext.navbar.navbar=new erpnext.navbar.navbar();}) + data-label="%(label)s">%(label)s',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 0218075162..e9244f999a 100644 --- a/version.num +++ b/version.num @@ -1 +1 @@ -747 +752 \ No newline at end of file