From 6a0ca23577813a1534298f1af4dfa03c2bfcfc1a Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Thu, 1 Nov 2007 16:15:32 -0400 Subject: [PATCH] Update the UI look and feel --- ipa-server/configure.ac | 2 + .../ipa-gui/ipagui/static/css/style.css | 509 +++++++++++------- .../ipa-gui/ipagui/static/images/Makefile.am | 5 + .../ipagui/static/images/branding/Makefile.am | 14 + .../ipagui/static/images/branding/logo.png | Bin 0 -> 36347 bytes .../ipagui/static/images/template/Makefile.am | 20 + .../images/template/background-content.png | Bin 0 -> 194 bytes .../template/background-navbar-active.png | Bin 0 -> 610 bytes .../background-navbar-active_fullsize.png | Bin 0 -> 634 bytes .../images/template/background-navbar.png | Bin 0 -> 253 bytes .../template/background-navbar_fullsize.png | Bin 0 -> 251 bytes .../images/template/background-sidebar.png | Bin 0 -> 170 bytes .../static/images/template/background.png | Bin 0 -> 184 bytes .../ipa-gui/ipagui/templates/delegateedit.kid | 2 +- .../ipa-gui/ipagui/templates/delegateform.kid | 42 +- .../ipagui/templates/delegatelayout.kid | 5 +- .../ipa-gui/ipagui/templates/delegatelist.kid | 5 +- .../ipa-gui/ipagui/templates/delegatenew.kid | 4 +- .../ipa-gui/ipagui/templates/groupedit.kid | 10 +- .../ipagui/templates/groupeditform.kid | 38 +- .../ipa-gui/ipagui/templates/grouplayout.kid | 4 +- .../ipa-gui/ipagui/templates/grouplist.kid | 7 +- .../ipa-gui/ipagui/templates/groupnew.kid | 4 +- .../ipa-gui/ipagui/templates/groupnewform.kid | 21 +- .../ipa-gui/ipagui/templates/groupshow.kid | 15 +- .../ipa-gui/ipagui/templates/master.kid | 84 +-- .../ipa-gui/ipagui/templates/useredit.kid | 2 +- .../ipa-gui/ipagui/templates/usereditform.kid | 51 +- .../ipa-gui/ipagui/templates/userlayout.kid | 6 +- .../ipa-gui/ipagui/templates/userlist.kid | 12 +- .../ipa-gui/ipagui/templates/usernew.kid | 2 +- .../ipa-gui/ipagui/templates/usernewform.kid | 40 +- .../ipa-gui/ipagui/templates/usershow.kid | 29 +- .../ipa-gui/ipagui/templates/welcome.kid | 9 +- 34 files changed, 503 insertions(+), 439 deletions(-) create mode 100644 ipa-server/ipa-gui/ipagui/static/images/branding/Makefile.am create mode 100644 ipa-server/ipa-gui/ipagui/static/images/branding/logo.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/Makefile.am create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-content.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-navbar-active.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-navbar-active_fullsize.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-navbar.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-navbar_fullsize.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background-sidebar.png create mode 100644 ipa-server/ipa-gui/ipagui/static/images/template/background.png diff --git a/ipa-server/configure.ac b/ipa-server/configure.ac index f8360f333..e07c04c85 100644 --- a/ipa-server/configure.ac +++ b/ipa-server/configure.ac @@ -212,6 +212,8 @@ AC_CONFIG_FILES([ ipa-gui/ipagui/static/Makefile ipa-gui/ipagui/static/css/Makefile ipa-gui/ipagui/static/images/Makefile + ipa-gui/ipagui/static/images/template/Makefile + ipa-gui/ipagui/static/images/branding/Makefile ipa-gui/ipagui/static/javascript/Makefile ipa-gui/ipagui/subcontrollers/Makefile ipa-gui/ipagui/templates/Makefile diff --git a/ipa-server/ipa-gui/ipagui/static/css/style.css b/ipa-server/ipa-gui/ipagui/static/css/style.css index 2515a4bb6..80fdba855 100644 --- a/ipa-server/ipa-gui/ipagui/static/css/style.css +++ b/ipa-server/ipa-gui/ipagui/static/css/style.css @@ -1,272 +1,381 @@ -/* - * Quick mash-up of CSS for the TG quick start page. - */ +* +{ + margin: 0; + padding: 0; +} html, body { - color: #000; - background:#fff; - margin: 0; - padding: 0; - font-family: sans-serif; + height: 100%; } body { - min-width: 750px; + background-image: url('/static/images/template/background.png'); + background-repeat: repeat-x; + background-color: #f9f9f9; + margin: 0px; + padding: 0px; + padding-top: 8px; + min-width: 750px; } -#page { - background:#ccc; /* should be same as #sidebar */ - margin:0 auto; - width:100%; - clear:both; +body, h1, h2, h3, h4, h5, p, ul, li, div, span { + font-family: "Luxi Sans", "Gill Sans", "Verdana", "Helvetica", sans-serif; + font-size: small; + color: #444; } +#head { + margin: 0px; + padding: 0px; + padding-left: 12px; +} -#header { - background:#fff; +#head h1 a { + display: block; + text-indent: -9999px; + height: 54px; + width: 350px; + overflow: hidden; + float: left; + + background: url('/static/images/branding/logo.png') no-repeat; } -#header #logo { - float:left; +#searchbar { + float: right; + margin-right: 24px; + margin-top: 18px; } -#header #headerinfo { - text-align:right; - padding-right:10px; +#navbar { + width: 100%; + height: 64px; + margin: 0px; + clear: both; + + background-image: url('/static/images/template/background-navbar.png'); + background-repeat: repeat-x; + } -#header #headerinfo #login { +#navbar ul { + margin: 0px; + padding: 0px; + padding-left: 10px; + list-style: none; } -#header #headerinfo #topsearch { - padding-top: 15px; +#navbar li { + float: left; + margin: 0px; + padding: 0px; + + font-size: small; } -.searchtext { - background-color:#E5F1F4; - border:1px solid #8E8E8E; - color:#444444; +#navbar a { + display: block; + margin: 22px 15px; } +#navbar .active { + background-image: url('/static/images/template/background-navbar-active.png'); + height: 70px; + width: 116px; -#nav { - background:#cc0000; - color:#fff; - min-height:3px; - max-height:3px; + text-align: center; } -#nav ul { - margin:0; - padding:0; - list-style:none; +#login { + float: right; + padding-top: 15px; + padding-right: 10px; } -#nav li { - display:inline; +#content { + width: 100%; + min-height: 50%; + + background-color: #f9f9f9; + background-image: url('/static/images/template/background-content.png'); + background-repeat: repeat-x; } -#nav a:visited { - color:#fff; -} -#nav a:link { - color:#fff; +#details { + height: 100%; + margin: 0px 24px; + margin-right: 300px; + padding: 18px 18px; + padding-bottom: 12%; + border-top: 1px solid #bbdc5f; + background-color: white; + text-align: left; } - -#main_content { - background:#fff; - float:right; - width:84%; - min-height:500px; - border-left: 1px solid #000; - padding: 10px; +#details p { + margin-top: 1ex; + margin-bottom: 1ex; } -#main_content h1,h2 { - margin-top: 0px; - margin-bottom: 5px; -} - - #sidebar { - background:#ccc; /* should be same as #page */ - float:left; - width:11%; - padding: 5px; - font-size: medium; + width: 250px; + text-align: left; + + padding: 18px 13px; + margin-right: 24px; + float: right; + height: 100%; + + border: 1px solid #aaa; + background-color: #ccc; + background-image: url('/static/images/template/background-sidebar.png'); + background-repeat: repeat-y; } -#sidebar p { - line-height: 150%; +#sidebar h1, h2, h3 { + padding: 0px; + margin: 0px; } -#sidebar h2 { - margin-top: 0; -} +#sidebar h2 { font-size: medium; } +#sidebar h3 { font-size: small; } #sidebar ul { - margin-left: 1.5em; - padding-left: 0; + padding: 0px; + margin: 0px; + list-style: none; + padding-bottom: 10px; } -#sidebar a:visited, -#sidebar a:link { - color:#000; +#sidebar ul, #sidebar li { + margin-bottom: 6px; + font-size: small; } +#sidebar hr { + border-top: 1px solid #aaa; + border-bottom: 1px solid #ddd; + color: #ddd; + margin-top: 20px !important; + margin-bottom: 20px !important; +} + +input.text { + border: 1px solid #8e8e8e; + background-color: #e5f1f4; + color: #444444; +} + +input.button { + +} + +#navbar-secondary li { + font-size: medium; +} + +#navbar-secondary .active a:link, +#navbar-secondary .active a:visited, +#navbar-secondary .active a:active, +#navbar-secondary .active a, +#navbar-secondary li +{ + color: #555 !important; + text-decoration: none; + font-weight: bold; +} + +#details * { + color: #444; +} + +#details p, +#details td, +#details li { + font-size: small; + color: #555; +} + +#details h1 { + color: #7d7d5b; + font-size: x-large; + height: 40px; +/* + * padding-left: 48px; +*/ + padding-top: 6px; + vertical-align: middle; +} + +#details h1.user { + background-image: url('/static/images/objects/object-user.png'); + background-repeat: no-repeat; + margin-bottom: 18px; +} + +#details h2, #details table caption, h2.formsection { + color: #999; + font-size: large; + font-weight: normal; + + border-bottom: 1px solid #999; + margin-bottom: 10px; + + text-align: left; + width: 100%; +} + +h2.formsection { + margin-top: 12px; +} + +#details h3, table.formtable th { + font-size: small; + color: black; +} + +table.details { + margin-bottom: 18px; + width: 100%; +} + +#details table.details th { + font-size: small; + width: 150px; + padding: 4px 0px; + padding-right: 8px; + border-bottom: 1px dotted #ddd; +} + +#details table.details th.even { background-color: white; } +#details table.details th.odd { background-color: #eee; } + +#details table.details td { + padding-left: 8px; + padding-bottom: 3px; + border-bottom: 1px dotted #ddd; + width: 60%; +} + +#details hr { + margin-top: 48px; + margin-bottom: 12px; + height: 1px; + border-color: #bbb; + border-width: 0pt 0pt 1px; + padding: 0.5em; + border-style: none none dashed; +} + +input.submitbutton { + float: right; +} + +#alertbox { + width: 100%; + padding: 6px 0px; + margin-top: 12px; + margin-bottom: 18px; + vertical-align: middle; + + -moz-border-radius: 6px; + background-color: #6995d5; + color: white; +} + +#alertbox h2 { + width: auto; + padding: 0px 16px; + float: left; + font-size: medium; + text-transform: uppercase; + color: white; + font-weight: bold; + border: none; +} + +#alertbox p { + padding: 0px 0px; + text-align: center; + color: white; + width: auto; +} + +td, th { + text-align: left; +} #footer { - background:#fff; - clear:both; - border-top: 1px solid #000; - padding-top: 10px; - text-align: center; - font-size: x-small; + text-align: center; + margin-left: auto; + margin-right: auto; + width: 30%; + padding: 20px 20px; } -#footer a:visited, -#footer a:link { - color:#777; - text-decoration: none; +table.formtable { + width: 100%; } - -.formsection { - color: #888888; - width: 90%; - font-weight: bold; - border-bottom: 1px solid; - margin: 20px 0px 20px 0px; +table.formtable th, table.formtable td { + vertical-align: top; + padding-bottom: 10px; } -.formtable { - width: 90%; +table.formtable th { + width: 28%; } -.formtable th { - width: 20%; - text-align: right; +table.formtable td { } -.floatlist { - float: right; - width: 50%; +input.submitbutton, input.searchbutton, #source_searcharea input.searchbutton { + border: 1px outset #aaa; + padding: 2px 1px; + margin-bottom: 2px; } -.floatheader { - color: #885555; - font-weight: bold; +table.formtable td input[type="text"], input#criteria { + border: 1px inset #dcdcdc; + font-size: medium; + padding: 2px 1px; + background-color: #f5faff; } -.small { - font-size: small; +table.formtable td select { + border: 1px inset #dcdcdc; + font-size: small; + padding: 2px 1px; + background-color: #f5faff; } -.xsmall { - font-size: x-small; +p.empty-message { + font-size: large; + font-style: italic; + color: #888 !important; } -#status_block { - margin: 0 auto 0.5em auto; - padding: 15px 10px 15px 55px; - background: #ecc; - border: 1px solid #c99; - width: 450px; - font-size: 120%; - font-weight: bolder; +div.instructions { + padding: 2px 6px; + margin-top: 16px; + border-top: 1px solid #c0d5f1; + border-bottom: 1px solid #c0d5f1; + background-color: #eef4fd; } -.warning_message { - font-size: 120%; - color: #ee0000; - font-weight: bolder; +div#search { + padding-top: 16px; + padding-bottom: 24px; } -.fielderror { - color: red; - font-weight: bold; -} - -.requiredfield { - background: #eebbbb; -} - -#resultstable, -#resultstable th, -#resultstable td { - border-collapse: collapse; - border-style: solid; - border-width: 1px; - margin: 0px; - padding: 5px; -} - -#resultstable th { - background: #eee; -} - -.deletebutton { -} - -/* - * Used for checkboxlist of aci attributes - */ -ul.requiredfield { - background: #ffffff; -} - -ul.checkboxlist { - padding: 0px; - margin: 0px; +ul.checkboxlist li { list-style: none; + margin: 8px 0px; } -/* - * TableKit css - */ - -.sortcol { - cursor: pointer; - padding-right: 20px !important; - background-repeat: no-repeat !important; - background-position: right center !important; +ul.checkboxlist li input { + background-color: yellow; + height: 1.1em; + width: 1.2em; + border: 1px solid red; } -.sortasc { - background-image: url(/static/images/up.gif) !important; -} -.sortdesc { - background-image: url(/static/images/down.gif) !important; -} -.nosort { - cursor: default; -} - -th.resize-handle-active { - cursor: e-resize; -} - -div.resize-handle { - cursor: e-resize; - width: 2px; - border-right: 1px dashed #1E90FF; - position:absolute; - top:0; - left:0; -} - - -/* - * Overrides for printing - */ -@media print { - #header { display:none; } - #nav { display:none; } - #sidebar { display:none; } - #footer { display:none; } - #main_content { width: 95%; margin:0; padding:0; border-left-style: none; } - - .submitbutton { display:none; } - .deletebutton { display:none; } -} - diff --git a/ipa-server/ipa-gui/ipagui/static/images/Makefile.am b/ipa-server/ipa-gui/ipagui/static/images/Makefile.am index 593cbe02f..d1f919848 100644 --- a/ipa-server/ipa-gui/ipagui/static/images/Makefile.am +++ b/ipa-server/ipa-gui/ipagui/static/images/Makefile.am @@ -1,5 +1,10 @@ NULL = +SUBDIRS = \ + branding \ + template \ + $(NULL) + appdir = $(IPA_DATA_DIR)/ipagui/static/images app_DATA = \ down.gif \ diff --git a/ipa-server/ipa-gui/ipagui/static/images/branding/Makefile.am b/ipa-server/ipa-gui/ipagui/static/images/branding/Makefile.am new file mode 100644 index 000000000..fcf2fdc11 --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/static/images/branding/Makefile.am @@ -0,0 +1,14 @@ +NULL = + +appdir = $(IPA_DATA_DIR)/ipagui/static/images/branding +app_DATA = \ + logo.png \ + $(NULL) + +EXTRA_DIST = \ + $(app_DATA) \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + Makefile.in diff --git a/ipa-server/ipa-gui/ipagui/static/images/branding/logo.png b/ipa-server/ipa-gui/ipagui/static/images/branding/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e966954b0fbed7f0c86e7aaa4e89da0b16f2ba21 GIT binary patch literal 36347 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 literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/Makefile.am b/ipa-server/ipa-gui/ipagui/static/images/template/Makefile.am new file mode 100644 index 000000000..dc769d846 --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/static/images/template/Makefile.am @@ -0,0 +1,20 @@ +NULL = + +appdir = $(IPA_DATA_DIR)/ipagui/static/images/template +app_DATA = \ + background-content.png \ + background-navbar-active_fullsize.png \ + background-navbar-active.png \ + background-navbar_fullsize.png \ + background-navbar.png \ + background.png \ + background-sidebar.png \ + $(NULL) + +EXTRA_DIST = \ + $(app_DATA) \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + Makefile.in diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/background-content.png b/ipa-server/ipa-gui/ipagui/static/images/template/background-content.png new file mode 100644 index 0000000000000000000000000000000000000000..082f10ae1c17d6a45bb58298e4f8768fd99f913b GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^tU!E)gAGWA@V?9kQY^(zo*^7SP{WbZ0pxQQctjQh z)n5l;MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1U-JzX3_ zB3j>GG~{A1;BgAn-TA+A^U~@|%u7DV%JVgyI}>#JrGjUmY1ezT9rB02ZSqXumTy$x eXab{ut>QIK95ZIsc&!E+#o+1c=d#Wzp$PyA96I*^ literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/background-navbar-active.png b/ipa-server/ipa-gui/ipagui/static/images/template/background-navbar-active.png new file mode 100644 index 0000000000000000000000000000000000000000..1b088501becdf7992c7826adb7d15bed196ebddc GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^B|vP?!3HD^S>JR3DVAa<&kznEsNqNf@i_}TB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&3=E9-JzX3_ zD(1Ysz0r%=QQ+9enRk6n6grk&a2L3L;FS6|+bu#zj;XaS<580c^w=ZK&FkWkrvI>~ zeE$9Q8zcK#?XAl@#Z8Sr+U&QB$}HB*dADxy{l!8mZR=L7a(U^+6Knb6Yw6WnAy1o{ zPtJXFG;Z(iCA}-$I9Gl8_fakVZ}-;Mn;b)%ri7jNc`|ja^pdkB`}nVXy*zcd-V?o$ zD8;2yzP{<&wn!-D=e3Bajb*w2T2^&=O<1sT-rb8~A=C3_o-6h@%b4&*bgE;tqIFU4 z<86XP^WDU>Y(;ecFWvt!`H9u0sjK2T%1&fXYMcDqD}83->|`tHlO<+RH+5y-%}>)e zm}7TkpXRN3*L8T0ZMVL|b@gEOF?Cr39tW6JOTC6CVqmR&quv!{7&Kxmw?Xuw6Qh|8oxtRXA+~yFs{; z|L7rMkdr>+Dr)Lu}$c=3WmCx_Cb#VYgMCw`dxsPkuHCXyjot)A~Gq!v&c2fNP1PC)9tLQcSZM3TyaYHb&$eG~imqL=S` zU*uKRO=i4TUS9RwRTTaGWTw;I*onudw}!8)m*@%F>^sB!*H298Y5lq@ z`==(gpL)7_+MSl5ojyAQUQF4&d7JI`MZW{*Pd(K!#kjbyYZ{l9_`-$&2MwToT@Z?k zBi5_pb$^S~J@1u8a9T(p&k>%fZn+pbYEvm2ivV8qQo`zE_uKPGsE!9%b zf4n0yrBXgV@RzB`_jG}PYX;k|`p%e8GjCGwuG-%hzRqHb2wajkKc`YFW8Rm;$7Uw& sUA4&1B__{)$5gqMvpzopr06k<`f&c&j literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/background-navbar_fullsize.png b/ipa-server/ipa-gui/ipagui/static/images/template/background-navbar_fullsize.png new file mode 100644 index 0000000000000000000000000000000000000000..72a710634e8e4d8bc0969c11888bda08803b7836 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^tU&C>!3HE*7RRXrDaPU;cPEB*=VV?2Ic!PZ?k+$Y z2!1;6t_M<_1s;*bK<(E-n9)gNb_Gz7y~NYkmHj%G0E0H~#deRoK%r_+7sn8b)5(9n zJ(gv*N=Q1u)FGbo^Z$SQiCU5p{{ruxssH~!X=6vkTa}8*jS~ffKb&4~E@5U^_xGQa z^Mt4Oet*7FcIkt#isHTh$)4Ui|1~c6g?`ZA#?p3nuFn4szk7$)G)Xk|{NE^HCH1~U o!@0v>(PEBEO`_|XnGvjvAHUcg|J(XN59kaAPgg&ebxsLQ00V$q^8f$< literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/background-sidebar.png b/ipa-server/ipa-gui/ipagui/static/images/template/background-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..4eaadbbce8bfea3c952682253cf50e7611acac1d GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^VL;5p!3HD`d1{LRDVAa<&kznEsNqQI0P;BtJR*yM z>aT+^qm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0xOo-U3d z8WWRa_EdbVH#0M13kwSa;}SDrVd29X3bH+IQoRfe0{fX$y24uIfLa(lUHx3vIVCg! E0E&t#^8f$< literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/static/images/template/background.png b/ipa-server/ipa-gui/ipagui/static/images/template/background.png new file mode 100644 index 0000000000000000000000000000000000000000..96ead97f33fb1189bc4a1b30b498d98833c7cf4e GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^OhEjbgAGVJXuEy|QY^(zo*^7SP{WbZ0pxQQctjQh z)n5l;MkkHg6+l7B64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1S{JzX3_ zJUWyAe0X@co(%}p*fb;>dBoh@jyXQ)2{h+VI~Gv#C!pl>gt9*?X1mMUpOT1RV^G@7 V`YEyf(`KLn44$rjF6*2UngEApHroII literal 0 HcmV?d00001 diff --git a/ipa-server/ipa-gui/ipagui/templates/delegateedit.kid b/ipa-server/ipa-gui/ipagui/templates/delegateedit.kid index 233d1a24e..5317280cb 100644 --- a/ipa-server/ipa-gui/ipagui/templates/delegateedit.kid +++ b/ipa-server/ipa-gui/ipagui/templates/delegateedit.kid @@ -7,7 +7,7 @@ -

Edit Delegation

+

Edit Delegation

${form.display(action=tg.url("/delegate/update"), value=delegate, actionname='Update')} diff --git a/ipa-server/ipa-gui/ipagui/templates/delegateform.kid b/ipa-server/ipa-gui/ipagui/templates/delegateform.kid index 9a6a6b0f9..62cc710f0 100644 --- a/ipa-server/ipa-gui/ipagui/templates/delegateform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/delegateform.kid @@ -59,33 +59,23 @@
- - - - - - -
-

-
-

-
-           + -

-
+
+

Delegation Details

+
@@ -114,13 +104,11 @@ py:content="tg.errors.get('source_group_dn')" /> @@ -156,7 +144,7 @@
-
@@ -167,28 +155,18 @@
- - - - - - -
-
+
+ -
-
-
-
-           + -
+

${len(groups)} results returned:

- +
@@ -44,7 +46,7 @@

No results found for "${criteria}"

-
+

Search automatically looks across multiple fields. If you want to find Joe in Finance, try typing "joe finance" into the search box. @@ -61,5 +63,6 @@ will allow you to resize the header.

+
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupnew.kid b/ipa-server/ipa-gui/ipagui/templates/groupnew.kid index a3f764d6e..7f5d49f7d 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupnew.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupnew.kid @@ -6,8 +6,10 @@ Add Group -

Add Group

+
+

Add Group

${form.display(action=tg.url('/group/create'), value=group)} +
diff --git a/ipa-server/ipa-gui/ipagui/templates/groupnewform.kid b/ipa-server/ipa-gui/ipagui/templates/groupnewform.kid index f55f95351..2b6e2ebb2 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupnewform.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupnewform.kid @@ -3,13 +3,7 @@ - - - - -
-
-
Group Details
+

Group Details

@@ -76,7 +70,7 @@ from ipagui.helpers import ipahelper
-
Add Members
+

Add Members

To Add:
@@ -97,14 +91,9 @@ from ipagui.helpers import ipahelper
- - - - -
-
- -
+
+ + diff --git a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid index 225692a50..7a66acdbe 100644 --- a/ipa-server/ipa-gui/ipagui/templates/groupshow.kid +++ b/ipa-server/ipa-gui/ipagui/templates/groupshow.kid @@ -9,13 +9,14 @@ -

View Group

+
+

View Group

- -
Group Details
+

Group Details

@@ -39,7 +40,7 @@ edit_url = tg.url('/group/edit', cn=group.get('cn'))
-
Group Members
+

Group Members


- - + - +
diff --git a/ipa-server/ipa-gui/ipagui/templates/master.kid b/ipa-server/ipa-gui/ipagui/templates/master.kid index d0c20cfb6..990a989e4 100644 --- a/ipa-server/ipa-gui/ipagui/templates/master.kid +++ b/ipa-server/ipa-gui/ipagui/templates/master.kid @@ -16,26 +16,10 @@ -