diff --git a/admin_back_end.css.erb b/admin_back_end.css.erb new file mode 100644 index 00000000..a0eff84e --- /dev/null +++ b/admin_back_end.css.erb @@ -0,0 +1,278 @@ +html, body{ + height: 100%; + margin: 0; + padding: 0; +} +html{ + background: url(<%= asset_path "body.jpg" %>) no-repeat scroll 0 0 transparent; + background-size: cover; +} + +body{ + color: #000000; + font-family: Helvetica, '微軟正黑體'; +} + +#panel_banner_link{ + background: url(<%= asset_path "orbitbar1.png" %>) repeat-x scroll 0 0; + height: 50px; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 5; +} +.hmenu{ + height: 40px; + position: absolute; + right: 0; + top: 1px; + width: 250px; +} +#orbit{ + background: url(<%= asset_path "bar_orbit.png" %>) no-repeat scroll 0 0 transparent; + cursor:pointer; + height: 43px; + left: 10px; + position: relative; + width: 41px; +} +#orbit:hover{ + background-position:0 -43px; + box-shadow: 0 3px 3px #000000; +} +#orbit:hover #orblist{ + display:block; +} +#orblist{ + background: none repeat scroll 0 0 #FFFFFF; + border-radius: 0 3px 3px 3px; + box-shadow: 0 3px 3px #000000; + display: none; + margin: 0; + padding: 10px; + position: absolute; + top: 43px; + width: 130px; +} +#orblist li{ + border-bottom:1px solid #aaa; + list-style:none; +} +.orblink{ + color: #333333; + display: block; + font: 12px/100% arial,sans-serif; + padding: 5px; + text-decoration: none; +} +.orblink:hover{ + background:#eee; + color:#333; +} + +#log_out a{ + background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right 0 transparent; + border: medium none !important; + display: block !important; + height: 40px !important; + line-height: normal !important; + padding: 0 !important; + position: absolute; + right: 0px; + text-indent: -10000px; + top: 0px; + width: 43px !important; +} +#log_out a:hover{ + background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right bottom transparent !important; +} +.lang{ + color: #FFFFFF; + font-size: 15px; + line-height: 40px; + position: absolute; + right: 55px; + top: 0; +} + +.lang a{ + color:#fff; + text-decoration:none; +} + +.lang a:hover{ + text-decoration:underline; +} + +#content{ + height: 100%; +} +#sidebar { + background: url(<%= asset_path "75.png" %>) repeat scroll left top transparent; + box-shadow: 3px 0 4px #472A12; + border-right: 1px solid #121212; + height: 100%; + left: 0; + position: fixed; + top: 0; + width: 220px; +} +#search { + background: url(<%= asset_path "search_block_bg.jpg" %>) repeat-x scroll left top transparent; + height: 20px; + margin-top: 43px; + padding: 15px 12px; +} +#search input { + background: url(<%= asset_path "search_bg.png" %>) no-repeat scroll left top transparent; + border: medium none; + font-family: Helvetica; + height: 20px; + padding: 0 20px; + width: 154px; +} +h1 { + background: url(<%= asset_path "h1_bg.png" %>) repeat-x scroll left top transparent; + border-bottom: 1px solid #1B1B1B; + border-top: 1px solid #424344; + color: #FFFFFF; + font-size: 12px; + font-weight: normal; + height: 21px; + line-height: 21px; + margin: 0; + padding-left: 10px; + text-shadow: 0 -1px 0 #000000; +} +.member_setup .list { + color:#fff; + font-size:12px; + background:url(<%= asset_path "line.png" %>) repeat-x left bottom; +} +.member_setup .list li { + background:url(<%= asset_path "sidebar_li.jpg" %>) repeat-x left top; + border-top:1px solid #424344; + border-bottom:1px solid #000000; +} +.member_setup .list li:hover { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +.member_setup .list li a { + display: block; + padding: 7px 0 6px 12px; + color:#c4c4c4; +} +.member_setup .list li a span { + background:url(<%= asset_path "add_mamber.png" %>) left top no-repeat; + text-shadow: 0px 1px 0px #000; + line-height: 18px; + padding: 2px 0 1px 35px; +} +.member_setup .list li a:hover span { + background-position:left bottom; + color:#eeeeee; +} +.users .list .set_1 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +.users .list .set_1 a span { + background-position:left bottom; + color:#eeeeee; +} +.user_role_models .list .set_2 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +.user_role_models .list .set_2 a span { + background-position:left bottom; + color:#eeeeee; +} +.user_info_models .list .set_3 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +.user_info_models .list .set_3 a span { + background-position:left bottom; + color:#eeeeee; +} +.main { + height: 100%; + margin-left: 260px; + padding-right: 40px; + position: relative; +} +.main_list { + padding-top: 70px; +} +.main_list ul { + clear:both; +} +#porfile { + padding-top: 100px; +} +/*add_buttom*/ +.button_bar { + float: right; + -moz-box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + -webkit-box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #4f4f4f), color-stop(1, #000000) ); + background:-moz-linear-gradient( center top, #4f4f4f 5%, #000000 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f', endColorstr='#000000'); + background-color:#4f4f4f; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + display:inline-block; + padding:0; + margin:10px 0; +} +.button_bar a { + text-decoration:none; + text-shadow:0px -1px 0px #000000; + font-size:12px; + color:#EDEDED; + border-right:1px solid #555; + -moz-box-shadow:1px 0px 0px black; + -webkit-box-shadow:1px 0px 0px black; + box-shadow:1px 0px 0px black; + padding: 6px 10px 4px; + display: inline-block; + float: left; +} +.button_bar a:active { + padding: 7px 10px 3px; + text-shadow:0px 1px 0px #000000; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #000000), color-stop(1, #4f4f4f) ); + background:-moz-linear-gradient( center top, #000000 5%, #4f4f4f 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr='#4f4f4f'); +} +.button_bar a:last-child { + border-right:none; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + -moz-border-radius:0px 5px 5px 0px; + -webkit-border-radius:0px 5px 5px 0px; + border-radius:0px 5px 5px 0px; +} +.button_bar a:first-child { + -moz-border-radius:5px 0px 0px 5px; + -webkit-border-radius:5px 0px 0px 5px; + border-radius:5px 0px 0px 5px; +} +.button_bar a.new { + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; +} +.button_bar a:hover { + color:#FFFFFF; +} \ No newline at end of file diff --git a/app/assets/javascripts/user_attribute_model_form.js b/app/assets/javascripts/user_attribute_model_form.js index 6b8d454b..1e1e2ef5 100644 --- a/app/assets/javascripts/user_attribute_model_form.js +++ b/app/assets/javascripts/user_attribute_model_form.js @@ -30,4 +30,4 @@ $('.select_type select').live('change', function(){ { $(this).next().hide(); } -}); \ No newline at end of file +}); \ No newline at end of file diff --git a/app/assets/stylesheets/_form.html.erb b/app/assets/stylesheets/_form.html.erb new file mode 100644 index 00000000..edbcae39 --- /dev/null +++ b/app/assets/stylesheets/_form.html.erb @@ -0,0 +1,57 @@ +
+

<%= t("admin.user_#{@attribute}") %>

+
+ + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + +
<%= t('admin.key') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= is_new ? (f.text_field :key, {:style => "width:150px"}) : @user_attribute_model.key %> + <%= text_field_tag "user_#{@attribute}_model[i18n_variable][#{locale}]", (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> +
+
+
+ + +
+

Attributes

+
+ + + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + + + + + + + + + <%= render :partial => 'admin/user_attribute_models/attribute_model', :collection => @user_attribute_model.attribute_models %> + +
<%= t('admin.key') %><%= t('admin.multilingual') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %><%= t('admin.type')%> 
<%= t(:add) %>
+
+
+ +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "user_attribute_model_form" %> +<% end -%> diff --git a/app/assets/stylesheets/admin.css.erb b/app/assets/stylesheets/admin.css.erb index 7322013b..59324e97 100644 --- a/app/assets/stylesheets/admin.css.erb +++ b/app/assets/stylesheets/admin.css.erb @@ -1,8 +1,9 @@ -/* - *This is a manifest file that'll automatically include all the stylesheets available in this directory - *and any sub-directories. You're free to add application-wide styles to this file and they'll appear at - *the top of the compiled file, but it's generally better to create a new file per style scope. - *= require_self - *= require message - *= require admin_back_end +/* + *This is a manifest file that'll automatically include all the stylesheets available in this directory + *and any sub-directories. You're free to add application-wide styles to this file and they'll appear at + *the top of the compiled file, but it's generally better to create a new file per style scope. + *= require reset + *= require_self + *= require message + *= require admin_back_end */ \ No newline at end of file diff --git a/app/assets/stylesheets/admin_back_end.css.erb b/app/assets/stylesheets/admin_back_end.css.erb index fea5605e..89f2c874 100644 --- a/app/assets/stylesheets/admin_back_end.css.erb +++ b/app/assets/stylesheets/admin_back_end.css.erb @@ -1,354 +1,490 @@ -html, body{ - height: 100%; - margin: 0; - padding: 0; -} -html{ - background: url(<%= asset_path "body.jpg" %>) no-repeat scroll 0 0 transparent; - background-size: cover; -} - -body{ - color: #000000; - font-family: helvetica,arial,sans-serif; - margin: 0; - padding: 0; -} - -#panel_banner_link{ - background: url(<%= asset_path "orbitbar1.png" %>) repeat-x scroll 0 0; - height: 52px; - left: 0; - position: absolute; - top: 0; - width: 100%; -} -.hmenu{ - height: 40px; - position: absolute; - right: 0; - top: 1px; - width: 250px; -} - - -#orbit{ - background: url(<%= asset_path "bar_orbit.png" %>) no-repeat scroll 0 0 transparent; - cursor:pointer; - height: 43px; - left: 10px; - position: relative; - width: 41px; -} - -#orbit:hover{ - background-position:0 -43px; - box-shadow: 0 3px 3px #000000; -} -#orbit:hover #orblist{ - display:block; -} -#orblist{ - background: none repeat scroll 0 0 #FFFFFF; - border-radius: 0 3px 3px 3px; - box-shadow: 0 3px 3px #000000; - display: none; - margin: 0; - padding: 10px; - position: absolute; - top: 43px; - width: 130px; -} -#orblist li{ - border-bottom:1px solid #aaa; - list-style:none; -} -.orblink{ - color: #333333; - display: block; - font: 12px/100% arial,sans-serif; - padding: 5px; - text-decoration: none; -} -.orblink:hover{ - background:#eee; - color:#333; -} - -#log_out a{ - background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right 0 transparent; - border: medium none !important; - display: block !important; - height: 40px !important; - line-height: normal !important; - padding: 0 !important; - position: absolute; - right: 0px; - text-indent: -10000px; - top: 0px; - width: 43px !important; -} -#log_out a:hover{ - background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right bottom transparent !important; -} -.lang{ - color: #FFFFFF; - font-size: 15px; - line-height: 40px; - position: absolute; - right: 55px; - top: 0; -} - -.lang a{ - color:#fff; - text-decoration:none; -} - -.lang a:hover{ - text-decoration:underline; -} - -#panel_container{ - height: 100%; -} - -#panel_container h1{ - color: #FFFFFF; - font: 32px/100% helvetica,arial,sans-serif; - margin: 0 0 20px; - padding: 0; - text-shadow: 0 0 5px #000000; -} - -#panel_header{ - background: none repeat scroll 0 0 #F1F1F1; - border-bottom: 1px solid #818181; - padding: 10px; -} -#panel_header :after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -#panel_header #nav{ - margin:0; - padding:0; - width:100%; -} - -#panel_header #nav li{ - float: left; - list-style: none outside none; -} - -#panel_header #nav li a{ - background: none repeat scroll 0 0 #fff; - border-radius: 13px 13px 13px 13px; - border: 1px solid #D6D6D6; - color: #000000; - float: left; - font-size:15px; - margin: 0 20px 0 0; - padding: 5px 10px; - text-decoration: none; -} - -#panel_header #nav li a:hover{ - background: none repeat scroll 0 0 #818181; - border-radius: 13px 13px 13px 13px; - color: #fff; -} - -#panel_content{ - height: 100%; -} - -.main{ - float: left; - height: 100%; - padding: 0 1%; - width: 81%; -} -.main2{ - padding: 62px 0 0; -} -.main table{ - border-collapse: collapse; - width:100%; -} -.main table th{ - border-bottom: 1px solid #222222; - color: #FFFFFF; - font: 20px/100% helvetica,arial,sans-serif; - letter-spacing: 0.05em; - padding: 10px; - text-shadow: 0 0 3px #000000; -} -.main table td{ - background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5); - border-bottom: 1px solid #222222; - color: #FFFFFF; - padding: 10px; - text-align: center; -} - -.main table td a{ - background: none repeat scroll 0 0 #FFFFFF; - border-radius: 5px 5px 5px 5px; - color: #000000; - padding: 5px; - text-decoration: none; -} - -.main table td a:hover{ - background: none repeat scroll 0 0 #eee; - border-radius: 5px 5px 5px 5px; - color: #333; -} -.secondary{ - background: none repeat scroll 0 0 rgba(0, 0, 0, 0.75); - box-shadow: 3px 0 3px #000000; - float: left; - height: 100%; - padding: 0 1%; - width: 14%; -} -.secondary2{ - padding: 62px 0 0; -} -.secondary ul{ - margin: 0; - padding: 0; -} -.secondary ul li{ - list-style:none; -} -.secondary ul li a{ - border-bottom: 1px solid #333; - color: #AAAAAA; - display: block; - padding: 14px 0; - text-align: left; - text-decoration: none; -} -.seclink1{ - background: url(<%= asset_path "icon1.png" %>) no-repeat scroll 20px 8px transparent; - border-bottom: 1px solid #333; - color: #AAAAAA; - display: block; - padding: 14px 0 14px 60px !important; - text-align: left; - text-decoration: none; -} -.seclink2{ - background: url(<%= asset_path "icon2.png" %>) no-repeat scroll 20px 14px transparent; - border-bottom: 1px solid #333; - color: #AAAAAA; - display: block; - padding: 14px 0 14px 60px !important; - text-align: left; - text-decoration: none; -} -.secondary ul li a:hover{ - color: #fff; -} - -#panel_footer{ - background: none repeat scroll 0 0 #FFFFFF; - display:none; - clear: both; - padding: 10px; -} -#panel_footer p{ - margin:0; -} -label{ - color: #FFFFFF; - display: block; - text-shadow: 0 0 5px #000000; - width: 130px; -} -p{ - margin:0 0 10px; -} -#panel_main p label{ - float: left; - padding: 3px; - width: 100px; -} -#panel_main .translation_missing{ - float: left; - padding: 3px; - width: 100px; - -} -.text{ - border: 1px solid #818181; - border-radius: 3px 3px 3px 3px; - font: 12px/100% helvetica,arial,sans-serif; - padding: 3px; - width: 205px; -} - -#site_info{ - background: none repeat scroll 0 0 #FFFFFF; - border-radius: 5px 5px 5px 5px; - box-shadow: 0 0 5px #000000; -/* height: 289px;*/ - margin: 0 0 20px; - overflow: hidden; - width: 600px; -} -#siteinfo_title{ - background: none repeat scroll 0 0 #333333; - color: #FFFFFF; - font: 24px/50px arial,sans-serif; - height: 50px; - margin: 0; - padding: 0 0 0 20px; - text-shadow: 0 1px 0 #000000; -} -#siteinfo_tb{ - background: none repeat scroll 0 0 #FFFFFF; -} -#siteinfo_tb td{ - background: none repeat scroll 0 0 transparent; - border-bottom: 1px solid #333333; - color: #333333; -} - -.buy_btn{ - float:left; - margin: 0 10px 0 0; -} -.main table td .buy_btn a{ - background: url("/assets/buy_btn.png") no-repeat scroll 0 0 transparent; - color: #000000; - display: block; - font-size: 22px; - height: 37px; - line-height: 37px; - text-align: center; - text-decoration: none; - text-shadow: 0 1px 0 #FFFFFF; - width: 170px; - padding: 0px; -} -.buy_btn a:hover{ - background-position:0 bottom; -} -.bought_btn{ - background: url("/assets/bought_btn.png") no-repeat scroll 0 0 transparent; - color: #FFFFFF; - float:left; - font-size: 22px; - height: 37px; - line-height: 37px; - margin: 0 10px 0 0; - text-align: center; - text-shadow: 0 1px 0 #C06408; - width: 170px; +html, body{ + height: 100%; + margin: 0; + padding: 0; +} +html{ + background: url(<%= asset_path "body.jpg" %>) no-repeat scroll 0 0 transparent; + background-size: cover; +} + +body{ + color: #000000; + font-family: Helvetica, '微軟正黑體'; +} + +#panel_banner_link{ + background: url(<%= asset_path "orbitbar1.png" %>) repeat-x scroll 0 0; + height: 50px; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 5; +} +.hmenu{ + height: 40px; + position: absolute; + right: 0; + top: 1px; + width: 250px; +} +#orbit{ + background: url(<%= asset_path "bar_orbit.png" %>) no-repeat scroll 0 0 transparent; + cursor:pointer; + height: 43px; + left: 10px; + position: relative; + width: 41px; +} +#orbit:hover{ + background-position:0 -43px; + box-shadow: 0 3px 3px #000000; +} +#orbit:hover #orblist{ + display:block; +} +#orblist{ + background: none repeat scroll 0 0 #FFFFFF; + border-radius: 0 3px 3px 3px; + box-shadow: 0 3px 3px #000000; + display: none; + margin: 0; + padding: 10px; + position: absolute; + top: 43px; + width: 130px; +} +#orblist li{ + border-bottom:1px solid #aaa; + list-style:none; +} +.orblink{ + color: #333333; + display: block; + font: 12px/100% arial,sans-serif; + padding: 5px; + text-decoration: none; +} +.orblink:hover{ + background:#eee; + color:#333; +} + +#log_out a{ + background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right 0 transparent; + border: medium none !important; + display: block !important; + height: 40px !important; + line-height: normal !important; + padding: 0 !important; + position: absolute; + right: 0px; + text-indent: -10000px; + top: 0px; + width: 43px !important; +} +#log_out a:hover{ + background: url(<%= asset_path "service_btn.png" %>) no-repeat scroll right bottom transparent !important; +} +.lang{ + color: #FFFFFF; + font-size: 15px; + line-height: 40px; + position: absolute; + right: 55px; + top: 0; +} +.lang a{ + color:#fff; + text-decoration:none; +} +.lang a:hover{ + text-decoration:underline; +} +#content{ + height: 100%; +} +#panel_footer{ + background-color: #101010; + bottom: 0; + color: #FFFFFF; + font-size: 11px; + padding: 10px; + position: fixed; + width: 100%; + left: 0; + box-shadow: 0 -3px 4px #000; +} +#sidebar { + background: url(<%= asset_path "75.png" %>) repeat scroll left top transparent; + box-shadow: 3px 0 4px #472A12; + border-right: 1px solid #121212; + height: 100%; + left: 0; + position: fixed; + top: 0; + width: 220px; +} +#search { + background: url(<%= asset_path "search_block_bg.jpg" %>) repeat-x scroll left top transparent; + height: 20px; + margin-top: 43px; + padding: 15px 12px; +} +#search input { + background: url(<%= asset_path "search_bg.png" %>) no-repeat scroll left top transparent; + border: medium none; + font-family: Helvetica; + height: 20px; + padding: 0 20px; + width: 154px; +} +h1 { + background: url(<%= asset_path "h1_bg.png" %>) repeat-x scroll left top transparent; + border-bottom: 1px solid #1B1B1B; + border-top: 1px solid #424344; + color: #FFFFFF; + font-size: 12px; + font-weight: normal; + height: 21px; + line-height: 21px; + margin: 0; + padding-left: 10px; + text-shadow: 0 -1px 0 #000000; +} +.member_setup .list { + color:#fff; + font-size:12px; + background:url(<%= asset_path "line.png" %>) repeat-x left bottom; +} +.member_setup .list li { + background:url(<%= asset_path "sidebar_li.jpg" %>) repeat-x left top; + border-top:1px solid #424344; + border-bottom:1px solid #000000; +} +.member_setup .list li:hover { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +.member_setup .list li a { + display: block; + padding: 7px 0 6px 12px; + color:#c4c4c4; +} +.member_setup .list li a span { + background:url(<%= asset_path "add_mamber.png" %>) left top no-repeat; + text-shadow: 0px 1px 0px #000; + line-height: 18px; + padding: 2px 0 1px 35px; +} +.member_setup .list li a:hover span { + background-position:left bottom; + color:#eeeeee; +} +#sidebar .users .list .set_1 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +#sidebar .users .list .set_1 a span { + background-position:left bottom; + color:#eeeeee; +} +#sidebar .roles .list .set_2 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +#sidebar .roles .list .set_2 a span { + background-position:left bottom; + color:#eeeeee; +} +#sidebar .infos .list .set_3 { + background-position:left bottom; + border-top:1px solid #406cc3; + border-bottom:1px solid #242628; +} +#sidebar .infos .list .set_3 a span { + background-position:left bottom; + color:#eeeeee; +} +.main { + height: 100%; + margin-left: 260px; + padding-right: 40px; + position: relative; +} +.main_list { + padding-top: 70px; +} +.main_list ul { + clear:both; +} +#porfile { + padding-top: 100px; +} +/*add_buttom*/ +.button_bar { + float: right; + -moz-box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + -webkit-box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + box-shadow:inset 0px 1px 0px 0px #666, 0px 0px 3px black; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #4f4f4f), color-stop(1, #000000) ); + background:-moz-linear-gradient( center top, #4f4f4f 5%, #000000 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f', endColorstr='#000000'); + background-color:#4f4f4f; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + display:inline-block; + padding:0; + margin:10px 0 60px; +} +.button_bar a { + text-decoration:none; + text-shadow:0px -1px 0px #000000; + font-size:12px; + color:#EDEDED; + border-right:1px solid #555; + -moz-box-shadow:1px 0px 0px black; + -webkit-box-shadow:1px 0px 0px black; + box-shadow:1px 0px 0px black; + padding: 6px 10px 4px; + display: inline-block; + float: left; +} +.button_bar a:active { + padding: 7px 10px 3px !important; + text-shadow:0px 1px 0px #000000; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #000000), color-stop(1, #4f4f4f) ); + background:-moz-linear-gradient( center top, #000000 5%, #4f4f4f 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr='#4f4f4f'); +} +.button_bar a:last-child { + border-right:none; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; + -moz-border-radius:0px 5px 5px 0px; + -webkit-border-radius:0px 5px 5px 0px; + border-radius:0px 5px 5px 0px; +} +.button_bar a:first-child { + -moz-border-radius:5px 0px 0px 5px; + -webkit-border-radius:5px 0px 0px 5px; + border-radius:5px 0px 0px 5px; +} +.button_bar a.new { + padding: 5px 10px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; +} +.button_bar a:hover { + color:#FFFFFF; +} +.up { + margin:10px 0; +} +#person { + left: 245px; + position: fixed; + text-align: center; + top: 75px; + width: 140px; + background-color:#FFF; + padding:15px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -moz-box-shadow: 0px 0px 4px #180902; /* Firefox */ + -webkit-box-shadow: 0px 0px 4px #180902;/* Safari 和 Chrome */ + box-shadow: 0px 0px 4px #180902; /* Opera 10.5 + */ +} +#file { + display:none; +} +#person img { +} +.user_mail { + border: medium none; + border:1px solid #DDDDDD; + color: #666666; + font-size: 12px; + width: 140px; +} +#person label { + display: block; + margin: 15px 0 0; +} +#person label input { +} +#person label #user_admin { + float:right; + margin: 0; +} +#person label span { + text-align:left; + font-size:11px; + color:#888; + display:block; +} +#person select { + border: 1px solid #DDDDDD; + padding: 0; + width: 140px; +} +#porfile .users{ + margin-left: 180px; +} +.roles_block { + background: url(<%= asset_path "75.png" %>) repeat left top; + min-width:710px; + margin-bottom:50px; + position:relative; + padding-bottom: 20px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + -moz-box-shadow: 0px 0px 4px #180902; /* Firefox */ + -webkit-box-shadow: 0px 0px 4px #180902;/* Safari 和 Chrome */ + box-shadow: 0px 0px 4px #180902; /* Opera 10.5 + */ +} +.roles_block h2 { + color: #FFFFFF; + font-weight: normal; + margin: 0; + padding: 0; + position: absolute; + text-shadow: 0 3px 2px #000000; + top: -30px; +} +.main hr { + height:8px; + border:none; + margin:0; + border-radius: 5px 5px 0px 0px; + -moz-border-radius: 5px 5px 0px 0px; + -webkit-border-radius: 5px 5px 0px 0px; + border-bottom:1px solid #000; +} +#basic_block hr { + background-color: #666666; +} +#teacher_block hr { + background-color: #0071A9; +} +#student_block hr { + background-color: #AF0045; +} +.info_input { + padding:10px 20px; +} +.info_input table { + color:#fff; + width:100%; + font-size:14px; +} +.info_input table td { + padding:5px 10px 5px 0; + width: 10%; +} +.info_input .list_head { + background:url(<%= asset_path "line.png" %>) left bottom repeat-x; +} +.info_input .list_head td { +} +.info_input .list_item { + color:#AEAEAE; +} +.info_input .add { + display:block; + padding-left:22px; + font-size:12px; + line-height:21px; + height:19px; + background:url(<%= asset_path "icon.png" %>) no-repeat -59px 0; + margin-top: 10px; + color: #DDDDDD; +} + +.main table { + width:100%; +} +.main td { + padding-left:20px; + color:#fff; + font-size:14px; + line-height:40px; +} +.main thead td { + line-height:40px; + font-size:16px; + text-shadow: 0px 1px 1px #3e2914; +} +.main thead td.action { + width:15% +} +.main tbody td.roles { + background-image: url(<%= asset_path "roles_type.jpg" %>); + background-repeat: repeat-x; +} +.main tbody td.teacher { + background-position: 0 -54px; +} +.main tbody td.student { + background-position: 0 -5px; +} +.main tbody td.action a { + background-image: url(<%= asset_path "icon.png" %>); + display: inline-block; + height: 19px; + margin-right: 10px; + top: 8px; + text-indent: -9999px; + width: 19px; + position: relative; +} +.main tbody td.action a.show { + background-position: left top; +} +.main tbody td.action a.show:hover { + background-position: left -19px; +} +.main tbody td.action a.edit { + background-position: -19px top; +} +.main tbody td.action a.edit:hover { + background-position: -19px -19px; +} +.main tbody td.action a.delete { + background-position: -38px top; +} +.main tbody td.action a.delete:hover { + background-position: -38px -19px; +} +.main tbody td.action a.switch { + background: url(<%= asset_path "switch.png" %>) no-repeat left 3px; + width: 40px; +} +.main tbody tr.disable td.action a.switch { + background-position:left bottom; +} +.main tbody td.action a.delete:hover { + background-position: -38px -19px; +} +.main tbody tr.have { + background: url(<%= asset_path "75.png" %>) repeat left top; + -moz-box-shadow: 0px 0px 6px #291508; /* Firefox */ + -webkit-box-shadow: 0px 0px 6px #291508;/* Safari 和 Chrome */ + box-shadow: 0px 0px 6px #291508; /* Opera 10.5 + */ +} +.main tbody tr.disable { + opacity: 0.7; +} +.main tbody tr { + background:none; + height:15px; } \ No newline at end of file diff --git a/app/assets/stylesheets/reset.css b/app/assets/stylesheets/reset.css new file mode 100644 index 00000000..44f2ae77 --- /dev/null +++ b/app/assets/stylesheets/reset.css @@ -0,0 +1,44 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} +a { + text-decoration:none; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +/*自定*/ +input:focus, select:focus, textarea:focus { + outline:none; + -moz-outline-radius: 0; +} +.clear:after { + content:"."; + clear:both; + display:block; + height:0; + visibility:hidden; +} diff --git a/app/assets/stylesheets/reset.css.erb b/app/assets/stylesheets/reset.css.erb new file mode 100644 index 00000000..44f2ae77 --- /dev/null +++ b/app/assets/stylesheets/reset.css.erb @@ -0,0 +1,44 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} +a { + text-decoration:none; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +/*自定*/ +input:focus, select:focus, textarea:focus { + outline:none; + -moz-outline-radius: 0; +} +.clear:after { + content:"."; + clear:both; + display:block; + height:0; + visibility:hidden; +} diff --git a/app/controllers/admin/user_info_models_controller.rb b/app/controllers/admin/user_info_models_controller.rb new file mode 100644 index 00000000..60360463 --- /dev/null +++ b/app/controllers/admin/user_info_models_controller.rb @@ -0,0 +1,59 @@ +class Admin::UserInfoModelsController < ApplicationController + + layout "admin" + before_filter :authenticate_user! + before_filter :is_admin? + before_filter :set_attribute, :only => [:index, :show, :new, :edit] + + def index + @user_attribute_models = UserInfoModel.all.entries + render :template => 'admin/user_attribute_models/index' + end + + def show + #@user_attribute_model = UserInfoModel.find(params[:id]) + end + + def new + @user_attribute_model = UserInfoModel.new + render :template => 'admin/user_attribute_models/new' + end + + def edit + @user_attribute_model = UserInfoModel.find(params[:id]) + @i18n_variable = @user_attribute_model.i18n_variable + render :template => 'admin/user_attribute_models/edit' + end + + def create + @user_attribute_model = UserInfoModel.new(params[:user_info_model]) + @user_attribute_model.save + redirect_to :action => :index + end + + def update + @user_attribute_model = UserInfoModel.find(params[:id]) + @user_attribute_model.update_attributes(params[:user_info_model]) + respond_to do |format| + format.html { redirect_to :action => :index } + format.js { render 'admin/user_attribute_models/toggle_enable' } + end + end + + def destroy + @user_attribute_model = UserInfoModel.find(params[:id]) + @user_attribute_model.destroy + + @user_attribute_model.destroy_i18n_variables + + redirect_to :action => :index + end + + protected + + def set_attribute + @attribute = 'info' + @class = 'infos' + end + +end diff --git a/app/controllers/admin/user_role_models_controller.rb b/app/controllers/admin/user_role_models_controller.rb new file mode 100644 index 00000000..bfdf5428 --- /dev/null +++ b/app/controllers/admin/user_role_models_controller.rb @@ -0,0 +1,60 @@ +class Admin::UserRoleModelsController < ApplicationController + + layout "admin" + before_filter :authenticate_user! + before_filter :is_admin? + before_filter :set_attribute, :only => [:index, :show, :new, :edit] + + def index + @user_attribute_models = UserRoleModel.all.entries + render :template => 'admin/user_attribute_models/index' + end + + def show + #@user_attribute_model = UserRoleModel.find(params[:id]) + end + + def new + @user_attribute_model = UserRoleModel.new + render :template => 'admin/user_attribute_models/new' + end + + def edit + @user_attribute_model = UserRoleModel.find(params[:id]) + @i18n_variable = @user_attribute_model.i18n_variable + render :template => 'admin/user_attribute_models/edit' + end + + def create + @user_attribute_model = UserRoleModel.new(params[:user_role_model]) + @user_attribute_model.save + redirect_to :action => :index + end + + def update + @user_attribute_model = UserRoleModel.find(params[:id]) + @user_attribute_model.update_attributes(params[:user_role_model]) + + respond_to do |format| + format.html { redirect_to :action => :index } + format.js { render 'admin/user_attribute_models/toggle_enable' } + end + end + + def destroy + @user_attribute_model = UserRoleModel.find(params[:id]) + @user_attribute_model.destroy + + @user_attribute_model.destroy_i18n_variables + + redirect_to :action => :index + end + + protected + + def set_attribute + @attribute = 'role' + @class = 'roles' + end + +end diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 77cada1b..2a6c0a99 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -1,84 +1,89 @@ -class Admin::UsersController < ApplicationController - - layout "admin" - before_filter :authenticate_user! - - def index - @users = User.all.entries - end - - def show - @user = User.find(params[:id]) - get_info_role_models - end - - def new - @user = User.new - get_info_role_models - end - - def create - @user = User.new(params[:user]) - if @user.save - @user.user_infos.each do |info| - info.save - info.attribute_values.each(&:save) - end - @user.roles.each do |role| - role.save - role.attribute_values.each(&:save) - end - flash[:notice] = t('admin.create_success_user') - redirect_to :action => :index - else - render :action => :new - end - end - - def edit - @user = User.find(params[:id]) - get_info_role_models - end - - def update - @user = User.find(params[:id]) - - # Update changes to the avatar - @user.remove_avatar! if params[:file] - @user.avatar = params[:file] if params[:file] - - if @user.id.to_s.eql?(session['warden.user.user.key'][1].to_s) && @user.admin != params[:user][:admin].to_i.to_b - flash.now[:error] = t('admin.cant_revoke_self_admin') - end - if !flash[:error] && @user.update_attributes(params[:user]) - flash[:notice] = t('admin.update_success_user') - redirect_to :action => :index - else - get_info_role_models - render :action => :edit - end - end - - def destroy - if params[:id].eql?(session['warden.user.user.key'][1].to_s) - flash[:error] = t('admin.cant_delete_self') - else - @user = User.find(params[:id]) - @user.destroy - @user.user_attributes.each do |ua| - ua.attribute_values.each(&:destroy) - ua.destroy - end - end - - redirect_to :action => :index - end - - protected - - def get_info_role_models - @roles = Info.excludes('disabled' => true) - @infos = Role.excludes('disabled' => true) - end - -end +class Admin::UsersController < ApplicationController + + layout "admin" + before_filter :authenticate_user! + before_filter :set_attribute, :only => [:index, :show, :new, :edit] + + def index + @users = User.all.entries + end + + def show + @user = User.find(params[:id]) + get_info_role_models + end + + def new + @user = User.new + get_info_role_models + end + + def create + @user = User.new(params[:user]) + if @user.save + @user.user_infos.each do |info| + info.save + info.attribute_values.each(&:save) + end + @user.roles.each do |role| + role.save + role.attribute_values.each(&:save) + end + flash[:notice] = t('admin.create_success_user') + redirect_to :action => :index + else + render :action => :new + end + end + + def edit + @user = User.find(params[:id]) + get_info_role_models + end + + def update + @user = User.find(params[:id]) + + # Update changes to the avatar + @user.remove_avatar! if params[:file] + @user.avatar = params[:file] if params[:file] + + if @user.id.to_s.eql?(session['warden.user.user.key'][1].to_s) && @user.admin != params[:user][:admin].to_i.to_b + flash.now[:error] = t('admin.cant_revoke_self_admin') + end + if !flash[:error] && @user.update_attributes(params[:user]) + flash[:notice] = t('admin.update_success_user') + redirect_to :action => :index + else + get_info_role_models + render :action => :edit + end + end + + def destroy + if params[:id].eql?(session['warden.user.user.key'][1].to_s) + flash[:error] = t('admin.cant_delete_self') + else + @user = User.find(params[:id]) + @user.destroy + @user.user_attributes.each do |ua| + ua.attribute_values.each(&:destroy) + ua.destroy + end + end + + redirect_to :action => :index + end + + protected + + def get_info_role_models + @roles = Info.excludes('disabled' => true) + @infos = Role.excludes('disabled' => true) + end + + def set_attribute + @class = 'users' + end + +end \ No newline at end of file diff --git a/app/views/admin/user_attribute_models/_form.html.erb b/app/views/admin/user_attribute_models/_form.html.erb index 659eb353..edbcae39 100644 --- a/app/views/admin/user_attribute_models/_form.html.erb +++ b/app/views/admin/user_attribute_models/_form.html.erb @@ -1,57 +1,57 @@ -
-

<%= t("admin.user_#{@attribute}") %>

-
- - - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - - - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - -
<%= t('admin.key') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= is_new ? (f.text_field :key, {:style => "width:150px"}) : @user_attribute_model.key %> - <%= text_field_tag "user_#{@attribute}_model[i18n_variable][#{locale}]", (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> -
-
-
- - -
-

Attributes

-
- - - - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - - - - - - - - - - <%= render :partial => 'admin/user_attribute_models/attribute_model', :collection => @user_attribute_model.attribute_models %> - -
<%= t('admin.key') %><%= t('admin.multilingual') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %><%= t('admin.type')%> 
<%= t(:add) %>
-
-
- -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "user_attribute_model_form" %> -<% end -%> +
+

<%= t("admin.user_#{@attribute}") %>

+
+ + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + +
<%= t('admin.key') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= is_new ? (f.text_field :key, {:style => "width:150px"}) : @user_attribute_model.key %> + <%= text_field_tag "user_#{@attribute}_model[i18n_variable][#{locale}]", (@i18n_variable[locale] if @i18n_variable), :style => "width:150px" %> +
+
+
+ + +
+

Attributes

+
+ + + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + + + + + + + + + <%= render :partial => 'admin/user_attribute_models/attribute_model', :collection => @user_attribute_model.attribute_models %> + +
<%= t('admin.key') %><%= t('admin.multilingual') %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %><%= t('admin.type')%> 
<%= t(:add) %>
+
+
+ +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "user_attribute_model_form" %> +<% end -%> diff --git a/app/views/admin/user_attribute_models/admin.html.erb b/app/views/admin/user_attribute_models/admin.html.erb new file mode 100644 index 00000000..a4bbbb43 --- /dev/null +++ b/app/views/admin/user_attribute_models/admin.html.erb @@ -0,0 +1,31 @@ + + + + + <%= @title || APP_CONFIG['orbit'] %> + + <%= stylesheet_link_tag "admin" %> + <%= javascript_include_tag "admin" %> + <%= yield :page_specific_css %> + <%= yield :page_specific_javascript %> + <%= csrf_meta_tag %> + + + + +
+ +
+ <%= yield %> +
+
<%= yield :tertiary %>
+ +
+ + diff --git a/app/views/admin/user_attribute_models/edit.html.erb b/app/views/admin/user_attribute_models/edit.html.erb index b70e5275..d0442fb8 100644 --- a/app/views/admin/user_attribute_models/edit.html.erb +++ b/app/views/admin/user_attribute_models/edit.html.erb @@ -1,12 +1,14 @@ -
- <%= form_for @user_attribute_model, :url => eval("admin_user_#{@attribute}_model_path(@user_role_model)") do |f| %> - <%= f.error_messages %> - <%= render :partial => "admin/user_attribute_models/form", :locals => { :f => f, :is_new => false } %> -
- <%= link_to t('update'), "#", :onclick=>"$('#edit_user_role_model_#{@user_attribute_model.id}').submit()" %> -
-
- <%= link_back %> -
- <% end -%> +<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ <%= form_for @user, :url => admin_user_path(@user), :html => { :multipart => true } do |f| %> + <%= f.error_messages %> + <%= render :partial => 'form', :locals => { :f => f } %> +
+ <%= link_back %> + <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %> +
+ <% end -%>
\ No newline at end of file diff --git a/app/views/admin/user_attribute_models/index.html.erb b/app/views/admin/user_attribute_models/index.html.erb index c7a65d65..87c5bb2c 100644 --- a/app/views/admin/user_attribute_models/index.html.erb +++ b/app/views/admin/user_attribute_models/index.html.erb @@ -1,30 +1,41 @@ -
-
- <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> -
- -
- <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> -
-
+<% content_for :secondary do %> + <%= render 'admin/users/side_bar' %> +<% end %> + +
+
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path"), :class => 'new' %> +
+ + + + + + + + + <% @user_attribute_models.each do |user_attribute_model| %> + "> + + + + + + + <% end %> + +
<%= t("admin.#{@attribute}") %><%= t('admin.action') %>
<%= user_attribute_model.i18n_variable[I18n.locale] %> + <%= link_to t(:edit), eval("edit_admin_user_#{@attribute}_model_path(user_attribute_model)"), :class => 'edit' %> + <% if user_attribute_model.is_built_in? %> + <%= link_to t(:enable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? 'none' : ''}", :class => 'switch' %> + <%= link_to t(:disable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? '' : 'none'}", :class => 'switch' %> + <% else %> + <%= link_to t(:enable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? 'none' : ''}", :class => 'switch' %> + <%= link_to t(:disable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? '' : 'none'}", :class => 'switch' %> + <%= link_to t(:delete), eval("admin_user_#{@attribute}_model_path(user_attribute_model)"), :class => 'delete', :confirm => t('sure?'), :method => :delete %> + <% end %> +
+
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path"), :class => 'new' %> +
+
diff --git a/app/views/admin/user_attribute_models/new.html.erb b/app/views/admin/user_attribute_models/new.html.erb index 4dd1baa6..490561fa 100644 --- a/app/views/admin/user_attribute_models/new.html.erb +++ b/app/views/admin/user_attribute_models/new.html.erb @@ -1,16 +1,18 @@ -
- <%= form_for @user_attribute_model, :url => eval("admin_user_#{@attribute}_models_path") do |f| %> - <%= f.error_messages %> - <%= render :partial => "admin/user_attribute_models/form", :locals => { :f => f, :is_new => true } %> -
- <%= link_to t('create'), "#", :onclick=>"$('#new_user_attribute_model').submit()" %> -
-
- <%= link_back %> -
- <% end -%> -
- - - - +<% content_for :secondary do %> + <%= render 'admin/users/side_bar' %> +<% end %> + +
+ <%= form_for @user_attribute_model, :url => eval("admin_user_#{@attribute}_models_path") do |f| %> + <%= f.error_messages %> + <%= render :partial => "admin/user_attribute_models/form", :locals => { :f => f, :is_new => true } %> +
+ <%= link_back %> + <%= link_to t('create'), "#", :onclick=>"$('#new_user_attribute_model').submit()" %> +
+ <% end -%> +
+ + + + diff --git a/app/views/admin/user_attributes/index.html.erb b/app/views/admin/user_attributes/index.html.erb new file mode 100644 index 00000000..b5965a79 --- /dev/null +++ b/app/views/admin/user_attributes/index.html.erb @@ -0,0 +1,34 @@ +<% content_for :secondary do %> + <%= render 'admin/users/side_bar' %> +<% end %> + +
+
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> +
+ +
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> +
+
diff --git a/app/views/admin/user_attributes/new.html.erb b/app/views/admin/user_attributes/new.html.erb new file mode 100644 index 00000000..f04da0e5 --- /dev/null +++ b/app/views/admin/user_attributes/new.html.erb @@ -0,0 +1,16 @@ +

New user attribute: <%= @user_attribute.key %>

+ +<% form_for @user_attribute, :url => admin_user_attributes_path do |f| %> + +

+ <%= f.label :key, "Key" %> + <%= f.text_field :key %> +

+ + <%= render :partial => "form", :locals => { :f => f } %> + +

+ <%= f.submit %> +

+ +<% end -%> diff --git a/app/views/admin/users/_form.html.erb b/app/views/admin/users/_form.html.erb index 72c0e475..bbf39e4d 100644 --- a/app/views/admin/users/_form.html.erb +++ b/app/views/admin/users/_form.html.erb @@ -1,40 +1,47 @@ -
- <% if @user.avatar? %> - <%= image_tag(@user.avatar.thumb.url) %> - <% else %> - <%= image_tag "person.png" %> - <% end %> - <%= file_field_tag 'file' %> - <%= hidden_field_tag :avatar_cache %> - <%= f.text_field :email, :onfocus => "this.value='';", :onblur => "if(this.value==''){this.value=#{t('admin.email')};}", :value => (@user.email.blank? ? t('admin.email') : @user.email), :class => 'user_mail' %> - - <%= f.select :active_role, @user_role_models.sort_by{|role| role.key }.collect {|role| [ role.i18n_variable[I18n.locale], role.key ]}, :selected => (@user.active_role || 'student') %> -
- -<% @user_info_models.each do |ua| %> -
-

<%= ua.i18n_variable[I18n.locale] %>

-
- <%= render :partial => 'user_attribute', - :object => (@user.user_infos.detect {|u| u.key == ua.key } || @user.user_infos.build), - :locals => {:ua => ua, :type => 'info'} %> -
-<% end -%> - -
- <% @user_role_models.each do |ua| %> - - <% end -%> -
- -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "user_form" %> -<% end -%> +
+ <% if @user.avatar? %> + <%= image_tag(@user.avatar.thumb.url) %> + <% else %> + <%= image_tag "person.png" %> + <% end %> + <%= file_field_tag 'file' %> + <%= hidden_field_tag :avatar_cache %> + + + +
+ +<% @user_info_models.each do |ua| %> +
+

<%= ua.i18n_variable[I18n.locale] %>

+
+ <%= render :partial => 'user_attribute', + :object => (@user.user_infos.detect {|u| u.key == ua.key } || @user.user_infos.build), + :locals => {:ua => ua, :type => 'info'} %> +
+<% end -%> + +
+ <% @user_role_models.each do |ua| %> + + <% end -%> +
+ +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "user_form" %> +<% end -%> diff --git a/app/views/admin/users/_show_user_attribute.html.erb b/app/views/admin/users/_show_user_attribute.html.erb index a6468944..b83295d7 100644 --- a/app/views/admin/users/_show_user_attribute.html.erb +++ b/app/views/admin/users/_show_user_attribute.html.erb @@ -1,27 +1,27 @@ -
- - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - - <% am.get_enabled_attribute_models.each do |attr| %> - - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - <% end %> - -
<%= t("admin.key") %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= attr.i18n_variable[I18n.locale] %> - <% if attr["locale"] && attr["markup"] == 'text_field' %> - <%= show_user_attribute(object, attr.key, locale) %> - <% else %> - <%= show_user_attribute(object, attr.key) %> - <% end %> -
+
+ + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + <% am.get_enabled_attribute_models.each do |attr| %> + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + <% end %> + +
<%= t("admin.key") %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= attr.i18n_variable[I18n.locale] %> + <% if attr["locale"] && attr["markup"] == 'text_field' %> + <%= show_user_attribute(object, attr.key, locale) %> + <% else %> + <%= show_user_attribute(object, attr.key) %> + <% end %> +
\ No newline at end of file diff --git a/app/views/admin/users/_side_bar.html.erb b/app/views/admin/users/_side_bar.html.erb index 8b8393db..ce0e1296 100644 --- a/app/views/admin/users/_side_bar.html.erb +++ b/app/views/admin/users/_side_bar.html.erb @@ -1,11 +1,11 @@ -
-

<%= t('admin.setup_member') %>

-
    -
  • <%= link_to content_tag(:span, t('admin.list_users')), admin_users_path %>
  • -
  • <%= link_to content_tag(:span, t('admin.list_roles')), admin_roles_path %>
  • -
  • <%= link_to content_tag(:span, t('admin.list_infos')), admin_infos_path %>
  • -
+
+

<%= t('admin.setup_member') %>

+
    +
  • <%= link_to content_tag(:span, t('admin.list_users')), admin_users_path %>
  • +
  • <%= link_to content_tag(:span, t('admin.list_roles')), admin_roles_path %>
  • +
  • <%= link_to content_tag(:span, t('admin.list_infos')), admin_infos_path %>
  • +
\ No newline at end of file diff --git a/app/views/admin/users/_user_attribute.html.erb b/app/views/admin/users/_user_attribute.html.erb index 1ee17890..0a4bd269 100644 --- a/app/views/admin/users/_user_attribute.html.erb +++ b/app/views/admin/users/_user_attribute.html.erb @@ -1,44 +1,44 @@ -<%= fields_for "user[user_#{type}s]", user_attribute, :index => nil do |f| %> - <%= f.hidden_field :key, :value => ua.key %> - <%= f.hidden_field :id unless user_attribute.new_record? %> - -
- - - - - <% @site_valid_locales.each do |locale| %> - - <% end %> - - - - <% ua.get_enabled_attribute_models.each do |attr| %> - <% value = user_attribute.attribute_values.detect{|v| v.key == attr.key } %> - <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][id]", value.id rescue nil %> - <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][key]", attr.key %> - - - <% if attr["locale"] && attr["markup"] == 'text_field' %> - <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][non_locale]", nil %> - <% @site_valid_locales.each do |locale| %> - - <% end -%> - <% else %> - - <% end -%> - - <% end %> - -
<%= t("admin.key") %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= attr.i18n_variable[I18n.locale] %> - <%= text_field_tag "user[user_#{type}s][][attribute_values][][#{locale}]", (value[locale] rescue nil) %> - > - <% if attr["markup"] == "text_field" %> - <%= text_field_tag "user[user_#{type}s][][attribute_values][][non_locale]", (value['non_locale'] rescue nil) %> - <% elsif attr["markup"] == "select" %> - <%= select_tag "user[user_#{type}s][][attribute_values][][non_locale]", options_for_select(attr["options"], value['non_locale']) %> - <% end -%> -
-
- -<% end %> +<%= fields_for "user[user_#{type}s]", user_attribute, :index => nil do |f| %> + <%= f.hidden_field :key, :value => ua.key %> + <%= f.hidden_field :id unless user_attribute.new_record? %> + +
+ + + + + <% @site_valid_locales.each do |locale| %> + + <% end %> + + + + <% ua.get_enabled_attribute_models.each do |attr| %> + <% value = user_attribute.attribute_values.detect{|v| v.key == attr.key } %> + <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][id]", value.id rescue nil %> + <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][key]", attr.key %> + + + <% if attr["locale"] && attr["markup"] == 'text_field' %> + <%= hidden_field_tag "user[user_#{type}s][][attribute_values][][non_locale]", nil %> + <% @site_valid_locales.each do |locale| %> + + <% end -%> + <% else %> + + <% end -%> + + <% end %> + +
<%= t("admin.key") %><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= attr.i18n_variable[I18n.locale] %> + <%= text_field_tag "user[user_#{type}s][][attribute_values][][#{locale}]", (value[locale] rescue nil) %> + > + <% if attr["markup"] == "text_field" %> + <%= text_field_tag "user[user_#{type}s][][attribute_values][][non_locale]", (value['non_locale'] rescue nil) %> + <% elsif attr["markup"] == "select" %> + <%= select_tag "user[user_#{type}s][][attribute_values][][non_locale]", options_for_select(attr["options"], value['non_locale']) %> + <% end -%> +
+
+ +<% end %> diff --git a/app/views/admin/users/edit.html.erb b/app/views/admin/users/edit.html.erb index d848ead2..d0442fb8 100644 --- a/app/views/admin/users/edit.html.erb +++ b/app/views/admin/users/edit.html.erb @@ -1,12 +1,14 @@ -
- <%= form_for @user, :url => admin_user_path(@user), :html => { :multipart => true } do |f| %> - <%= f.error_messages %> - <%= render :partial => 'form', :locals => { :f => f } %> -
- <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %> -
-
- <%= link_back %> -
- <% end -%> +<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ <%= form_for @user, :url => admin_user_path(@user), :html => { :multipart => true } do |f| %> + <%= f.error_messages %> + <%= render :partial => 'form', :locals => { :f => f } %> +
+ <%= link_back %> + <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %> +
+ <% end -%>
\ No newline at end of file diff --git a/app/views/admin/users/index.html.erb b/app/views/admin/users/index.html.erb index d2385790..82abfd81 100644 --- a/app/views/admin/users/index.html.erb +++ b/app/views/admin/users/index.html.erb @@ -1,32 +1,43 @@ -
- <%= flash_messages %> -
- <%= link_to t('admin.new_user'), new_admin_user_path %> -
-
    -
  • - <%= t('admin.role') %> - <%= t('admin.name') %> - - <%= t('admin.admin') %> - <%= t('admin.action') %> -
  • - <% @users.each do |user| %> -
  • - <% active_role = UserRoleModel.get_role_model_from_key(user.active_role) %> - <%= active_role.i18n_variable[I18n.locale] rescue nil %> - <%= user.name ? user.name : 'bob' %> - - <%= user.admin ? t(:yes_) : t(:no_) %> - - <%= link_to t(:show), admin_user_path(user), :class => 'show' %> - <%= link_to t(:edit), edit_admin_user_path(user), :class => 'edit' %> - <%= link_to t(:delete), admin_user_path(user), :class => 'delete', :confirm => t('sure?'), :method => :delete %> - -
  • - <% end %> -
-
- <%= link_to t('admin.new_user'), new_admin_user_path %> -
-
+<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ <%= flash_messages %> +
+ <%= link_to t('admin.new_user'), new_admin_user_path, :class => 'new' %> +
+ + + + + + + + + + + + <% @users.each do |user| %> + <% active_role = UserRoleModel.get_role_model_from_key(user.active_role) %> + + + + + + + + + + + <% end %> + +
<%= t('admin.role') %><%= t('admin.name') %><%= t('admin.admin') %><%= t('admin.action') %>
<%= active_role.i18n_variable[I18n.locale] rescue nil %><%= user.name ? user.name : 'bob' %><%= user.admin ? t(:yes_) : t(:no_) %> + <%= link_to t(:show), admin_user_path(user), :class => 'show' %> + <%= link_to t(:edit), edit_admin_user_path(user), :class => 'edit' %> + <%= link_to t(:delete), admin_user_path(user), :class => 'delete', :confirm => t('sure?'), :method => :delete %> +
+
+ <%= link_to t('admin.new_user'), new_admin_user_path, :class => 'new' %> +
+
diff --git a/app/views/admin/users/new.html.erb b/app/views/admin/users/new.html.erb index cb6c8c72..0ff34529 100644 --- a/app/views/admin/users/new.html.erb +++ b/app/views/admin/users/new.html.erb @@ -1,17 +1,19 @@ -
- <%= form_for @user, :url => admin_users_path, :html => { :multipart => true } do |f| %> - <%= f.error_messages %> - <%= render :partial => 'form', :locals => { :f => f } %> -
- <%= link_to t('create'), "#", :onclick=>"$('#new_user').submit()" %> -
-
- <%= link_back %> -
- <% end -%> -
- - - - - +<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ <%= form_for @user, :url => admin_users_path, :html => { :multipart => true } do |f| %> + <%= f.error_messages %> + <%= render :partial => 'form', :locals => { :f => f } %> +
+ <%= link_back %> + <%= link_to t('create'), "#", :onclick=>"$('#new_user').submit()" %> +
+ <% end -%> +
+ + + + + diff --git a/app/views/admin/users/show.html.erb b/app/views/admin/users/show.html.erb index 87f2d689..3e195892 100644 --- a/app/views/admin/users/show.html.erb +++ b/app/views/admin/users/show.html.erb @@ -1,28 +1,34 @@ -
- -
- <% if @user.avatar? %> - <%= image_tag(@user.avatar.thumb.url) %> - <% else %> - <%= image_tag "person.png" %> - <% end %> - <%= link_to t(:edit), edit_admin_user_path(@user), :id => 'edit' %> -
- - <% @user_info_models.each do |am| %> -
-

<%= am.i18n_variable[I18n.locale] %>

-
- <%= render :partial => 'show_user_attribute', :locals => {:am => am, :object => @user.get_info_from_model_key(am.key)} %> -
- <% end -%> - -
- <% active_role = UserRoleModel.get_role_model_from_key(@user.active_role) %> -

<%= active_role.i18n_variable[I18n.locale] %>

-
- <%= render :partial => 'show_user_attribute', :locals => {:am => active_role, :object => @user.get_role_from_model_key(active_role.key)} %> -
- -
- +<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ +
+ <% if @user.avatar? %> + <%= image_tag(@user.avatar.thumb.url) %> + <% else %> + <%= image_tag "person.png" %> + <% end %> +
+ + <% @user_info_models.each do |am| %> +
+

<%= am.i18n_variable[I18n.locale] %>

+
+ <%= render :partial => 'show_user_attribute', :locals => {:am => am, :object => @user.get_info_from_model_key(am.key)} %> +
+ <% end -%> + +
+ <% active_role = UserRoleModel.get_role_model_from_key(@user.active_role) %> +

<%= active_role.i18n_variable[I18n.locale] %>

+
+ <%= render :partial => 'show_user_attribute', :locals => {:am => active_role, :object => @user.get_role_from_model_key(active_role.key)} %> +
+
+ <%= link_to t(:edit), edit_admin_user_path(@user) %> + <%= link_back %> +
+
+ diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index 54e7e6c2..a4bbbb43 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb @@ -1,36 +1,31 @@ - - - - - <%= @title || APP_CONFIG['orbit'] %> - - <%= stylesheet_link_tag "admin" %> - <%= javascript_include_tag "admin" %> - <%= yield :page_specific_css %> - <%= yield :page_specific_javascript %> - <%= csrf_meta_tag %> - - - - - -
-
-
-
<%= yield :secondary %>
-
-
-
<%= yield %>
-
-
<%= yield :tertiary %>
-
- -
- - + + + + + <%= @title || APP_CONFIG['orbit'] %> + + <%= stylesheet_link_tag "admin" %> + <%= javascript_include_tag "admin" %> + <%= yield :page_specific_css %> + <%= yield :page_specific_javascript %> + <%= csrf_meta_tag %> + + + + +
+ +
+ <%= yield %> +
+
<%= yield :tertiary %>
+ +
+ + diff --git a/app/views/layouts/admin.html.erb.back20111207 b/app/views/layouts/admin.html.erb.back20111207 new file mode 100644 index 00000000..54e7e6c2 --- /dev/null +++ b/app/views/layouts/admin.html.erb.back20111207 @@ -0,0 +1,36 @@ + + + + + <%= @title || APP_CONFIG['orbit'] %> + + <%= stylesheet_link_tag "admin" %> + <%= javascript_include_tag "admin" %> + <%= yield :page_specific_css %> + <%= yield :page_specific_javascript %> + <%= csrf_meta_tag %> + + + + + +
+
+
+
<%= yield :secondary %>
+
+
+
<%= yield %>
+
+
<%= yield :tertiary %>
+
+ +
+ + diff --git a/edit.html.erb b/edit.html.erb new file mode 100644 index 00000000..14c158fc --- /dev/null +++ b/edit.html.erb @@ -0,0 +1,14 @@ +<% content_for :secondary do %> + <%= render 'side_bar' %> +<% end %> + +
+ <%= form_for @user, :url => admin_user_path(@user), :html => { :multipart => true } do |f| %> + <%= f.error_messages %> + <%= render :partial => 'form', :locals => { :f => f } %> +
+ <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %> + <%= link_back %> +
+ <% end -%> +
\ No newline at end of file diff --git a/index.html.erb b/index.html.erb new file mode 100644 index 00000000..b5965a79 --- /dev/null +++ b/index.html.erb @@ -0,0 +1,34 @@ +<% content_for :secondary do %> + <%= render 'admin/users/side_bar' %> +<% end %> + +
+
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> +
+
    +
  • + <%= t("admin.#{@attribute}") %> + <%= t('admin.action') %> +
  • + <% @user_attribute_models.each do |user_attribute_model| %> +
  • clear"> + <%= user_attribute_model.i18n_variable[I18n.locale] %> + + + <%= link_to t(:edit), eval("edit_admin_user_#{@attribute}_model_path(user_attribute_model)"), :class => 'edit' %> + <% if user_attribute_model.is_built_in? %> + <%= link_to t(:enable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? 'none' : ''}", :class => 'switch' %> + <%= link_to t(:disable), eval("admin_user_#{@attribute}_model_path(user_attribute_model, :authenticity_token => form_authenticity_token, :user_#{@attribute}_model => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{user_attribute_model.id}", :style => "display:#{user_attribute_model.is_disabled? ? '' : 'none'}", :class => 'switch' %> + <% else %> + <%= link_to t(:delete), eval("admin_user_#{@attribute}_model_path(user_attribute_model)"), :class => 'delete', :confirm => t('sure?'), :method => :delete %> + <% end %> + + +
  • + <% end %> +
+
+ <%= link_to t("admin.new_user_#{@attribute}"), eval("new_admin_user_#{@attribute}_model_path") %> +
+