<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Scott - I'd like suggest the following 3 style tweaks to the nav for the sake of alignment. This will make the non-tree nodes (Dashboard and Networks) have the same spacing and alignment as the tree parts.</div><div><br></div><div>The result is shown in the attached image</div><div><img height="168" width="468" apple-width="yes" apple-height="yes" src="cid:1BDA5DEF-F22C-4EBC-A7A2-226A9795D09F"></div><div><br></div><div><br></div><div>Complete new styles as follows - changes in red if you view this as html. A couple of declarations were removed.</div><div><br></div><div><div><div><br></div><div><div>/* ----- tree.css (line 5) pushes tree down 1 px-------- */</div><div><br></div><div><div>.nav-tree {</div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>bottom:140px;</div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>overflow:auto;</div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>position:absolute;</div><div><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" color="#FF0000"> </font></span><font class="Apple-style-span" color="#FF0000">top:51px;</font></div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>width:222px;</div><div>}</div></div></div><div><br></div><div>/* ----- tree.css (line 92) adds top and bottom padding, removes "top" position attribute -------- */</div><div><br></div><div><div>.nav-dashboard {</div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>background-image:url(../../images/icon_dashboard.png);</div></div></div><div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>background-position:left center;</div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>background-repeat:no-repeat;</div><div><span class="Apple-tab-span" style="white-space: pre; "><font class="Apple-style-span" color="#FF0000"> </font></span><font class="Apple-style-span" color="#FF0000">padding:4px 0 4px 28px;</font></div><div><span class="Apple-tab-span" style="white-space: pre; "> </span>position:absolute;</div><div>}</div></div></div><div><br></div><div><br></div><div>/* ----- tree.css (line 102)adds top and bottom padding, pushes top down 3 px -------- */</div><div><br></div><div><div>.nav-networks {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>background-image:url(../../images/icon_networks.png);</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>background-position:left center;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>background-repeat:no-repeat;</div><div><font class="Apple-style-span" color="#FF0000"><span class="Apple-tab-span" style="white-space:pre"> </span>padding:4px 0 4px 28px;</font></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>position:absolute;</div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#FF0000"> </font></span><font class="Apple-style-span" color="#FF0000">top:28px;</font></div><div>}</div><div><br></div><div><br></div></div><div><div><br></div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div><br></div></div><div><br></div><br><div><div>On Jan 19, 2009, at 3:09 PM, Scott Seago wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Dashboard and networks have their own links in the nav.<br>Also updating reworked nav icons.<br><br>Signed-off-by: Scott Seago <<a href="mailto:sseago@redhat.com">sseago@redhat.com</a>><br>---<br> src/app/controllers/network_controller.rb | 13 +++++-<br> src/app/controllers/tree_controller.rb | 53 ++++++++++++++++---------<br> src/app/models/pool.rb | 12 +++++-<br> src/app/views/layouts/_navigation_tabs.rhtml | 9 ++++<br> src/app/views/layouts/_tree.rhtml | 23 +++++++++--<br> src/public/images/icon_add_hardwarepool.png | Bin 1223 -> 1133 bytes<br> src/public/images/icon_add_smartpool.png | Bin 1341 -> 948 bytes<br> src/public/images/icon_add_vmpool.png | Bin 838 -> 741 bytes<br> src/public/images/icon_dashboard.gif | Bin 14152 -> 0 bytes<br> src/public/images/icon_dashboard.png | Bin 0 -> 4457 bytes<br> src/public/images/icon_hdwarepool.png | Bin 1179 -> 4509 bytes<br> src/public/images/icon_networks.png | Bin 0 -> 4223 bytes<br> src/public/images/icon_smartpool.png | Bin 641 -> 4233 bytes<br> src/public/images/icon_smartpools.png | Bin 0 -> 4117 bytes<br> src/public/images/icon_smartpools_dir.png | Bin 0 -> 4228 bytes<br> src/public/javascripts/ovirt.tree.js | 43 ++++++--------------<br> src/public/stylesheets/ovirt-tree/tree.css | 27 +++++++++++--<br> 17 files changed, 119 insertions(+), 61 deletions(-)<br> delete mode 100644 src/public/images/icon_dashboard.gif<br> create mode 100644 src/public/images/icon_dashboard.png<br> create mode 100644 src/public/images/icon_networks.png<br> create mode 100644 src/public/images/icon_smartpools.png<br> create mode 100644 src/public/images/icon_smartpools_dir.png<br><br>diff --git a/src/app/controllers/network_controller.rb b/src/app/controllers/network_controller.rb<br>index 725e60d..e4faf7b 100644<br>--- a/src/app/controllers/network_controller.rb<br>+++ b/src/app/controllers/network_controller.rb<br>@@ -34,8 +34,17 @@ class NetworkController < ApplicationController<br> end<br><br> def list<br>- @networks = Network.find(:all)<br>- network_permissions<br>+ @networks = Network.find(:all)<br>+ network_permissions<br>+ respond_to do |format|<br>+ format.html {<br>+ render :layout => 'tabs-and-content' if params[:ajax]<br>+ render :layout => 'help-and-content' if params[:nolayout]<br>+ }<br>+ format.xml {<br>+ render :xml => @pool.to_xml(XML_OPTS)<br>+ }<br>+ end<br> end<br><br> def networks_json<br>diff --git a/src/app/controllers/tree_controller.rb b/src/app/controllers/tree_controller.rb<br>index 07d46f7..e2065ca 100644<br>--- a/src/app/controllers/tree_controller.rb<br>+++ b/src/app/controllers/tree_controller.rb<br>@@ -29,12 +29,19 @@ class TreeController < ApplicationController<br> @clientHash[tempItem[0]] = itemHash<br> }<br> end<br>- @serverHash = {:pools => build_json(HardwarePool.get_default_pool.full_set_nested(:method => :json_hash_element,<br>- :privilege => Permission::PRIV_VIEW, :user => get_login_user))<br>- }<br>- @serverHash[:smart_pools] = adjust_smart_pool_list(build_json(DirectoryPool.get_smart_root.full_set_nested(:method => :json_hash_element,<br>- :privilege => Permission::PRIV_VIEW, :user => get_login_user,<br>- :smart_pool_set => true)))<br>+ pools = build_json(<br>+ HardwarePool.get_default_pool.full_set_nested(<br>+ :method => :json_hash_element,<br>+ :privilege => Permission::PRIV_VIEW,<br>+ :user => get_login_user))<br>+ smart_pools = adjust_smart_pool_list(<br>+ build_json(<br>+ DirectoryPool.get_smart_root.full_set_nested(<br>+ :method => :json_hash_element,<br>+ :privilege => Permission::PRIV_VIEW,<br>+ :user => get_login_user,<br>+ :smart_pool_set => true)))<br>+ @serverHash = {:pools => smart_pools + pools }<br> @ids.each { |item|<br> if @clientHash.has_key?(item.to_s)<br> @clientHash.delete(item.to_s)<br>@@ -69,19 +76,27 @@ class TreeController < ApplicationController<br> end<br><br> def adjust_smart_pool_list(list)<br>- mySmartPools = Array.new<br>- otherSmartPools = Array.new<br>- list.each {|listItem|<br>- if (listItem[:name] == get_login_user)<br>- if listItem.has_key?(:children)<br>- listItem[:children].each {|item|<br>- mySmartPools.push(item)<br>- }<br>+ # list should have a single element. If it doesn't, don't transform anything here<br>+ if list.size == 1<br>+ smart_root = list[0]<br>+ smart_root[:name] = "Smart Pools"<br>+ smart_root[:type] = "SmartPoolRoot"<br>+ mySmartPools = Array.new<br>+ otherSmartPools = Array.new<br>+ smart_root[:children].each {|listItem|<br>+ if (listItem[:name] == get_login_user)<br>+ if listItem.has_key?(:children)<br>+ listItem[:children].each {|item|<br>+ item[:parent_id] = smart_root[:id]<br>+ mySmartPools.push(item)<br>+ }<br>+ end<br>+ else<br>+ otherSmartPools.push(listItem)<br> end<br>- else<br>- otherSmartPools.push(listItem)<br>- end<br>- }<br>- mySmartPools + otherSmartPools<br>+ }<br>+ smart_root[:children] = mySmartPools + otherSmartPools<br>+ end<br>+ list<br> end<br> end<br>diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb<br>index 614325a..27cc7ab 100644<br>--- a/src/app/models/pool.rb<br>+++ b/src/app/models/pool.rb<br>@@ -243,7 +243,9 @@ class Pool < ActiveRecord::Base<br> current_id = opts.delete(:current_id)<br> opts.delete(:order)<br> subtree_list = full_set(opts)<br>- subtree_list -= [self] if smart_pool_set<br>+ if (smart_pool_set and !subtree_list.include?(self))<br>+ subtree_list.unshift(self)<br>+ end<br> subtree_list = Pool.send(type, subtree_list) if type<br> return_tree_list = []<br> ref_hash = {}<br>@@ -260,7 +262,13 @@ class Pool < ActiveRecord::Base<br> pool_parent = pool.parent<br> parent_element = pool_parent.send(method)<br> ref_hash[pool_parent.id] = parent_element<br>- return_tree_list << parent_element<br>+ smart_root = ref_hash[pool_parent.parent_id]<br>+ if smart_root<br>+ smart_root[:children] ||= []<br>+ smart_root[:children] << parent_element<br>+ else<br>+ return_tree_list << parent_element<br>+ end<br> parent_element[:children] ||= []<br> parent_element[:children] << new_element<br> else<br>diff --git a/src/app/views/layouts/_navigation_tabs.rhtml b/src/app/views/layouts/_navigation_tabs.rhtml<br>index 8d9e36a..70af098 100644<br>--- a/src/app/views/layouts/_navigation_tabs.rhtml<br>+++ b/src/app/views/layouts/_navigation_tabs.rhtml<br>@@ -60,4 +60,13 @@<br> <ul id="dashboard_nav_tabs" class="ui-tabs-nav"><br> <li id="nav_summary" class="ui-tabs-selected"><%= link_to "Tasks", {:action => 'index', :nolayout => :true}, :title => "content area" %></li><br> </ul><br>+<% elsif controller.controller_name == "network" %><br>+ <script><br>+ $(document).ready(function(){<br>+ $tabs = $("#network_nav_tabs").tabs();<br>+ });<br>+ </script><br>+ <ul id="network_nav_tabs" class="ui-tabs-nav"><br>+ <li id="nav_summary" class="ui-tabs-selected"><%= link_to "Networks", {:action => 'list', :nolayout => :true}, :title => "content area" %></li><br>+ </ul><br> <% end %><br>\ No newline at end of file<br>diff --git a/src/app/views/layouts/_tree.rhtml b/src/app/views/layouts/_tree.rhtml<br>index 6129f0e..fa3effc 100644<br>--- a/src/app/views/layouts/_tree.rhtml<br>+++ b/src/app/views/layouts/_tree.rhtml<br>@@ -28,6 +28,20 @@<br> e.preventDefault();<br> }<br> })<br>+ $('div.nav-networks a').bind('click', function(e){<br>+ if(this === e.target){<br>+ var myURL = $(this).attr('href');<br>+ $('.current').removeClass('current');<br>+ $(this).parent().addClass('current');<br>+ $.ajax({<br>+ url: this.href,<br>+ dataType: 'html',<br>+ success: handleTabsAndContent,<br>+ error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);}<br>+ });<br>+ e.preventDefault();<br>+ }<br>+ })<br> $('#nav_tree_form ul.ovirt-tree li').livequery(<br> function(){<br> $(this)<br>@@ -36,6 +50,7 @@<br> $('#nav_tree_form ul.ovirt-tree li div').removeClass('current');<br> var thisHref = (urlObj[$(this).attr('class')] !=null) ? urlObj[$(this).attr('class')] + '/' + this.id :null;<br> $('div.nav-dashboard').removeClass('current');<br>+ $('div.nav-networks').removeClass('current');<br> $(this).toggleClass('current');<br> currentNode = this.id;<br> if ($tabs != null) {<br>@@ -87,14 +102,14 @@<br> <div class="nav-dashboard <%= selected %>"><br> <%= link_to "Dashboard", dashboard_url, { :id => "dashboard"} %><br> </div><br>+<% network_selected = "current" if controller.controller_name == "network" %><br>+<div class="nav-networks <%= network_selected %>"><br>+ <%= link_to "Networks", {:controller => "network", :action => "list", :ajax => true}, { :id => "networks"} %><br>+</div><br> <form id="nav_tree_form"><br> <div class="nav-tree"><br> <ul id="nav_tree" class="ovirt-tree"></ul><br> </div><br>- <div class="nav-smart-pool"><br>- <span class="nav-smart-pool-header">Smart Pools</span> <!--FIXME: replace with i18n text --><br>- <ul id="smart_nav_tree" class="ovirt-tree"></ul><br>- </div><br> </form><br><br> <!-- Template content --><br>diff --git a/src/public/images/icon_add_hardwarepool.png b/src/public/images/icon_add_hardwarepool.png<br>index 3e7431c9602cc829b712d12cccec89e87b90a09f..6eae0d566f10503c7a6a7f980a9d2b6d0e6353d0 100644<br>GIT binary patch<br>delta 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 --git a/src/public/images/icon_add_smartpool.png b/src/public/images/icon_add_smartpool.png<br>index d7cb7316596b1eafbcad54890971f42737d45a62..6bb07d7cca9839042a779bf8a7203b16bc6cb830 100644<br>GIT binary patch<br>delta 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 --git a/src/public/images/icon_add_vmpool.png b/src/public/images/icon_add_vmpool.png<br>index 6afffd1fb1a02dc763f9a9f1e6fff3c1586f89a2..b0b73b08c3c794d66da088abcbab978c434f15e2 100644<br>GIT binary patch<br>delta 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 --git a/src/public/images/icon_dashboard.gif b/src/public/images/icon_dashboard.gif<br>deleted file mode 100644<br>index 5ed7483685461cb65f00718a83b207af6187b545..0000000000000000000000000000000000000000<br>GIT binary patch<br>literal 0<br>HcmV?d00001<br><br>literal 14152<br>zcmeI3X;>3S9EVq{6|q7vZPki(iL{E6Y%Y#$2{&j}yr7Clku}*sB$r7r0kuW2#e-V#<br>z1QkJz7V!!dkBW+kC<s(7wTQJ85EZQj@hFE}-3WsEp?&6q-)5eDvYXlWKeO}B@9RwZ<br>zJkVW0j6g;r%?Q$EX`Rh&olje-tK)HVM?+IbeN)H7XYKc&wBLKue)~~dRYO~4eOtv}<br>zZRHQ1U%S^@QrlW|yX9ha%Y{E%OqDIi${LMV8;n=#5C8n|VDbG!#ShX-yHblgvkLDX<br>zD7?G%a{HE|w#`M)_Z8G`ywtMk(sP5kCZ(V$rJy<4+?1JL`JL%m)4`Oa{3l8IPt)^$<br>zN4k(Tc@1f&ZX}-mJMnaVd~RL*@%wSPbt{auD~+`)j@({;q~_^nP0YcnW!aUw?8@i^<br>zx1zIdY4%ktHQZ3`Em!QhF3Tv>r<<3gUyIy%RhxS5@mF)m)DrQwV$qhOMH?@Mr4-Cd<br>zI*-Sm#A8kf^v97j#7&p$wk+3m*)f;sV|;B+QaH&|8@Z~(Y~^9L;t-}d#FA%M2GW^P<br>z2W|z@oujgxmt>U(&?^Gy*Zt{TJf2g;{_zsS72jdwNCP72D)AZSD9XI(W#>p_T=29T<br>z8=m11mX3z)I486_BeeT?;r0_aZS?%KQK8#%1hk{>wj<|k$#%2Na<w(M*k<x<(z!Ni<br>z9Ggwp(2dy8QiN)y)b?2Ju)Q4v4qZb+gJz=sgqEQ09$tDCA&Mfk=wdQLst__B<>fO_<br>zsaVLE>k`BcQu&dQ(#f%EGB|d6h$uEnBoH&aJgq(SxL&T3lUf4R%Vi1;t`{;0v2rnq<br>zQ_q%ejDfyDv{6EakL3kwnbS|HCQ&|%!xXW3e3b9X;<|AKZm!N~Frh`K5DJv*hH}|#<br>z>W7PSI5?k!_B4j4HTC477EAEi{((JnQvZaENUc_dW0+2-W9fJ-r8)xR2m}I*&BeG}<br>zCPgqcF$yiAXDT#fy9aqWjz6gpsii8dRH;BM;}VON(OMycVVS76^(>B1^-iSFuwE>b<br>zB~r>UJ)y!lEH>6VGF9k7b>e<%lF%yEAxfppvwQi0QZ=bls-rZhUog+ZQu!LxH)~%#<br>zNo^77N%?SRviZ~%!sXyR7o5wT|4Mx~^hSA*QY@9kyk71e!m-ri9JikGSD>D956mLs<br>z6)`WYTh{bO|NjXSi+X*jqSdk&+aeZWq>Pl43ay56#(CYDScFTIYB{0xl*)++5{r;Z<br>zJg~mb|NOr0ucl%_#S-hy<;zd+-O9J}(C7WF4BtH{oCHWN)CF|`832M|x}Yu~13)lL<br>z7t{r000@TZg1UeV0KqU_P#2H^AQ+|#>H;zV1jBSeT|fqaV3;nb3&;Qv4ATX50T}>-<br>zVY;9$AOk=!Oc&GzWB>?;>4Lg|3;@9}T~HU00U#Kr3+e(g00hHyL0v!wfMA#|s0+vd<br>z5De1=bpaUwf?>L#E+7LyFiaQJ1!MpS{?Bw-_nq`071Z$#9d(YQUsq>Gd)xEYmgc5^<br>zo;`i?xbaa#{ofD&dT_t)-rYO3w`;1a{;d4t*6%kfZj}Fa{nxTzu3f$Ib7@KO<)Xq%<br>z7Yi<!P3QB^ojsFx`lnMTPaMxZ_G6Cm=#j&R4rU+7`eFY*!`?l+Gc$Ij@7%FHEp^-0<br>zEt@xOOiBKJ!*@yR*R5TX`0Y2V6XI9Jef`zS70Y8|^txryT8(<CN~w^`qLxS_BP66)<br>zw3rBA6!zu91@q^H&Ykl`Nbu}gGiOW>nl^RH=aVM|2Kf8=`gnVJ3Ox{9;O^$?!sl^0<br>zY>dTpo;bm2{J2j)aU9EVK*xMM+J4kWBS#GX@Pqg1!|Z6bHbdVVVm;Vu(7OW%ywkrQ<br>zf;hAe=r;&ik2qV-+E@;VAy!?;@WJ+zjhUtdEBb_mMMlEciMB5^XHUTT;h3cK)Y9NV<br>zh_4gkyUyOJY(rs!T~2t7d0=TOM^;gqwztk;a<W%{>s=EcICQl4I>)8vLW$1=flqSi<br>z<G@)P#`q=kSCtixH%$~wJ)c#Un@AfwZI^#Padh}r8^(0m@i-!35Pd>e(ahO%GPlx}<br>z43nQV`X^QKrPX(C#wQP1du9P|4Pn}wQ|o1wXYgJakWj^os4g<qj-#0|rsR(byE_S~<br>z$^G9OA4wx<W;RDw-RL78FcML|d*&u{H_gnADlb^8sk8bB>2K{A-WVS5u-egYziDN7<br>u^C;`Y%t=am91=g!1`QeEZAf>t$Cr0nG5oFUViFr`OEPBUdz#{q&;A8^{IuTy<br><br>diff --git a/src/public/images/icon_dashboard.png b/src/public/images/icon_dashboard.png<br>new file mode 100644<br>index 0000000000000000000000000000000000000000..57b933a8c84d500928f44a6156e4afdcb6dcf190<br>GIT binary patch<br>literal 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 0<br>HcmV?d00001<br><br>diff --git a/src/public/images/icon_hdwarepool.png b/src/public/images/icon_hdwarepool.png<br>index 76e0a288ebacf3ff615763f12bb2b3f53a27abc4..1e55305f45e55b87d0733c504a325aa52b7eb71f 100644<br>GIT binary patch<br>literal 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 --git a/src/public/images/icon_networks.png b/src/public/images/icon_networks.png<br>new file mode 100644<br>index 0000000000000000000000000000000000000000..a2a2b878e8c3d6b8bfc93bad0991cccfad7a3985<br>GIT binary patch<br>literal 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 0<br>HcmV?d00001<br><br>diff --git a/src/public/images/icon_smartpool.png b/src/public/images/icon_smartpool.png<br>index 4ed0af0d2f2da5b34d13491ebe06f64a9450b5ec..3a6688a7e0fb1e3dd1b4e177cc63c2c5296f1f0d 100644<br>GIT binary patch<br>literal 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 --git a/src/public/images/icon_smartpools.png b/src/public/images/icon_smartpools.png<br>new file mode 100644<br>index 0000000000000000000000000000000000000000..8dc3aa10ad4720ed1f4a25090ace122183ce8362<br>GIT binary patch<br>literal 4117<br>zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?<br>zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)<br>z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D<br>zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h<br>z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc<br>z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57<br>zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn<br>z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on@+P`F;8<br>zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I@QE<80UxFoRz>}hBK!5w7f<br>zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV@jC%1O*iw^gdpO-W5l<br>zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m@L>VWX&MMN-|4wQjv^;<br>zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO@Io_?DAwlJw56lP2C7yX{`QT)ZswUGh<br>zrO36SBr&B3mJKlFoij@+amxk)OAc@vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a<br>z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o<br>z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9<br>zr{$vbQw9d6Y)==*kcwMdruh2^2MQe9f7eX)lGru2SrQ@{+9q*RG~AlalX>KJBqUvG<br>zzPQ`%u&l4vJ=?-B2}z6CO^$T4^e-y9;Fh(9v71q8%C?YOTS~U4{=QauJ51~4e9@Fi<br>zC(q3`|NZvK_j`RGj@7gL-st`P`l@HHG80UN<n(^li^}DFo>O<QR{zo0miKaRrJ2g*<br>z{;%G!^V~hlmp5ANKmMH9y2^EC$+CqXG<I$mnV(ZUH%q8>&Ata8-z>go$<@5HR`@4N<br>z?VHrK>sl_AO22)x+vb{1=?l-<o7vlC<Yoj1|BA|$ZTXWeIP*sN67y*jCr_@bOExUn<br>zI;~>o<M7U>J2$S|Y@T?oePOEjfv`Ad-+IkDThX?&uNwEB?mh8GCx-d@sY7#WV;?@a<br>zmR9oT?&H_n{djl|UOaT*QR7@KRR-Snjgp><qCeZbzPa(eH%o5a9-pozU$N_U_1sCU<br>z3DG|!wH?mQoWSj?ym#r7&h1P2epfnu-Y}_fsq5aklY+CtHp~i8EQ@Io{B~#4$<Q@5<br>z^Y$G-S{`rSu5lpKcy&T0TcEJxo5YsAS(beVj&#(;U48dawt6yyu6nZOQGxRrCW(vI<br>z9=Ug`qxQvK`Ie$NyLiKdzeTk$Ilboba{S@q`q#!&roJUjE%x2JvMD#k|3_;tTFB3#<br>zfAsK{Pr-jLNA2IDuh)Iv^9$F}zfV>6KDgGfWM*!&rct7i=-edXrzfJcT(i$|$^Q&V<br>zZL)gyW~tF{m!QjYkJ}tS-+KK`s@(ex{kh6})~zXgZg~EqZCr8*hh*Y^L*3QsZ^U}P<br>zzxbOSmN6?Vcx_S9#1qC<Hi{ST&R~04*!;=v@S)!unT7x99$;vRv_Hco7|9OmsC&Bl<br>KxvX<aXaWFgIQ7o}<br><br>literal 0<br>HcmV?d00001<br><br>diff --git a/src/public/images/icon_smartpools_dir.png b/src/public/images/icon_smartpools_dir.png<br>new file mode 100644<br>index 0000000000000000000000000000000000000000..408aabc8f0cf0a74a30f58e1cd1d495011a71d7f<br>GIT binary patch<br>literal 4228<br>zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fk|nMYCBgY=CFO}lsSJ)O`AMk?<br>zp1FzXsX?iUDV2pMQ*D5n9Wp~AN+NuHtdjF{^%6m9^eS=-fVvqNZ0suv5|gu2OB9k)<br>z(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWUl3bOYY?-2DZ^va*VFffGH?<^D<br>zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!9>qU&qz1fz|2^|)L75h<br>z)X2=pL`T8Mz`#P^z+B(hK-bX1%D~jh#83eWl<c?^Y>HCStb$zJpw<C-wn`Z#B?VUc<br>z`sL;2dgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQAR{1VxTF>*7iAWdWaj57<br>zfXqxx$}cUkRZ;@VD?klTNrszUP+F7&HaR6(KQ$*cH#M)MSl>|3P#;-6FeHL9(=$qn<br>z;o9<wp`i>6Z~cnI0-zQH{UWd$6rBYb`6c<q8Tkd+b;6~=`jM^lEGS7f0on@+P`F;8<br>zuad!zEiOsXM^*vW4vr^??QjQM`6d=+rvl^JEitD!6>I@QE<80UxFoRz>}hBK!5w7f<br>zSXz>iUsN2BUz`aFN}xO_gcWR3lC2>A1al!l?wC^o;X$}LnV@jC%1O*iw^gdpO-W5l<br>zEX^rV(ueBM2gM3Zi;X_2fgtmfi&7Iy@{5ox2u>|TwE)E|m@L>VWX&MMN-|4wQjv^;<br>zSqx1rB)b)1o(&=-LyLj=F(kDpx0qTs;WXO@Io_?DAwlJw56lP2C7yX{`QT)ZswUGh<br>zrO36SBr&B3mJKlFoij@+amxk)OAc@vz+rkoa()UhnL-jU7Q;)5a2XzwniHO11S~_a<br>z>UGUc%)}=jS_G2?CkPvG(n2Z#fUyA)0~Rd6GEE;|s6kT`wEUqJ1r9A*84fdd)Dl=o<br>z5Jis$7g50kQ#2Y}u#g~%9t|#{f(fQ*G`L_PK@>e2Tto#EOcB1|;zD$bQuBcA<8ol9<br>zr{$vbQw9d6Tb?eCAr-f_O!fB=36wd$KR<1bN%_^QF@_smx9bQpYie^@vAPOKmaJ$F<br>z36NFNS{Pi?+0=J+VY2J;CZ?_4f+ZSWygq@6{L9vAzPoj5o!;(q>t4T^U1z-c^1D~><br>zma)r!e*V4g{oeEMzt`=*KRa>OvP5I4+a?=Szu3Gxk-6}382@b!gVTYsv(`T~j^J2x<br>z-zUD}SDN{U-$CzYt`mPzTa*?XP+LCj_@s|#*nN8?+pb^C+mkp;G)`Ejqc!|YjGoQB<br>zkcJZ*6y20B^7J27vb9*Id$wZ9lb$bGl0TPe8$4B?dH7`vThit1oTUf<hdtA7D&b>}<br>zldp-p`o^XHV5GJvgSeJf_e`G|6F>SKEd8)*X4CoPg1qUOeCHYUCK=0~D!aqgt}*-X<br>zh47Zz;uS0GlS<s3pX_w$Q=M#iVA7td?U84H*GhOLoSGrPskNfyZR-J%WS{Bmc2x=b<br>z;uo()H8#5Ymh+eP+Mnn!JiW1=EkE8qY}&Skd)8gOaBb^bC(otQw_?^`%(ts!-*`b~<br>zQR94zYYZCQo4<4B9gXliEa6@0*MCH2)odAw*K&=k|0*px!eWvtQ}fIA%84108$Yn*<br>zEX}(S+Z*t7u0+-CrK|5RJrGoun>j_r&_z)wQF~q6;)8wp=dCW*{1DMPZSmtzKvnWb<br>z#i*ADn(TS}@7os4tMOVW5nJu>L&<S!$lghDA{(ARVYDc-F#P#c_)+T7g0KsGKPOqn<br>zYaEsLx3A$A<mqE6d|UZo*Frzxue-iXbc>9ZOWCn(>b6~bm^#-t98Z40d2x@YnCEge<br>zi?qKRLqi#@Y&pbiwpxXRKH6~AgXKv?fX{rHXv>^QT&D9Hbe8^2soNi4U9s)ke)$=9<br>z^Q3P@pL(!P$Uykn49;2V>-Tv%)$VLKsc?MSH0=zVs@ZE_^C#7YtZ0b~o&KSCB8#)l<br>z$-021Z_B?lA6>NVyk7Q<e$Mrt^>xk(+<xn)Z~5W;Oy<)31=m@*cdh)tXFn4UgZg!k<br>UgMV2|)j{I|p00i_>zopr0BEclmjD0&<br><br>literal 0<br>HcmV?d00001<br><br>diff --git a/src/public/javascripts/ovirt.tree.js b/src/public/javascripts/ovirt.tree.js<br>index 13720b2..77d6c55 100644<br>--- a/src/public/javascripts/ovirt.tree.js<br>+++ b/src/public/javascripts/ovirt.tree.js<br>@@ -8,26 +8,19 @@ function processTree (){<br> $.each(response.deleted, function(name, value){<br> //FIXME: special case for other peoples smart pools<br> //come up with better way or split out somewhere.<br>- if($('#' + value.id).hasClass('SmartPool')) {<br>- if($("#smart_nav_tree > li > div.SmartPool").size() > 1) {<br>- $("#smart_nav_tree > li:first div").click();<br>- } else {<br>- $('#nav_tree > li:first > div').click();<br>+<br>+ //check if the li is the only one. If so, remove its container as well<br>+ if ($('#' + value.id).parent("li").siblings().size() === 0 ) {<br>+ if($('#' + value.id).is(':visible')) {<br>+ $('#' + value.id).parent("li").parent("ul").siblings("div").click();<br> }<br>+ $('#' + value.id).parent("li").parent("ul").remove();<br> } else {<br>- //check if the li is the only one. If so, remove its container as well<br>- if ($('#' + value.id).parent("li").siblings().size() === 0 ) {<br>- if($('#' + value.id).is(':visible')) {<br>- $('#' + value.id).parent("li").parent("ul").siblings("div").click();<br>- }<br>- $('#' + value.id).parent("li").parent("ul").remove();<br>- } else {<br>- if($('#' + value.id).is(':visible')) {<br>- $('#' + value.id).parent()<br>- .siblings('li:first')<br>- .children('div')<br>- .click();<br>- }<br>+ if($('#' + value.id).is(':visible')) {<br>+ $('#' + value.id).parent()<br>+ .siblings('li:first')<br>+ .children('div')<br>+ .click();<br> }<br> }<br> $('#' + value.id).parent().remove();<br>@@ -35,12 +28,10 @@ function processTree (){<br><br> if(processRecursive) {<br> $("#nav_tree").html(recursiveTreeTempl.process({"pools" : response.pools}));<br>- $("#smart_nav_tree").html(recursiveTreeTempl.process({"pools" : response.smart_pools}));<br> processRecursive = false;<br> } else {<br> // Loop through the items and decide if we need updated/new html for each item.<br> processChildren(response.pools, treeItemTempl);<br>- processChildren(response.smart_pools, treeItemTempl);<br> }<br> }<br> });<br>@@ -64,16 +55,8 @@ function processChildren(list, templateObj){<br> if ($('#' + data.parent_id).siblings('ul').size() > 0) {<br> $('#' + data.parent_id).siblings('ul').append(result);<br> } else {<br>- if (data.type === "SmartPool"){ //handle current user smart pools<br>- if($('#smart_nav_tree > li:has(ul)').size() > 0) {<br>- $(result).insertBefore('#smart_nav_tree > li:has(ul):first');<br>- } else {<br>- $('#smart_nav_tree').append(result);<br>- }<br>- } else {<br>- $('#' + data.parent_id).parent().append('<ul>' + result + '</ul>');<br>- $('#' + data.parent_id).siblings('span').addClass('expanded');<br>- }<br>+ $('#' + data.parent_id).parent().append('<ul>' + result + '</ul>');<br>+ $('#' + data.parent_id).siblings('span').addClass('expanded');<br> }<br> }<br> else {<br>diff --git a/src/public/stylesheets/ovirt-tree/tree.css b/src/public/stylesheets/ovirt-tree/tree.css<br>index 7d5411f..de019f4 100644<br>--- a/src/public/stylesheets/ovirt-tree/tree.css<br>+++ b/src/public/stylesheets/ovirt-tree/tree.css<br>@@ -1,12 +1,12 @@<br> #nav_tree {<br>- padding: 20px;<br>+ padding: 0px 20px;<br> }<br><br> .nav-tree {<br> width: 222px;<br> position: absolute;<br> overflow: auto;<br>- top: 25px;<br>+ top: 50px;<br> bottom: 140px;<br> }<br><br>@@ -44,6 +44,15 @@<br> background-image: url('../../images/icon_smartpool.png');<br> }<br><br>+.SmartPoolRoot {<br>+ padding: 4px 0 4px 28px !important;<br>+ background-image: url('../../images/icon_smartpools.png');<br>+}<br>+.DirectoryPool {<br>+ padding: 4px 0 4px 28px !important;<br>+ background-image: url('../../images/icon_smartpools_dir.png');<br>+}<br>+<br> .hitarea {<br> <span class="Apple-tab-span" style="white-space:pre"> </span>width: 16px;<br> <span class="Apple-tab-span" style="white-space:pre"> </span>margin-left: -16px;<br>@@ -81,11 +90,21 @@<br> }<br><br> .nav-dashboard {<br>- background-image: url('../../images/icon_dashboard.gif');<br>+ background-image: url('../../images/icon_dashboard.png');<br> background-repeat: no-repeat;<br> background-position: left;<br> padding: 0px 0 0px 28px;<br> position: absolute;<br> height: 25px;<br> top: 0;<br>-}<br>\ No newline at end of file<br>+}<br>+<br>+.nav-networks {<br>+ background-image: url('../../images/icon_networks.png');<br>+ background-repeat: no-repeat;<br>+ background-position: left;<br>+ padding: 0px 0 0px 28px;<br>+ position: absolute;<br>+ height: 25px;<br>+ top: 25px;<br>+}<br>-- <br>1.6.0.6<br><br>_______________________________________________<br>Ovirt-devel mailing list<br><a href="mailto:Ovirt-devel@redhat.com">Ovirt-devel@redhat.com</a><br>https://www.redhat.com/mailman/listinfo/ovirt-devel<br></div></blockquote></div><br></body></html>