From 946e6d4a46c1b20487c12e4775464f72300972e9 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Dec 2012 15:00:29 +0530 Subject: [PATCH 1/8] desktop icons now use font-awesome --- home/page/desktop/desktop.css | 50 ++------ home/page/desktop/desktop.js | 84 +++++------- public/images/module-icons-small.png | Bin 9506 -> 0 bytes public/images/module_icons/accounts.png | Bin 549 -> 0 bytes public/images/module_icons/buying.png | Bin 1427 -> 0 bytes public/images/module_icons/calendar.png | Bin 914 -> 0 bytes public/images/module_icons/dashboard.png | Bin 621 -> 0 bytes public/images/module_icons/feed.png | Bin 1614 -> 0 bytes public/images/module_icons/hr.png | Bin 1064 -> 0 bytes public/images/module_icons/kb.png | Bin 1326 -> 0 bytes public/images/module_icons/messages.png | Bin 1018 -> 0 bytes public/images/module_icons/production.png | Bin 598 -> 0 bytes public/images/module_icons/projects.png | Bin 941 -> 0 bytes public/images/module_icons/selling.png | Bin 1229 -> 0 bytes public/images/module_icons/setup.png | Bin 1809 -> 0 bytes public/images/module_icons/stock.png | Bin 1555 -> 0 bytes public/images/module_icons/support.png | Bin 1329 -> 0 bytes public/images/module_icons/todo.png | Bin 1266 -> 0 bytes public/images/module_icons/website.png | Bin 2021 -> 0 bytes public/images/sprite-desktop.png | Bin 30354 -> 0 bytes public/js/conf.js | 2 +- public/js/modules.js | 148 ++++++++++++---------- public/js/startup.css | 21 --- public/js/toolbar.js | 6 +- 24 files changed, 122 insertions(+), 189 deletions(-) delete mode 100644 public/images/module-icons-small.png delete mode 100644 public/images/module_icons/accounts.png delete mode 100644 public/images/module_icons/buying.png delete mode 100644 public/images/module_icons/calendar.png delete mode 100644 public/images/module_icons/dashboard.png delete mode 100644 public/images/module_icons/feed.png delete mode 100644 public/images/module_icons/hr.png delete mode 100644 public/images/module_icons/kb.png delete mode 100644 public/images/module_icons/messages.png delete mode 100644 public/images/module_icons/production.png delete mode 100644 public/images/module_icons/projects.png delete mode 100644 public/images/module_icons/selling.png delete mode 100644 public/images/module_icons/setup.png delete mode 100644 public/images/module_icons/stock.png delete mode 100644 public/images/module_icons/support.png delete mode 100644 public/images/module_icons/todo.png delete mode 100644 public/images/module_icons/website.png delete mode 100644 public/images/sprite-desktop.png diff --git a/home/page/desktop/desktop.css b/home/page/desktop/desktop.css index 88a437c622..7990216ed4 100644 --- a/home/page/desktop/desktop.css +++ b/home/page/desktop/desktop.css @@ -1,49 +1,13 @@ /* Sprite CSS */ -.sprite-account{ background-position: 0 0; width: 32px; height: 40px; } -.sprite-buying{ background-position: 0 -90px; width: 40px; height: 40px; } -.sprite-calendar{ background-position: 0 -180px; width: 35px; height: 40px; } -.sprite-feed{ background-position: 0 -349px; width: 32px; height: 40px; } -.sprite-hr{ background-position: 0 -439px; width: 40px; height: 32px; } -.sprite-kb{ background-position: 0 -521px; width: 24px; height: 39px; } -.sprite-messages{ background-position: 0 -610px; width: 40px; height: 26px; } -.sprite-manufacturing{ background-position: 0 -686px; width: 40px; height: 33px; } -.sprite-project{ background-position: 0 -769px; width: 40px; height: 22px; } -.sprite-report{ background-position: 0 -841px; width: 29px; height: 40px; } -.sprite-selling{ background-position: 0 -931px; width: 34px; height: 40px; } -.sprite-setting{ background-position: 0 -1021px; width: 37px; height: 40px; } -.sprite-stock{ background-position: 0 -1111px; width: 34px; height: 39px; } -.sprite-support{ background-position: 0 -1200px; width: 40px; height: 40px; } -.sprite-todo{ background-position: 0 -1290px; width: 40px; height: 34px; } -.sprite-website{ background-position: 0 -1374px; width: 40px; height: 40px; } - -.sprite-image { background-image: url("app/images/sprite-desktop.png"); } - - -.sprite-account{ margin-top: 8px; margin-left: 12px; } -.sprite-selling{ margin-top: 8px; margin-left: 12px; } -.sprite-stock{ margin-top: 8px; margin-left: 8px; } -.sprite-buying{ margin-top: 8px; margin-left: 8px; } -.sprite-support{ margin-top: 8px; margin-left: 8px; } -.sprite-hr{ margin-top: 12px; margin-left: 8px; } -.sprite-project{ margin-top: 16px; margin-left: 8px; } -.sprite-manufacturing{ margin-top: 10px; margin-left: 8px; } -.sprite-website{ margin-top: 8px; margin-left: 8px; } -.sprite-setting{ margin-top: 8px; margin-left: 8px; } -.sprite-report{ margin-top: 8px; margin-left: 14px; } - -.sprite-messages{ margin-top: 14px; margin-left: 8px; } -.sprite-todo{ margin-top: 10px; margin-left: 10px; } -.sprite-calendar{ margin-top: 8px; margin-left: 10px; } -.sprite-kb{ margin-top: 8px; margin-left: 16px; } -.sprite-feed{ margin-top: 8px; margin-left: 14px; } .case-border { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; - width: 56px; - height: 56px; - border: 4px solid white; + width: 32px; + height: 32px; + padding: 12px; + border: 2px solid white; box-shadow: 0 0 4px 1px black; -moz-box-shadow: 0 0 4px 1px black; -webkit-box-shadow: 0 0 4px 1px black; @@ -58,6 +22,12 @@ height: 100px; } +.case-wrapper i { + font-size: 32px; + color: #f8f8f8; + margin-top: 8px; +} + .case-label { color: white; padding-top: 10px; diff --git a/home/page/desktop/desktop.js b/home/page/desktop/desktop.js index f9a3b544a2..e154b3a206 100644 --- a/home/page/desktop/desktop.js +++ b/home/page/desktop/desktop.js @@ -1,74 +1,48 @@ wn.provide('erpnext.desktop'); -erpnext.desktop.gradient = "" - erpnext.desktop.refresh = function() { - erpnext.desktop.add_classes(); erpnext.desktop.render(); -} -erpnext.desktop.add_classes = function() { - $.each(wn.module_css_classes, function(i, v) { - v.name = i; - $(repl(erpnext.desktop.gradient, v)).appendTo('head'); + $("#icon-grid").sortable({ + update: function() { + new_order = []; + $("#icon-grid .case-wrapper").each(function(i, e) { + new_order.push($(this).attr("data-name")); + }); + wn.user.set_default("_desktop_items", new_order); + } }); } erpnext.desktop.render = function() { - var icons = { - 'Accounts': { sprite: 'account', label: 'Accounts'}, - 'Selling': { sprite: 'selling', label: 'Selling'}, - 'Stock': { sprite: 'stock', label: 'Stock'}, - 'Buying': { sprite: 'buying', label: 'Buying'}, - 'Support': { sprite: 'support', label: 'Support'}, - 'HR': { sprite: 'hr', label: 'Human
Resources'}, - 'Projects': { sprite: 'project', label: 'Projects'}, - 'Manufacturing': { sprite: 'manufacturing', label: 'Manufacturing'}, - 'Website': { sprite: 'website', label: 'Website'}, - 'Activity': { sprite: 'feed', label: 'Activity'}, - 'Setup': { sprite: 'setting', label: 'Setup'}, - 'To Do': { sprite: 'todo', label: 'To Do'}, - 'Messages': { sprite: 'messages', label: 'Messages'}, - 'Calendar': { sprite: 'calendar', label: 'Calendar'}, - 'Knowledge Base': { sprite: 'kb', label: 'Knowledge
Base'} - } - var add_icon = function(m) { - var icon = icons[m]; - icon.link = erpnext.modules[m]; - icon.gradient = wn.module_css_map[m]; + var module = wn.modules[m]; + if(!module.label) + module.label = m; + module.name = m; + module.gradient_css = wn.get_gradient_css(module.color, 45); $('#icon-grid').append(repl('\ -
\ -
\ -
\ +
\ +
\ + \
\
%(label)s
\ -
', icon)); +
', module)); } - // setup - for(var i in wn.boot.modules_list) { - var m = wn.boot.modules_list[i]; + // modules + var modules_list = wn.user.get_default("_desktop_items") || wn.boot.modules_list; + $.each(modules_list, function(i, m) { if(!in_list(['Setup', 'Core'], m) && wn.boot.profile.allow_modules.indexOf(m)!=-1) add_icon(m); - } - + }) + // setup if(user_roles.indexOf('System Manager')!=-1) add_icon('Setup') - // apps + // notifications erpnext.desktop.show_pending_notifications(); } @@ -100,12 +74,12 @@ erpnext.desktop.show_pending_notifications = function() { } - add_circle('messages', 'unread_messages', 'Unread Messages'); - add_circle('support', 'open_support_tickets', 'Open Support Tickets'); - add_circle('todo', 'things_todo', 'Things To Do'); - add_circle('calendar', 'todays_events', 'Todays Events'); - add_circle('project', 'open_tasks', 'Open Tasks'); - add_circle('kb', 'unanswered_questions', 'Unanswered Questions'); + add_circle('module-icon-messages', 'unread_messages', 'Unread Messages'); + add_circle('module-icon-support', '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'); erpnext.update_messages(); diff --git a/public/images/module-icons-small.png b/public/images/module-icons-small.png deleted file mode 100644 index c5dc26d65d1c0320fd47ea948da7dea1616e4d0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9506 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 Qwoc5!lIL8@MUQTpt6Hc|`>jEg*7 z978f1-`+Cp7Iu_qc=)`nBPnsQ5=Xeqqs~W~+oG~nW0tq}ZWH^*l)HvS`t7<+LE5a@ z($$VOQw}?I|7Oiv-F_^o_};7>53@=6W(N7flYVxoA5IZIr1$lAZFAp4IlV_Z-%j4= z+BRFPs`3zk~W)XZc3ItUMZG;{D0Vki=q`Jta7o9?%{ZuceniSuRnag(&^Zj>^p}ne(;%n z5SbtP!S5=|{bQ*$olCc5|LA%DU{~K_$=3Y`Zp%#A#w$OyoY$DWkXilNdC8ZI`^6EX5P9LzUPqo)%MTs zJMy+f?>HtWbM1qWy79uO(Erc=tT=Rk`t#`tt6y2i<%_;vWxlEH@(uYHvu?Hq)$ diff --git a/public/images/module_icons/buying.png b/public/images/module_icons/buying.png deleted file mode 100644 index 5878748d97cafdda55afcdfaa9dbdf3a4170600d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1427 zcmV;E1#J3>P)V!Z8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11rSL@K~!jg<(h4X6;&9=e|I-FUv|^1jI=M6>1H8OnAw*IUlIx| zR+EBOM1!a>f~6OU>O;|owilugCSnn>87V;!lxz~&T9`#fDrGOGtEQRjwlBWyZvQ@< zbJ@Am%$#%Q&fMMT55qn8oaZ_7|KBt7oM)c7NUE2#PSP>O6 zG>tUra*u+f-M~!zaR_Jxddu(`QPcnfW%^77p3Z?wZm0p?N#XYpFePIyxuFJl6?hTY z51ffOqA&({q6+*nK|zws=3`)CME@CJ8qk?FsjT56avsngGxi?PmMNob&=2gvE`X0n zfUkk;awL@(J_MS5MJ@w2=F2BHyx}Xd7T5<|mM@=N@JEfO;Slgro=kGYMZPNuFb+5X zTo5sK7HB4Z%PC@gz<(uhBEhy1c;2@60&6^Z-VfYb(o<$0_)J1hyUN3VeZaoiVOuY0 z(Au7qRPf}uHcZU-axLOD;8e_53s7+QZwj>UaM<<&yKH*`W@S^MT#?6t4KZUgfW;2~ zPk=7lUWmz@lJI$;J;%u|2IYzb6M%+d#vXO}4geq6_IO}{!#*hTMmM!+oRh-m7hp4R zSH##{4DqiL{I>whZF>o@Ex~qoXzqy~{OZCT}dd0Vq2k|)xx zB$&PEqnNQlpfAC<4j60OXNiy40Ov9spj@`tc}p+Z3hO7kV)o3VlEx(X%?;Ro;W)?A zfNgs<_Q^0_i0PjUtVrJQo&miwCa~R1$cKsK>14`4MB^ zV78km)B?W)7Xp7{F4-e7wvCu19ZXc8XZ03kKSHBZjZTk<| zIf`Shyw(@%vJ}|?ToE(g!SJOuK8q82q6fG+3z74Iw=p6{15RS9bek|W<*qaddJs=x zUKvyxrG3$b5pd9chTEM)yrZc^tFKpK`3I#$sk#Qx6 zq$GPpk>+yU6Vv|~a1W*;=PEMii9TREfd_yzf#)jVd#blLrp1%MbC8bcUf|6v+2n*( z*kX6u)p!K>EHgU!pdS0so>t^vz#`0RgAv^W6VQfvsL$k~c`|S}=3c#$>ON&ep%?fR zXvHo-R*zbv8lyczW`h5P$a0c_I$#zs3HTN`mJ1_46fjkY8Nd&~&zLf2G(3t_wUQo} zbShLJ>X0AMM)us)fJTD1f|kibQfR-_TR#4)KP?T}Pc z1%cBf^*gw9OPU(?bp@V#J?@X$_TI=FOBsF>7KihI+rynMk-mR5tHxi_e9ti}+~E@0 z<2kXfT_x~6$G@s|E|EJtCKbv55y%QYT)@14DTU)^Z_A=_g4iByE+nTGiP)!pB5Ot&(<1 h>am}#k|xCY`~%7Y-aiCzXMz9#002ovPDHLkV1ne+j|2b! diff --git a/public/images/module_icons/calendar.png b/public/images/module_icons/calendar.png deleted file mode 100644 index 254ba0f84e2d91e47adb3b6c3fcd4786b3b50e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|?P)+(ME z^1d^CzQ1_qec#!cMG`TO0ZB`eCih|MJ0^|qfw;DD109vLq8)lGSVXVocg4gCwyz-` zbwH!lJ{{A(9Ja4U6Dydwg(Q}=kff1y+8N+1P+LOZ;IwnV`3mKdbJ`ui?-JS#;47f* z9`n>UNO~%1O^1gyML9RfynbsX%>^2Na@va(Ow9G=#wx{}q*^461sW_!YIFK-Ntz0@ zFUOSeWz%M2hA>tG^aqaNXTYk{CtxDbz8n*~#(Tu7i5WtF4bT}Vo&^fPy4AOA`rRbr zAmd}%>RUIlW&?e6*0A@@Rf=w46Bsk+SHLuIk?3u=UoytWwDD=j=nnLeCB``ZB`K%q zEqC0Uk4SnQ!$&FJO3FIEb0%gG8A)-5#ZTY?@Bugj3D?MY@^fPThkM+3BjcH&htw9-P7Mp{VHNDE0C z?gz0QxazSfuF=*9Xir(!-9W2HUvI_m`EIux>0B#mxP^=WO`c=iX!8NuF3WdUfIe@u z;{n3_@1?8-=(nsGK5fBnRPE3@w4{Y3jkJ)YQ8k6QQ@ zc(hHxJ#+mKSn=rZ5Uui0<6mmJ0^HngrOQDHBP}Fpq=h7nsw$-5RVAN77MN#ei}_lB zQE^YA1sL>bo2~2H_@_U`?dYBW-*&F^8A*46#~!1kGn|o>A=*v4anRZ9lb4u3)re?& oYzUYk`VUCb*(Az!h$wgc1LZvggB$hqxc~qF07*qoM6N<$f@jmJs{jB1 diff --git a/public/images/module_icons/dashboard.png b/public/images/module_icons/dashboard.png deleted file mode 100644 index 1e12ea0552912aac67834b76625bef0527d34f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 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 diff --git a/public/images/module_icons/setup.png b/public/images/module_icons/setup.png deleted file mode 100644 index 18061df9592bd7fd58899b1a8b539297e4c9b459..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1809 zcmV+s2k!WZP)L68nN(D@j(ow!4MN4B+-IMh(;>`(h?I0F<6q827>_tRUIy}L3JQWU#{*nAFrxQ)fwus>T{{Qht-McdU{D{Q2kd3G74iu!H)Ii6P$&wS@3j(o?I>OWt|j$V+r(br z3Q~k%tXJs;_5u@1@>cPh~^CDnjfovbJJ1?=n zQ)U3TX-sMly&vk)>L&%BZN9o%eM`Mry;%LeI-;&q7ZjA+oUNzZj$#tgGegA6;1uAr z9JxOLe+Od(|QU90P0vjxETa1$+n$*3dQDZBjdd(He3W z08avo3-T8OYk_lX=z6CY9&ds=U7f3bt6&_wub!#yP=Bo+m6V;T{?gbio}c_?@n7|F z^#XOaI=R;_eS$II^RQa|y!y1^_TNr^pHCXRwxHaj*?PLs@biq7_bT-!^^{Eh9R-au zA-qVPr(UXFq+YAOTTN%98`lc~Z-HDva9&{P|dI!e9A zgL|GQ3^U4;ov3arXuxnHb8n5tHo>3N{wAb`jb%s{OA6#KE2(@){azAUGAadX}|ho^>^yW6*_jRx2X%&-Kq2g>XkMyzp3WW4Nb9LotEfaXpGO@>eo_r zO*6b@9L+b1fk<$3GH>xw$JB^h@3tvy_doxpJq(&PXk(z3lPA74|`1)CFQYRa8S{l#R zA(DQoHi-`bi@M;gim()T3OIw-y-u*;pc%w+m1dL`8sO0q`BC5_VwJD{r@?I1s#_(zyk)RhV zbY^i&J7X#@af;<eW%WsN>ohJ2Vt0Ot9jR0k9#qg?e z(*9fZog{6Adb0Y;I7pq?DN_CFPb@w^%3_r<9bA!+e97p=-y1QzdFG#_SD|ee-+GyC zL`IupRK3qQYB^Uu!8mUDvk`x&!j7D@+uJ48+IrjtENRQ*G{;8ZEW%69O`bCdPxyK} zid&?n6IW}dx7E!0*iRf#H`@HwMQc8IA6V9n3JS1c)}jK4~&CawXT zN&bb!Pl#Q?NR!IzqUpkMPD$R+flG<4#!TXT_VxnVe&B|Nb=OD3uDzkaoIdtotUPPV z>vH5DHbMejF~3gr)MMmad?N1nT@QSa{NGL-_bei=5Of7iZ;@>w8k4>Bv7)5RX2R4? z0DeUTEW3*F+)Ww)<^x{>&Li#|&7s~-xF`5ODw&~Z&lGu900000NkvXXu0mjfLoR6Y diff --git a/public/images/module_icons/stock.png b/public/images/module_icons/stock.png deleted file mode 100644 index 42c1453998c4c0cb10e55af959968768a5665876..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1555 zcmV+u2JHEXP)0Q4p0vS%g9LkU~9#y@)S8n1)6@2w72CZnc}Jh?RvFnPsJxY2LEyuZNlKS!bWU zJ$tRSw+H_)ocY$CHQ)c6`R1E%%^cKQ)NSf&wV-k$71S-Z<3Dx2+NZmT)mwT1-_VX0 z-~r$Z;5tqOsQuM1wy)MLON;PZrBXbzQZsK)?+m5KTgvaN#_U?jmMUk0XT=%W)(uCrYUn3<4^ zz_)e0H$1j25@zn)#BYOuYwFZr6D?}jt)MUP3+*$u7`U@ayNhTiTLcCiqt7G2nZTcQ za;=UOF?VBPKlmX&JIk@{Z|6L^K_8LfW5$`gj^u!^b?}slsp}zF#tLe z9t4~QY|TS}oS`(W0i_DLK>k_CwGPr6u$qqRpg{h0Fp{uKSE4s?J@6c`mhhR|+1L!R zcYPv`?@;??i2tg))TM?~5!BPvYt^~xC+go--r1OEA1I>)jEVI@z!|`1U_=-1?TPQM zjAa`zkr2&h5h7C0F8UY^oI^V3=5~2^l&xFJ*`SIUO>;&5KDoT!c8{ybwQ;oKb z#sJ`wyatpilHAeFJbl@Hg;J-Y}X(3or~A z1$<99k}sco-Uck9>n|>VKY))Dgx3+W-Knu$O^A2^a~p9_)kj^R{$BC@`j`5?dP!_| zv-)S1@7yEmO7$sqih7DVN_|Lu&FXh`Wo*kk1CxMP2zLgH2rl$_l*a=16HXUq11}K1 z+LjRZic%cmwS*i$Il_JG)ITTB$oGq*^R+smMw|ZX8*#L5iqCqgnY3BKh)t-E~+JiD}AQURC}ns)J^KoYG3vI6od~N{)^yAb#m;h1COla zFNg|e+wR}H)MwOT>fMp_{P_D7vHgQl{;me${p#E56NXvs*%gQ(hKr75 zn<0k7sY|20TU{9I3*-Cy)aB}92DdsXEtjkY%#GxFMWXxF)++6mtM|qFJL=|G9}$i3 zkx~EAl652djc}sThj4(^N{G#s7k@(uCvwEdQm${#sJ9ccrV{Jp-!X)({XO6jIv&#A zL^uX45jL<GAg&(dVaU)YtGefFYuo@bOdC zyVU0+;UV$)aP^S-R-?)1HK0XZVf+8t^{&$9-Z&F`)xpg$Aa5$s3d|v7oQHvpw5Jkd z2pMS!xR?5F_EV!#+2};zb^_^gHo5^=LAcd#Sjt<8{{hZT_cJF5q67c{002ovPDHLk FV1jD!<{SV3 diff --git a/public/images/module_icons/support.png b/public/images/module_icons/support.png deleted file mode 100644 index a4075057f423a58e874c26de525ee3a5a0d02ccc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmV-11x1{o$41z~8C3PKPXM3~-6G)c@yUGwU%!P>iX?slJZ z*M1y3=MNjsUh7+Xt>0ODy}oZZRB|*3d<5J8ECUYZ8TE@AIgo?E=fK^`{bArf`WSQ| zbDsqSm<@al%(*;Gs$Z>;d4Q?<8Z?FM1emICK?jHfOx2g51B6*L1~An`po@WfE48X- z4G@-zqG|`a8u$j-TB%iaOP!-0vYZYj{UcM)33XnQKU4ipeKiKM4$vQJ1{_qs&(txdK9J;3Rd*-p7t|#&kX1pys}ZoF zev(ti+7_FQnY_d5^ccu0pnGeCd@<+wn_BYoCL-0%v5;j!ch&^B!tqO!>K?=EiTM*z ztL}`2#IOz)(N{G9-lCq)Jokt?E6LBBh_c!e3)#ApiPdK{K<>yqb5y+}$;+FF@^nF+ zpFK2ZwHnv}Gz#t(&z0L`j?=Wv{gc4%q%9u+3nQK}0IclvPcAOegQ-5O*o&x()RW2c z-e^f*SFkPHCwKT4rU0jsfAk+h@0@G%yEW}B@Oor#b<$qoA>e7?sU&SVu&&^97UVgy zdQ}U7ZwZI|B6_7?ARE8|;O2tm{sv}GH1YI`1U8o_w-GqrFFgrij`#(*KGOaIa1(H_ zUwRVYJn%&U`}cu^knch7RZRna24+Oqo&n|qN8wTrdM|63I6#2cNC2UKdh%g{2XIn^ z?Fg^{7)=xUp(k%6_=aNu0iK}+5PH8SZzSwjXGYrZ0`4I!Isd7bA+I4cdMMKVEO0CE zQ#PYlU)L$X7UBT`){+AVy$iVkxW9n?HsIZMnY{@467YBd``>{zoeVl1wf+yi47^aV z%o+k{TlEU$6~KGIV+G5-MR-*^tA-PN>U7#+a78XESoT_Vd%@Gb>Na&!OdWLqu5i3p z?WB5pWZ60Dff9iG)T?6KSOu=qgVKkICU)2>vXH~2$~>b&}3iS`zTTx!18 z`iM=(FY0o~kJF=u_{Gr@a2k5B6kt)vVe{h-du+Py8-|`M>#xnzh$UXpqL5R)G&GiK zlg;4Epdt29r}kNJlF7SbjMnE=KIZuNV7qZzMcXW}OjL#3nW_AQ%?NL&aau)h8oAKd z1=$+p+;1~R-)Wqd)iL#vy5NdHV)#yGtIe-0I*rq^`c%EHZondtlWi{SGi`o^P>0T_ zPjmw=y^6X&hJY`DSp`oE?X(M6MVk|ST`GEL{t?&&T&!5{2=FMu>C{y~p!D8#iQzMn zqB^ZUr%vnU>zTc(6rOJQj3h>5hRJKj<%FvPGQI9HEZlipxxdtR44Z|^4wqha`dx>B nl>{%_Jc7sVZQyua6_nM#Gmnl9VA󃔀NkvXXu0mjfI>>KR diff --git a/public/images/module_icons/todo.png b/public/images/module_icons/todo.png deleted file mode 100644 index b7c056b7fe7b139363b09fae7be84393c1b46778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1266 zcmVvMehgBRFGx(C=3iUaf+I#=|K@aAfgXR^g;APr4*tKjx%%reOTvm zk9W>J=j?s=ow@f12kzZ_ueJ97oO3s8uYC)W0H)D=3sNZOdwZd6j2BnqdNoF%diyBm|q4B$iH5)az}U};O(`2^<_;0yc&z7Jdt3^lUIGk~vw3q5Q% zV_DEqfJPNL8xwe*hixBlD==1SXhf0oFo9=z*ggr|OT`+~8emc(xfu8eILX8I0pO*i zjx>=2MDO$jaXGLPnC@s-1nvMfR2`w@jAy%~sY=M`>vVNVI+8P!iE~ua@+|*JA~(y@ zr->5SEosC<;E<%wJTWRozN+#zrbp72*!Ox|J+frlm4lKl%^N2!@~K$InwZ1BItg6s zAx@I^OPU|~I5YB-OXTWU<8uj)9}O%pDMlXlNtzS+m@R3Kq)mB6A}c4no)X~h0OGP@ zr16KOS&^T4lKza^bBk=1v^670QPPby2+R|s8ox@K8TnZt>7Q6%E|JqD?aCQ!MA8xu zfi5vB`Cd|c>FLDHaOj1q&9J(3nl8crCKDY6CV#VxaG z1Nwmra*S;UJ_9au@L!@I=mZW$-{)f00cTo(Pq7li_@ZoeW&oc6=cbIA3494$mz*|2Q0xV0d=QZA?p?FNge{O0(J+C z`7dw^HdI zBTg`Uj|p}Fw`YtQz<$REJ!1r;ma~wJz=Ku#wi6wj)!;uEwI2Aq2s~TSwh6e7i9KRS zCF{VagY-q_Z(t2@GWPoR0;{n6w*x2ym}3doyts_YyAU7VRJqhxI+G|!T33TlSDbbs zKCHm@phfH-8dHF`urtDjA;kIQLs%x%hy4X*Spc6w33bx^0`LP3C=kMlERe56IVm*a ce+Gi{KiU;ZWMpA_@Bjb+07*qoM6N<$f=B2vpa1{> diff --git a/public/images/module_icons/website.png b/public/images/module_icons/website.png deleted file mode 100644 index 11064de9f9381557d1d7590e1bb0a16c50f34f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2021 zcmV932xAx6EWT(H}~jAEQRp$+!&}#U%oQ3%KHj!3||~8(9PqxaaXl zb$h?ATh*sepK}S(H>sSy^}Y4g_jXrxRae!m0O|z{l61PH!z8tPX{e+hB(3(+r;?tL z^i8XSskBh!2uV|tG(pnNC4AH*y(a1DBrR=8WI(g26Iev=;C)~kP-!N{X2cx>%;_a@ zKHdOMEE{W?Li+>%-Y(L5;#uJE0x>ovvJ+TWBDkM{nO@$bz?KreegZCNB<@B8UJG=U z2TG2Py%$TNw*WZnRVd;F`t;D(eGISSW8Qe5xZ`vU*T5qe=!kp}=9 zB2E_2{US+I8}OCk+#jl_phy8T3}<=b-xoSB65nRvh$13m1N~C6%_mKhJYJ7V8Wj0Q zk9R_VGZ^?N66bS1zv@k8$4WXUFva~&Qm3Tv1GbaQ^*l-MH94JrOVS7C?-K%?A0$my z_>1LKFQy(M{}!ouy4%PR*B^Z>miuat!8X--IlMBk{zCmS#hXd;afGA;rS3j?R>Z*=Nh>5hDCvAj zdwX`l5=SCiR2p zboa|2fm49L;)aOz1!J8Lr~>RE*CcoH?!rPzhf3P5z+LZ>v`EsrB&`ixw@doFDRY^m z&2o!g10!i{Ag&m`lIwOBHA(Fi;9_N8*(o|CtxPJKl%!)NwH2&%d*FRZk4bt&PS6(t z&h$1(qXLGXB`r@1zM7<)B@K{tqMYEVl7_cD>^N4*_4~Jz^p0FBu~;c-A208qHo0cx z<8wKIJ~l}DZ<01ix-QATN79p$21^=}{Q7CQ+&XNE#ge|2v|g?`r@!|4e5EfB=>bW9 z3B+WvK+-fXuRSI*HoLJHXs*AIG^Y;#IJq^|6jSBijCrtc&0Pz`v?P$%UR7A+Cj}f@ zky{Gz%fR|AA~H0$j*4vbNp3B`F9YkhDUpK$h7|=I4lvi-3h>Lo`t4VMzafw}s4Ca_ zeH3xH(Oma0z%K*q_oo8<&;$FnDrrp}=P`U|u7?!hm%(6j?GG0r3=QP1sVY1H-@kxE z+x`bfS7UB>J0DhLZ#_xtcU>LsIg{BFF z0`?uHx%QWIi`x^9zau!l=On!bZM5{#^_6OK>18NPfpl8mH_y9m7^hd$!57 z^*NGG^9Wx``Y6e_3tj`%b471oNi*ao(e@m`DoJ0zfqrXQ%62R=A!xHZ%c+&0B!R_anQC@M5IQ2)xz0mjk34a3ta7i9TeP z^w;4wWIo63KsCBy+m)32Eb(JEkY?hRKO0%CTa)g-Wy zxF&Ul=l48dG_E@gB)enSMUe`2CcCI~X-+VWEM%Qzckg+>$Zo11~Lk&5h|;%hAudAH#`9^s6|9g+wkvltyJ{BWe;N?`8*|1ytv zSd${#fE9)}J-}&C;t64v&kt470j!NUSV+(P$>AR7A5Drp*KlgM^90u3kMNcTxP6lz zH#yc^CKG=OiD}6bDd2$|ryFs@K+1j0*w)jt|JD;(!EF^+fh1JV~&a2OLk&Lk%+<6nVX|ZN$A?CJ;X#kfP~xJZVQSaw2OM@T!+Lv7pG~ z$=;ynffowY*^(1kHkCPB_dRer`69=W9WsidrDyAGDsxJ*3wOruUN8R++(e?$8`rC+ zB-8YpKksVOZ~EkNs0r`TXV8Ba|4q>+-|(00000NkvXXu0mjf DyKuZj diff --git a/public/images/sprite-desktop.png b/public/images/sprite-desktop.png deleted file mode 100644 index cb8fc6ecfef0ac09e7b9ddb1bae1ddc9d7f420a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30354 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%0Dr5w p. -erpnext.modules = { - 'Selling': 'selling-home', - 'Accounts': 'accounts-home', - 'Stock': 'stock-home', - 'Buying': 'buying-home', - 'Support': 'support-home', - 'Projects': 'projects-home', - 'Manufacturing': 'manufacturing-home', - 'Website': 'website-home', - 'HR': 'hr-home', - 'Setup': 'Setup', - 'Activity': 'activity', - 'To Do': 'todo', - 'Calendar': 'calendar', - 'Messages': 'messages', - 'Knowledge Base': 'questions', -} - -wn.provide('wn.modules'); -$.extend(wn.modules, erpnext.modules); -wn.modules['Core'] = 'Setup'; - -wn.module_css_classes = { - 'red': { start: '#A90329', middle: '#8F0222', end: '#6D0019' }, - 'brown': { start: '#723e02', middle: '#633501', end: '#4a2700' }, - 'green': { start: '#4b5602', middle: '#3f4901', end: '#313800' }, - 'blue': { start: '#026584', middle: '#025770', end: '#004256' }, - 'yellow': { start: '#be7902', middle: '#a66a02', end: '#865500' }, - 'purple': { start: '#4d017d', middle: '#410169', end: '#310050' }, - 'ocean': { start: '#02a47e', middle: '#018d6c', end: '#006a51' }, - 'pink': { start: '#a40281', middle: '#8d016e', end: '#6a0053' }, - 'grey': { start: '#545454', middle: '#484848', end: '#363636' }, - 'dark-red': { start: '#68021a', middle: '#590116', end: '#440010' }, - 'leaf-green': { start: '#b0a400', middle: '#968c00', end: '#726a00' }, - //'dark-blue': { start: '#023bae', middle: '#013295', end: '#002672' }, - 'bright-green': { start: '#03ad1f', middle: '#02941a', end: '#007213' }, - 'bright-yellow': { start: '#ffd65e', middle: '#febf04', end: '#ed9017' }, - 'peacock': { start: '#026584', middle: '#026584', end: '#322476' }, - 'violet': { start: '#50448e', middle: '#473b7f', end: '#3a3169' }, - 'ultra-dark-green': { start: '#014333', middle: '#01372b', end: '#002a20' }, -} - -wn.module_css_map = { - 'Accounts': 'blue', - 'Selling': 'green', - 'Stock': 'yellow', - 'Buying': 'red', - 'Support': 'purple', - 'HR': 'ocean', - 'Projects': 'violet', - 'Manufacturing': 'dark-red', - 'Website': 'leaf-green', - 'Activity': 'brown', - 'Setup': 'grey', - 'To Do': 'bright-yellow', - 'Messages': 'pink', - 'Calendar': 'peacock', - 'Knowledge Base': 'ultra-dark-green' -} - -wn.get_module_color = function(module) { - try { - var color = wn.module_css_classes[wn.module_css_map[module]].middle; - } catch(e) { - var color = "#000"; - } - return color; -} - +$.extend(wn.modules, { + "Selling": { + link: "selling-home", + color: "#3f4901", + icon: "icon-tag" + }, + "Accounts": { + link: "accounts-home", + color: "#025770", + icon: "icon-money" + }, + "Stock": { + link: "stock-home", + color: "#a66a02", + icon: "icon-truck" + }, + "Buying": { + link: "buying-home", + color: "#8F0222", + icon: "icon-shopping-cart" + }, + "Support": { + link: "support-home", + color: "#410169", + icon: "icon-phone" + }, + "Projects": { + link: "projects-home", + color: "#473b7f", + icon: "icon-tasks" + }, + "Manufacturing": { + link: "manufacturing-home", + color: "#590116", + icon: "icon-magic" + }, + "Website": { + link: "website-home", + color: "#968c00", + icon: "icon-globe" + }, + "HR": { + link: "hr-home", + color: "#018d6c", + label: "Human Resources", + icon: "icon-group" + }, + "Setup": { + link: "hr-home", + color: "#484848", + icon: "icon-wrench" + }, + "Activity": { + link: "activity", + color: "#633501", + icon: "icon-play" + }, + "To Do": { + link: "todo", + color: "#febf04", + icon: "icon-check" + }, + "Calendar": { + link: "calendar", + color: "#026584", + icon: "icon-calendar" + }, + "Messages": { + link: "messages", + color: "#8d016e", + icon: "icon-comments" + }, + "Knowledge Base": { + link: "questions", + color: "#01372b", + icon: "icon-question-sign" + }, + +}); wn.provide('erpnext.module_page'); diff --git a/public/js/startup.css b/public/js/startup.css index c367cbb8f0..88ebedd250 100644 --- a/public/js/startup.css +++ b/public/js/startup.css @@ -60,25 +60,4 @@ span, div, td, input, textarea, button, select { .show-all-reports { margin-top: 5px; font-size: 11px; -} - -.small-module-icons-accounts{ background-position: 0 0; width: 14px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-selling{ background-position: 0 -67px; width: 14px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-calendar{ background-position: 0 -134px; width: 15px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-feed{ background-position: 0 -263px; width: 14px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-hr{ background-position: 0 -330px; width: 17px; height: 14px; margin-top: -1px; } -.small-module-icons-kb{ background-position: 0 -394px; width: 10px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-messages{ background-position: 0 -461px; width: 17px; height: 11px; } -.small-module-icons-manufacturing{ background-position: 0 -522px; width: 17px; height: 14px; margin-top: -1px; } -.small-module-icons-projects{ background-position: 0 -586px; width: 17px; height: 10px; } -.small-module-icons-buying{ background-position: 0 -646px; width: 17px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-setup{ background-position: 0 -713px; width: 16px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-stock{ background-position: 0 -780px; width: 14px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-support{ background-position: 0 -847px; width: 17px; height: 17px; margin-top: -2px; margin-bottom: -2px; } -.small-module-icons-todo{ background-position: 0 -914px; width: 17px; height: 15px; margin-top: -1px; margin-bottom: -1px; } -.small-module-icons-website{ background-position: 0 -979px; width: 17px; height: 17px; margin-top: -2px; margin-bottom: -2px; } - -.small-module-icons { - background-image: url("../app/images/module-icons-small.png"); - display: inline-block; } \ No newline at end of file diff --git a/public/js/toolbar.js b/public/js/toolbar.js index fa835692c4..e228826370 100644 --- a/public/js/toolbar.js +++ b/public/js/toolbar.js @@ -59,7 +59,7 @@ erpnext.toolbar.add_modules = function() { wn.boot.modules_list = JSON.parse(wn.boot.modules_list); } else - wn.boot.modules_list = keys(erpnext.modules).sort(); + wn.boot.modules_list = keys(wn.modules).sort(); // add to dropdown for(var i in wn.boot.modules_list) { @@ -68,8 +68,8 @@ erpnext.toolbar.add_modules = function() { if(m!='Setup' && wn.boot.profile.allow_modules.indexOf(m)!=-1) { args = { module: m, - module_page: erpnext.modules[m], - module_label: m=='HR' ? 'Human Resources' : m + module_page: wn.modules[m].link, + module_label: wn.modules[m].label || m } $('.navbar .modules').append(repl('
  • Date: Fri, 21 Dec 2012 16:02:36 +0530 Subject: [PATCH 2/8] fixed remove from locals --- stock/doctype/stock_entry/stock_entry.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js index e4362f8e5b..724b215d3f 100644 --- a/stock/doctype/stock_entry/stock_entry.js +++ b/stock/doctype/stock_entry/stock_entry.js @@ -44,8 +44,10 @@ erpnext.stock.StockEntry = erpnext.utils.Controller.extend({ clean_up: function() { // Clear Production Order record from locals, because it is updated via Stock Entry - if(this.frm.doc.production_order && this.frm.doc.purpose == "Manufacture/Repack") { - wn.model.clear_doclist("Production Order", this.frm.doc.production_order); + if(this.frm.doc.production_order && + this.frm.doc.purpose == "Manufacture/Repack") { + wn.model.remove_from_locals("Production Order", + this.frm.doc.production_order); } }, From d3c9fb6b3b0814cbb3d5cd9f99838501b71fc8fa Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Dec 2012 18:27:40 +0530 Subject: [PATCH 3/8] changed desktop modules now using font-awesome instead of noun project fonts --- home/page/activity/activity.js | 2 ++ home/page/latest_updates/latest_updates.js | 1 + hr/doctype/leave_application/leave_application.js | 2 +- public/js/modules.js | 5 ++++- setup/page/setup/setup.js | 5 ++++- utilities/page/messages/messages.js | 3 +++ utilities/page/question_view/question_view.js | 4 +++- utilities/page/questions/questions.js | 2 ++ utilities/page/todo/todo.js | 2 ++ 9 files changed, 22 insertions(+), 4 deletions(-) diff --git a/home/page/activity/activity.js b/home/page/activity/activity.js index 6746919640..3443cc245f 100644 --- a/home/page/activity/activity.js +++ b/home/page/activity/activity.js @@ -1,5 +1,7 @@ wn.pages['activity'].onload = function(wrapper) { wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.layout-appframe')); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules["Activity"].icon); wrapper.appframe.title('Activity'); var list = new wn.ui.Listing({ diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js index f996b350c4..47d08c7c85 100644 --- a/home/page/latest_updates/latest_updates.js +++ b/home/page/latest_updates/latest_updates.js @@ -2,6 +2,7 @@ erpnext.updates = [ ["21st December 2012", [ "Manufacturing: For Material Transfer against Production Order, \ fetch quantity pending to be transferred for each item." + "Desktop: New Icons and now sortable by dragging." ]], ["20th December 2012", [ "Website: Create Product Search Page, Product Group Page on the website.", diff --git a/hr/doctype/leave_application/leave_application.js b/hr/doctype/leave_application/leave_application.js index 7253bdba0a..63b5e6e0f6 100755 --- a/hr/doctype/leave_application/leave_application.js +++ b/hr/doctype/leave_application/leave_application.js @@ -47,7 +47,7 @@ cur_frm.cscript.refresh = function(doc, dt, dn) { } else { cur_frm.set_intro("This Leave Application is pending approval. Only the Leave Apporver can update status.") cur_frm.toggle_enable("status", false); - if(!doc.__islocal) cur_frm.frm_head.appframe.buttons.Submit.toggle(false); + if(!doc.__islocal) cur_frm.frm_head.appframe.buttons.Submit.remove(); } } else { if(doc.status=="Approved") { diff --git a/public/js/modules.js b/public/js/modules.js index c90aac6785..752d3699fd 100644 --- a/public/js/modules.js +++ b/public/js/modules.js @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +wn.home_page = "desktop"; $.extend(wn.modules, { "Selling": { link: "selling-home", @@ -62,7 +63,7 @@ $.extend(wn.modules, { icon: "icon-group" }, "Setup": { - link: "hr-home", + link: "Setup", color: "#484848", icon: "icon-wrench" }, @@ -102,6 +103,8 @@ erpnext.module_page.setup_page = function(module, wrapper) { $(wrapper).find("a[title]").tooltip({ delay: { show: 500, hide: 100 } }); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules[module].icon); } // hide list links where the user does diff --git a/setup/page/setup/setup.js b/setup/page/setup/setup.js index 16c60adcac..a1b9f2df3f 100644 --- a/setup/page/setup/setup.js +++ b/setup/page/setup/setup.js @@ -15,7 +15,10 @@ // along with this program. If not, see . pscript.onload_Setup = function(wrapper) { - wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Setup'); + wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'Setup'); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules["Setup"].icon); + erpnext.module_page.hide_links(wrapper); if(wn.boot.expires_on) { $(wrapper).find(".layout-main") diff --git a/utilities/page/messages/messages.js b/utilities/page/messages/messages.js index 1da5bf4a06..4d77e16e6d 100644 --- a/utilities/page/messages/messages.js +++ b/utilities/page/messages/messages.js @@ -31,6 +31,9 @@ wn.pages.messages.onload = function(wrapper) {

    \
  • \
    ').appendTo($(wrapper).find('.layout-main-section')); + + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules["Messages"].icon); erpnext.messages = new erpnext.Messages(wrapper); erpnext.toolbar.set_new_comments(0); diff --git a/utilities/page/question_view/question_view.js b/utilities/page/question_view/question_view.js index 4b63c99e9e..ea1a2dc70a 100644 --- a/utilities/page/question_view/question_view.js +++ b/utilities/page/question_view/question_view.js @@ -17,7 +17,9 @@ pscript['onload_question-view'] = function(wrapper) { wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.layout-appframe')); wrapper.appframe.title('Question'); - wrapper.appframe.add_module_tab('Knowledge Base'); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_module_breadcrumb("Knowledge Base"); + wrapper.appframe.add_breadcrumb("icon-file"); wrapper.add_answer_area = $('.add-answer-area').get(0); } diff --git a/utilities/page/questions/questions.js b/utilities/page/questions/questions.js index fced563d66..0e88728d22 100644 --- a/utilities/page/questions/questions.js +++ b/utilities/page/questions/questions.js @@ -18,6 +18,8 @@ pscript.onload_questions = function(wrapper) { body = $(wrapper).find('.layout-main-section').get(0); wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.layout-appframe')); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules["Knowledge Base"].icon); wrapper.appframe.title('Knowledge Base'); // kb diff --git a/utilities/page/todo/todo.js b/utilities/page/todo/todo.js index 0617b4e292..cad5fbd28b 100644 --- a/utilities/page/todo/todo.js +++ b/utilities/page/todo/todo.js @@ -185,6 +185,8 @@ erpnext.todo.save = function(btn) { wn.pages.todo.onload = function(wrapper) { // create app frame wrapper.appframe = new wn.ui.AppFrame($(wrapper).find('.appframe-area'), 'To Do'); + wrapper.appframe.add_home_breadcrumb(); + wrapper.appframe.add_breadcrumb(wn.modules["To Do"].icon); wrapper.appframe.add_button('Refresh', erpnext.todo.refresh, 'icon-refresh'); wrapper.appframe.add_button('Add', function() { erpnext.todo.make_dialog({ From acc36be87fa7b697482ad4eb787a46fef7eecfc7 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 21 Dec 2012 20:57:03 +0530 Subject: [PATCH 4/8] patch to fix deleted contact and addresses --- .../december_2012/deleted_contact_address_patch.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 patches/december_2012/deleted_contact_address_patch.py diff --git a/patches/december_2012/deleted_contact_address_patch.py b/patches/december_2012/deleted_contact_address_patch.py new file mode 100644 index 0000000000..3eb1b37eee --- /dev/null +++ b/patches/december_2012/deleted_contact_address_patch.py @@ -0,0 +1,12 @@ +import webnotes +def execute(): + """finds references of deleted addresses and contacts and deletes these references""" + import webnotes.model + + for dt in ["Address", "Contact"]: + link_fields = webnotes.model.get_link_fields(dt) + for parent, lf in link_fields: + webnotes.conn.sql("""update `tab%s` ref set `%s`=null + where ifnull(`%s`, '')!='' and not exists ( + select * from `tab%s` where name=ref.`%s`)""" % \ + (parent, lf, lf, dt, lf)) \ No newline at end of file From 5ade7ca570eafa5bf185459412cf6aa80f6ab76a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Dec 2012 21:40:19 +0530 Subject: [PATCH 5/8] 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 6/8] 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 7/8] 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 8/8] 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");