new ui member bug and interface fix

This commit is contained in:
Spen 2013-08-30 16:47:44 +08:00 committed by saurabhbhatia
parent 82b6be483a
commit 3123c5de0a
26 changed files with 369 additions and 299 deletions

View File

@ -38,7 +38,11 @@ if($.support.touch) {
$checked.each(function() {
if(!$(this).closest('div').hasClass('togglebox')) {
$(this).wrap('<div class="toggle-control"/>');
$(this).wrap('<div class="togglebox" />');
if($(this).attr('type') == "hidden" && $(this).attr('value')) {
$(this).wrap('<div class="togglebox disabled" />');
} else {
$(this).wrap('<div class="togglebox" />');
}
$('<label><b></b></label>').insertAfter($(this));
if($(this).data().deploy) {
switch($(this).data().deploy) {
@ -252,8 +256,8 @@ if($.support.touch) {
$arrow = $('.sub-nav-arrow'),
$wrap = $('#main-wrap'),
$wrapLeft = $wrap.css('margin-left'),
$position = 0,
$arrowHeightFormat = $('.position').height()-8;
$position = $arrow.outerHeight(true)*-1,
$arrowHeightFormat = $arrow.outerHeight(true)/2;
if($('#sidebar').length>0) {
$wrap.css({'margin-left': 61});
$wrapLeft = 61;
@ -270,7 +274,7 @@ if($.support.touch) {
}
// Arrow defaults position
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
$arrow.css({
'top': $position,
});
@ -281,7 +285,7 @@ if($.support.touch) {
$el.on(mouseenterEvent, function(e) {
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
$arrow.stop(true, false).animate({
top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
top: ($(this).position().top+$(this).height()/2)-$arrowHeightFormat+$('.scroller').position().top,
},{
duration: 500,
easing: 'easeInOutBack',
@ -325,7 +329,7 @@ if($.support.touch) {
})
};
// $el.on('mouseleave', function() {
// $el.hasClass('active') ? $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop() : 0;
// $el.hasClass('active') ? $position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
// $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
// });
$block.on({
@ -372,9 +376,9 @@ if($.support.touch) {
if($elIndex === null) {
$position = 0;
$position = $arrow.outerHeight(true)*-1;
} else {
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
$position = $el.eq($elIndex).position().top+$el.eq($elIndex).height()/2-$arrowHeightFormat+$('.scroller').position().top;
}
$arrow.stop(true, false).animate({
top: $position,
@ -409,8 +413,8 @@ if($.support.touch) {
});
// Sidebar Nav Drag
if(/MSIE 8.0/g.test($ua)){
$arrow.remove();
$sidebarMenu.addClass('nano')
.css({'position': 'relative', 'top': '0px'})
.children('.scroller')
.addClass('content')
.removeClass('scroller');
@ -472,15 +476,6 @@ if($.support.touch) {
}(window.jQuery);
var ini = function() {
api = this
api.modal = function(e) {
$('#dialog a.delete-item').attr("href", e);
$('#dialog').modal('show');
}
}
// Open Slide
function openSlide() {
var $openSlide = $('.open-slide'),
@ -506,8 +501,8 @@ function openSlide() {
}
function formTip() {
if($('.main-forms').length && $('.add-on').length) {
$('.main-forms .add-on, .main-forms .file-link').tooltip({
if($('.main-forms').length && $('.add-on').length || $('.phtot-action').length) {
$('.main-forms .add-on, .main-forms .file-link, .phtot-action li').tooltip({
position: {
my: "center bottom-4",
at: "center top"
@ -536,10 +531,6 @@ function changeStatusHidden() {
// Document Ready
$(function() {
new ini();
$('.delete').on('click', function() {
api.modal($(this).attr('rel'));
})
initialState();
$('#login').on('shown', function () {
$(document.body).addClass('modalBlur');
@ -565,7 +556,7 @@ $(function() {
if($('#sidebar').length) {
if(!/MSIE 8.0/g.test(navigator.userAgent)){
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
};
}
}
if($('#pageslide').length) {
openSlide();

View File

@ -1,37 +1,3 @@
function loadViewPage(url, id) {
var $listView = $(id);
$listView.empty().removeClass('in active');
$listView.load(url, function(response, status, xhr) {
$(this).addClass('in active');
$('#member-card').imagesLoaded(function() {
$('#member-card .member-avatar img').muImageResize({width: 150, height:150});
});
$('#member-abstract').imagesLoaded(function() {
$('#member-abstract .member-avatar img').muImageResize({width: 250, height:120});
});
})
}
$(function() {
$search = window.location.pathname.substring(1);
$search = $search.split("/");
$search = $search[$search.length-1];
$viewType = window.localStorage.getItem('viewType') || '#member-list';
$viewSwitchNo = window.localStorage.getItem('viewSwitchNo') || 0;
if($search == 'users-registrant-list.shtml') {
loadViewPage('member-registrant-list.html ' + $viewType, '#list-view');
} else {
loadViewPage('member-list.html ' + $viewType, '#list-view');
};
$('.view-switch').children('.btn').eq($viewSwitchNo).addClass('active');
$('.view-switch').delegate(".btn", 'click', function(e){
var url = $(this).attr('href'),
ID = url.split("#"),
ID = '#' + ID[ID.length-1];
window.localStorage.setItem('viewType', ID);
window.localStorage.setItem('viewSwitchNo', $(this).index());
loadViewPage(url, '#list-view');
e.preventDefault();
});
$('.member-avatar').rsImg();
})

View File

@ -1,3 +1,4 @@
var H,P = [];
// Go to
!function ($) {
$.fn.goTo = function (){
@ -13,43 +14,45 @@
}
}(window.jQuery);
function checkHeight() {
if($('#member-module').height() > $(window).height()) {
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))+
parseInt($('.wrap-inner').css('padding-bottom'))-
$('#orbit-bar').outerHeight(true);
}else{
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))+
parseInt($('.wrap-inner').css('padding-bottom'))-
$('#filter').outerHeight()+
parseInt($('#filter').css('margin-bottom'))-
$('#orbit-bar').outerHeight(true);
};
// if($('#member-module').height() > $(window).height()) {
// H = $(window).height()-
// parseInt($('.wrap-inner').css('padding-top'))+
// parseInt($('.wrap-inner').css('padding-bottom'))-
// $('#orbit-bar').outerHeight(true);
// }else{
// H = $(window).height()-
// parseInt($('.wrap-inner').css('padding-top'))+
// parseInt($('.wrap-inner').css('padding-bottom'))-
// $('#filter').outerHeight()+
// parseInt($('#filter').css('margin-bottom'))-
// $('#orbit-bar').outerHeight(true);
// };
H = $(window).height()-
parseInt($('.wrap-inner').css('padding-top'))-
$('#orbit-bar').outerHeight(true);
$('#basic-info').height(H);
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top')))
$('#member-roles').height(H-$('.member-avatar').outerHeight(true)-parseInt($('#member-roles').css('margin-top'))+20);
$('#module-content').height(H-$('#module-navbar .navbar').outerHeight(true)-$('.bottomnav').innerHeight());
};
$(function() {
var H;
checkHeight();
$(window).resize(function() {
checkHeight();
// setModuleBlockWidth();
});
$('.wrap-inner').css('padding-bottom', 0);
$(window).resize(checkHeight);
$('#member-roles h4 > span').each(function() {
$(this).css('margin-left',function() {
return $(this).innerWidth()/2*-1;
})
})
$('#basic-info').scrollToFixed({
marginTop: $('#orbit-bar').outerHeight(true)+20,
});
$('#module-navbar').scrollToFixed({
marginTop: $('#orbit-bar').outerHeight(true),
});
// $('#basic-info').scrollToFixed({
// marginTop: $('#orbit-bar').outerHeight(true)+20,
// });
// $('#module-navbar').scrollToFixed({
// marginTop: $('#orbit-bar').outerHeight(true),
// });
// $('.member-avatar').imagesLoaded(function() {
// $('#basic-info .member-avatar img').muImageResize({width: 100, height:100});
// });
$('#member-roles').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
})
$('.member-avatar').rsImg();
$('#member-roles, #module-content .nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
});

View File

@ -191,12 +191,17 @@ function returnAddressForm(element, decide) {
$(function() {
appendIndex = null;
if($('#new-user-forms').length) {
if($('#user-forms').length) {
addressVal = [];
addressArray = [];
addressInputId = [];
roleType = null;
returnDecide = false;
$('.attributes').each(function() {
if($(this).find('.toggle-check').attr('value') == "true") {
$(this).addClass('disabled').children('.attributes-body').hide();
}
});
$('.returnDecide').on(clickEvent, function() {
returnDecide = true;
})
@ -215,21 +220,21 @@ $(function() {
});
$('#address-field').on('show', getAddressForm($trigger, $('#address-field'), true));
});
$('#new-user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
$('#user-forms').delegate('.togglebox, .delete, .trigger, .remove-input', clickEvent, function(event) {
if($(this).hasClass('togglebox')) {
if($(this).hasClass('disabled')) {
$(this).find('.toggle-check')
.attr('value', 'false')
.closest('.attributes')
.removeClass('disabled')
.find('.attributes-body')
.children('.attributes-body')
.fadeIn(300);
} else {
$(this).find('.toggle-check')
.attr('value', 'true')
.closest('.attributes')
.addClass('disabled')
.find('.attributes-body')
.children('.attributes-body')
.fadeOut(300);
}
$(this).toggleClass('disabled');
@ -422,12 +427,13 @@ $(function() {
if($(this).hasClass('trigger')) {
// appendIndex = $(this).closest('.controls').find('.input-append').length;
appendIndex = $(this).closest('.controls').find('.input-append:last-child').children('input:first-child').attr('name');
appendIndex = appendIndex.split("][");
appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
// appendIndex = appendIndex.split("][");
// appendIndex = parseInt(appendIndex[appendIndex.length-2])+1;
appendIndex = parseInt(appendIndex.match(/[^[\D\]]+(?=])/g)[1])+1;
console.log(appendIndex)
attributeIndex = $(this).closest('.attributes').index();
templateType = $(this).closest('.attributes').find('.dataType').children("option:selected").attr('ref');
$("#template-input-append").tmpl(setData(attributeIndex, templateType, appendIndex)).appendTo($(this).closest('.controls').find('.add-target'));
inputAppendLength();
};
if($(this).hasClass('remove-input')) {

View File

@ -307,7 +307,7 @@
.main-forms .field-type .control-group:last-child {
margin-bottom: 10px;
}
#new-user-forms .control-group .add-target .input-append,
#user-forms .control-group .add-target .input-append,
.main-forms .field-type .control-group .add-target .input-append {
display: block;
margin-bottom: 10px;
@ -324,7 +324,7 @@
border-radius: 0 4px 4px 0;
}
#new-user-forms .control-group .add-target .input-append input.last {
#user-forms .control-group .add-target .input-append input.last {
border-radius: 4px;
}

View File

@ -2,6 +2,11 @@
#list-view h4 a {
color: #000;
text-decoration: none;
display: block;
overflow: hidden;
width: 100%;
text-overflow: ellipsis;
white-space: nowrap;
}
/* List */
@ -106,10 +111,31 @@
#list-view #member-abstract .member-avatar .action > a.trash {
background-color: #b94a48;
}
#list-view #member-abstract .member-avatar > span {
/*#list-view #member-abstract .member-avatar:after {
content: "";
position: absolute;
width: 250px;
height: 120px;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
margin: 0;
background-color: #000000;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}*/
#list-view #member-abstract > li .member-avatar:after {
-webkit-backface-visibility: hidden;
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
margin: 0;
background-color: #000000;
@ -120,7 +146,8 @@
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
#list-view #member-abstract > li:hover .member-avatar > span {
#list-view #member-abstract > li:hover .member-avatar:after {
-webkit-backface-visibility: hidden;
opacity: .4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
@ -159,11 +186,6 @@
float: left;
position: relative;
}
#list-view #member-card > li:hover .member-avatar > span {
opacity: 0.4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
}
#list-view #member-card > li:hover .member-avatar .action {
visibility: visible;
}
@ -183,14 +205,37 @@
#list-view #member-card .member-avatar.gender-woman {
border-color: #FF3196;
}
#list-view #member-card .member-avatar.gender-none {
#list-view #member-card .member-avatar.gender-nene {
border-color: #DDDDDD;
}
#list-view #member-card .member-avatar img {
/*width: 100%;*/
max-width: none;
}
#list-view #member-card .member-avatar > span {
#list-view #member-card > li .member-avatar:after {
-webkit-backface-visibility: hidden;
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
margin: 0;
background-color: #000000;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
}
#list-view #member-card > li:hover .member-avatar:after {
opacity: .4;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
filter: alpha(opacity=40);
}
/*#list-view #member-card .member-avatar > span {
position: absolute;
width: 150px;
height: 150px;
@ -203,7 +248,7 @@
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
}*/
#list-view #member-card .member-avatar .action {
position: absolute;
z-index: 1;
@ -262,22 +307,25 @@
margin-top: 20px;
}
#profile #basic-info .member-avatar {
width: 106px;
height: 106px;
width: 103px;
height: 103px;
float: left;
}
#profile #basic-info .member-avatar img {
border: 3px solid #ffffff;
width: 100%;
max-width: none;
-webkit-border-radius: 9px;
-moz-border-radius: 9px;
border-radius: 9px;
}
#profile #basic-info .member-avatar.gender-man img {
#profile #basic-info .member-avatar:after {
content: "";
-webkit-backface-visibility: hidden;
}
#profile #basic-info .member-avatar.gender-man {
border-color: #34ADFF;
}
#profile #basic-info .member-avatar.gender-woman img {
#profile #basic-info .member-avatar.gender-woman {
border-color: #FF3196;
}
#profile #basic-info .member-avatar.gender-none img {
#profile #basic-info .member-avatar.gender-none {
border-color: #DDDDDD;
}
#profile #member-roles {
@ -313,18 +361,18 @@
#profile #member-roles .roles dd {
color: #999999;
}
#profile #module-navbar {
margin-left: 10px;
}
#profile #member-module {
margin-left: 360px;
}
#profile #member-module #module-navbar.scroll-to-fixed-fixed {
background-color: #F3F3F3;
padding-top: 20px;
}
#profile #member-module #module-navbar.scroll-to-fixed-fixed .navbar {
margin-bottom: 10px;
}
#profile #member-module #module-content {
padding: 0 10px;
padding: 0 0 0 10px;
}
#profile #member-module #module-content .content {
right: 10px;
outline: none;
}

View File

@ -1,6 +1,7 @@
class Admin::UsersNewInterfaceController < OrbitMemberController
helper MemberHelper
helper OrbitBackendHelper
before_filter :set_attribute,:except => [:index,:show]
open_for_visitor :only => [:index, :show]
@ -16,50 +17,64 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
@filter = params[:filter]
new_filter = params[:new_filter]
@mq = params[:mq]
@new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
elsif @filter && @new_filter
if @filter.has_key?(@new_filter[:type]) && @filter[@new_filter[:type]].include?(@new_filter[:id].to_s)
@filter[@new_filter[:type]].delete(@new_filter[:id].to_s)
elsif @filter.has_key?(@new_filter[:type])
@filter[@new_filter[:type]] << @new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
@filter.merge!({@new_filter[:type] => [@new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
elsif @new_filter
@filter = {@new_filter[:type] => [@new_filter[:id].to_s]}
end
if @filter.blank?
if @filter.blank? and @mq.blank?
render case params[:at]
when 'summary'
@users=User.not_guest_user.page(page_num).per(12).asc("_id").includes('avatar')
@users=User.not_guest_user.page(page_num).per(12).desc("_id").includes('avatar')
"index_summary"
when 'thumbnail'
@users=User.not_guest_user.page(page_num).per(36).asc("_id").includes('avatar')
@users=User.not_guest_user.page(page_num).per(36).desc("_id").includes('avatar')
"index_thumbnail"
else
@users=User.not_guest_user.page(page_num).per(10).asc("_id").includes('avatar')
@users=User.not_guest_user.page(page_num).per(10).desc("_id").includes('avatar')
"index"
end
else
elsif @filter.blank? and !@mq.blank?
render case params[:at]
when 'summary'
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(12).asc("_id").includes('avatar')
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
"index_summary"
when 'thumbnail'
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(36).asc("_id").includes('avatar')
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
"index_thumbnail"
else
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).asc("_id").includes('avatar')
@users=User.not_guest_user.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id").includes('avatar')
"index"
end
elsif !@filter.blank? and @mq.blank?
render case params[:at]
when 'summary'
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(12).desc("_id").includes('avatar')
"index_summary"
when 'thumbnail'
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(36).desc("_id").includes('avatar')
"index_thumbnail"
else
@users=User.not_guest_user.any_in(:role_ids=>@filter['role']).page(page_num).per(10).desc("_id").includes('avatar')
"index"
end
@ -215,7 +230,13 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
@user.destroy
end
redirect_to :action => :index
# redirect_to :action => :index
respond_to do |format|
format.html { redirect_to(admin_users_new_interface_index_url(:at=>params[:at])) }
# format.xml { head :ok }
format.js
end
end
protected

View File

@ -34,7 +34,8 @@ module AttributeFieldsHelper
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
key_field = can_muti_lang_input? ? "[#{key}]" : ""
place_holder= @panel_setting["placeholder"][key] rescue ''
result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
# result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
result = text_field_tag(get_field_name_base + key_field, value,@markup_options.merge({:placeholder=>place_holder,:for=>key}))
add_ext= @attribute_value.address_ext[key] rescue {}
@ -181,7 +182,7 @@ protected
def lang_panel_tabbable_wrapper(add_more_params,&block)
add_more_counter = ''
if self.markup=='text_area' or self.markup=='address'
if self.markup=='text_area' #or self.markup=='address'
tmp1 = VALID_LOCALES.collect do |key|
value = @prefiled_value[key] rescue nil
@ -261,7 +262,7 @@ protected
link_to(I18nVariable.from_locale(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale.to_s ? "active" : nil)}",:for=>key)
end # of VALID_LOCALES.collect for tabs
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"##{get_pairing_tab_class({})}_m_window", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
buff2 << link_to((content_tag :i,'',:class=>'icon-edit'),"#address-field", :role=>"button",:class=>'btn',:data=>{:toggle=>"modal"}) if self.markup == 'address'
buff2 << link_to((content_tag :i,'',:class=>'icon-trash'),"#",:class=>"btn remove-input") if self.add_more
buff2.join.html_safe
end # of content ul
@ -357,7 +358,7 @@ protected
# address = content_tag :div,:class=>"multipleInput editMore" do
address = content_tag :div,:class=>"control-group" do
label + content_tag(:div, controls_wrapper(&block), :class=>'controls')
label + content_tag(:div, controls_wrapper(&block), :class=>'controls add-input')
end # of div multipleInput editMore
result = address
@ -452,7 +453,7 @@ protected
def gen_modal_dialog
render_anywhere("shared/attribute_field/address_modal_dialog",{
:field_name=>title,
:html_id=>"#{get_pairing_tab_class({})}_m_window",
:html_id=>"address-field",
:btn_class => "#{get_pairing_tab_class({})}",
:field_name_basic => get_basic_field_name_base
}

View File

@ -7,7 +7,7 @@ class User
mount_uploader :avatar, AvatarUploader
field :admin, :type => Boolean, :default => true
field :admin, :type => Boolean, :default => false
field :active_role
field :user_id
field :sid

View File

@ -4,7 +4,7 @@
<div class="accordion-inner pagination-right" data-toggle="buttons-checkbox">
<% @roles.each do |role| %>
<%#= link_to role.title, url_for(:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{is_filter_active?('role', role.id)}" %>
<%= link_to role.title, url_for(:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{' active' if (@filter['role'].include?(role.id) rescue nil)}" %>
<%= link_to role.title, url_for(:at=>params[:at],:filter => @filter, :new_filter => {:type => 'role', :id => role.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn btn-small #{' active' if (@filter['role'].include?(role.id) rescue nil)}" %>
<% end %>
<%= render :partial => 'clear_filters', :locals => {:type => 'role'} %>

View File

@ -1,8 +1,10 @@
<%= render :partial=>"infos"%>
<%= render :partial=>"roles"%>
<div id="roles-area" class="input-area">
<%= render :partial=>"roles"%>
</div>
<% content_for :page_specific_javascript do -%>

View File

@ -4,11 +4,11 @@
<%= stylesheet_link_tag "lib/wrap-nav" %>
<%= stylesheet_link_tag "lib/main-list" %>
<%= stylesheet_link_tag "lib/filter" %>
<%= stylesheet_link_tag "lib/member" %>
<% end -%>
<% content_for :page_specific_javascript do -%>
<%#= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
<%= javascript_include_tag "lib/jquery.mu.image.resize.js" %>
<%#= javascript_include_tag "lib/member/list-view.js" %>
<%= javascript_include_tag "lib/jquery.lite.image.resize.js" %>
<%= javascript_include_tag "lib/member/list-view.js" %>
<% end -%>

View File

@ -1,5 +1,5 @@
<div id="roles-area" class="input-area">
<% role_disable = @user.roles.include?(role) ? false : true %>
@ -14,7 +14,7 @@
<h4><%= role.title %><%= t(:role_info)%></h4>
</div>
<div class="attributes-body" style="display: <%= role_disable ? 'none' : 'block' %>;" >
<div class="attributes-body">
<% @form_index = @form_index +1 %>
@ -54,7 +54,7 @@
<% @form_index = @form_index +1 %>
<div id="roles-area" class="input-area">
<div class="input-area sub-role">
<% role.sub_roles.where(:disabled=>false).asc("_id").each do |sub_role| %>
@ -72,7 +72,7 @@
<h4><%= sub_role.title %><%= t(:role_info)%></h4>
</div>
<div class="attributes-body" style="display: <%= sub_role_disable ? 'none' : 'block' %>;">
<div class="attributes-body">
<% sub_role.attribute_fields.asc(:_id).each do |af|%>
<%= af.block_helper(@user,@form_index)%>
@ -95,7 +95,5 @@
</div>
</div>

View File

@ -1,6 +1,7 @@
<nav id="sidebar">
<h2 class="position">
<%= link_to content_tag(:i, nil, :class => "icons-users"), admin_site_site_info_path(@site) %>
<%#= link_to content_tag(:i, nil, :class => "icons-users"), admin_site_site_info_path(@site) %>
<%= content_tag(:i, nil, :class => "icons-users") %>
</h2>
<div id="sidebar-menu">
<div class="scroller">

View File

@ -7,7 +7,7 @@
@user_sex = 'gender-none'
end
%>
<tr>
<tr id="<%= dom_id user_for_listing %>">
<td class="<%= @user_sex %>"></td>
<td>
<% user_for_listing.roles.each do |rf| %>
@ -20,8 +20,8 @@
<div class="quick-edit">
<ul class="nav nav-pills">
<%= content_tag(:li, link_to(t(:edit),edit_admin_users_new_interface_path(user_for_listing))) if is_admin? %>
<li><a href="#">Permissions</a></li>
<li><a href="#" class="text-error">Delete</a></li>
<%= content_tag(:li, link_to(t(:Permissions),'#')) if is_admin? %>
<%= content_tag(:li, link_to(t(:delete),admin_users_new_interface_path(user_for_listing, :at=>params[:at]), :confirm => t(:sure?), :method => :delete, :class=>"text-error", :remote => true)) if is_admin? %>
</ul>
</div>
</td>

View File

@ -1,11 +1,20 @@
<li>
<li id="<%= dom_id user_for_summary %>">
<div class="member-avatar">
<%
if user_for_summary.sex == 'male'
@user_sex = 'gender-man'
elsif user_for_summary.sex == 'female'
@user_sex = 'gender-woman'
else
@user_sex = 'gender-none'
end
%>
<p class="<%= @user_sex%>"></p>
<div class="action">
<%= link_to("<i class='icon-edit'></i>".html_safe,edit_admin_users_new_interface_path(user_for_summary),:class=>"edit" ) if is_admin?%>
<a class="key" href="#"><i class="icon-key"></i></a>
<a class="trash" href="#"><i class="icon-trash"></i></a>
<%= link_to(content_tag(:i, nil, :class => 'icon-edit'),edit_admin_users_new_interface_path(user_for_summary),:class=>"edit" ) if is_admin?%>
<%= link_to(content_tag(:i, nil, :class => 'icon-key'),'#',:class=>"key" ) if is_admin?%>
<%= link_to(content_tag(:i, nil, :class => 'icon-trash'), admin_users_new_interface_path(user_for_summary, :at=>params[:at]), :confirm => t(:sure?), :method => :delete, :class=>"trash", :remote => true) if is_admin? %>
</div>
<span></span>
<%= show_avatar(user_for_summary) %>
</div>
<div class="member-info">
@ -14,22 +23,16 @@
<hr>
<ul class="member-roles">
<% user_for_summary.roles.each do |rf| %>
<% @roledata = Role.find(rf.id) %>
<li>
<span class="label label-info"><%= @roledata.title %></span>
<span class="member-staturs muted"><i class="icon-angle-right"></i> Full Time</span>
<span class="label label-info"><%= rf.title %></span>
<span class="member-staturs muted"><i class="icon-angle-right"></i>
<%= User.get_member_list_attribute_value(user_for_summary.id, rf.key, "job_title").get_value_by_locale(I18n.locale) rescue '' %>
<%= show_attribute_value(user_for_summary.role_statuses.where(:role_id=>rf.id).map{|t|t.title.to_s}.join(',')) rescue '' %>
</span>
</li>
<% end %>
</ul>
</div>
<%
if user_for_summary.sex == 'male'
@user_sex = 'gender-man'
elsif user_for_summary.sex == 'female'
@user_sex = 'gender-woman'
else
@user_sex = 'gender-none'
end
%>
<p class="<%= @user_sex%>"></p>
</li>
</li>

View File

@ -7,14 +7,15 @@
@user_sex = 'gender-none'
end
%>
<li>
<li id="<%= dom_id user_for_thumbnail %>">
<div class="member-avatar <%= @user_sex %>">
<div class="action">
<%= link_to("<i class='icon-edit'></i>".html_safe,edit_admin_users_new_interface_path(user_for_thumbnail),:class=>"edit" ) if is_admin?%>
<a class="key" href="#"><i class="icon-key"></i></a>
<a class="trash" href="#"><i class="icon-trash"></i></a>
<%= link_to(content_tag(:i, nil, :class => 'icon-edit'),edit_admin_users_new_interface_path(user_for_thumbnail),:class=>"edit" ) if is_admin?%>
<%= link_to(content_tag(:i, nil, :class => 'icon-key'),'#',:class=>"key" ) if is_admin?%>
<%= link_to(content_tag(:i, nil, :class => 'icon-trash'), admin_users_new_interface_path(user_for_thumbnail, :at=>params[:at]), :confirm => t(:sure?), :method => :delete, :class=>"trash", :remote => true) if is_admin? %>
</div>
<span></span>
<%= show_avatar(user_for_thumbnail) %>
</div>
<h4 class="member-name text-center"><%= link_to user_for_thumbnail.name,admin_users_new_interface_path(user_for_thumbnail)%></h4>

View File

@ -0,0 +1 @@
$("#<%= dom_id @user %>").remove();

View File

@ -15,12 +15,12 @@
<%= javascript_include_tag "lib/bootstrap-fileupload.js" %>
<%= javascript_include_tag "lib/bootstrap-datetimepicker.js" %>
<%= javascript_include_tag "lib/datetimepicker/date.time.picker.js" %>
<%= javascript_include_tag "lib/member/role-forms.js" %>
<%= javascript_include_tag "lib/member/textarea-lang-btn.js" %>
<%= javascript_include_tag "lib/member/role-forms.js" %>
<% end -%>
<%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true , :class=>"form-horizontal main-forms", :id=>"new-user-forms"} do |f| %>
<%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true , :class=>"form-horizontal main-forms", :id=>"user-forms"} do |f| %>
<fieldset>
<div id="basic-area" class="input-area">
@ -32,7 +32,7 @@
</div>
<div class="form-actions">
<%= link_to t(:update_), "#", :class=>"btn btn-primary returnDecide", :onclick=>"$('#new-user-forms').submit()" %>
<%= link_to t(:update_), "#", :class=>"btn btn-primary returnDecide", :onclick=>"$('#user-forms').submit()" %>
<%= link_back('btn') %>
</div>

View File

@ -6,20 +6,20 @@
<div id="filter" class="topnav clearfix">
<div class="view-switch btn-group pull-right" data-toggle="buttons-radio">
<div class="searchClear pull-left" style="clear: left;">
<form action="" method="get">
<%= text_field_tag 'mq',( params[:mq] ? params[:mq] : '' ), {:id=>'filter-input', :class => "search-query input-medium", :placeholder => 'Search'} %>
</form>
</div>
<div class="view-switch pull-right" data-toggle="buttons-radio">
<form action="" method="get" class="btn-group">
<button class="btn btn-small <%= "active" if params[:at].blank? %>"><i class="icon-list"></i> <%= t("show_mode.index")%></button>
<button name="at" value="summary" class="btn btn-small <%= "active" if params[:at] == "summary" %>"><i class="icon-th-list"></i> <%= t("show_mode.summary")%></button>
<button name="at" value="thumbnail" class="btn btn-small <%= "active" if params[:at] == "thumbnail" %>"><i class="icon-th"></i> <%= t("show_mode.thumbnail")%></button>
</form>
</div>
<div class="searchClear pull-right">
<form>
<input id="filter-input" class="search-query input-medium" type="text" placeholder="Search" value="">
</form>
</div>
<ul class="nav nav-pills filter-nav pull-right">
<li class="accordion-group">
<div class="accordion-heading">
@ -44,7 +44,7 @@
<tr class="sort-header">
<th class="gender"></th>
<th class="span3"><a href="#">Roles</a></th>
<th class="span4"><a href="#">Name <b class="icons-arrow-down-4"></b></a></th>
<th class="span4"><a href="#">Name</a></th>
<th><a href="#">Mail</a></th>
</tr>
</thead>
@ -54,4 +54,4 @@
</table>
</div>
<%= render :partial=> "index_paginator" %>
<%= render :partial=> "index_paginator" if @mq.blank? %>

View File

@ -6,20 +6,21 @@
<div id="filter" class="topnav clearfix">
<div class="view-switch btn-group pull-right" data-toggle="buttons-radio">
<div class="searchClear pull-left">
<form action="" method="get">
<%= text_field_tag 'mq',( params[:mq] ? params[:mq] : '' ), {:id=>'filter-input', :class => "search-query input-medium", :placeholder => 'Search'} %>
<input type="hidden" name="at" id="at" value="<%= params[:at] %>" />
</form>
</div>
<div class="view-switch pull-right" data-toggle="buttons-radio">
<form action="" method="get" class="btn-group">
<button class="btn btn-small <%= "active" if params[:at].blank? %>"><i class="icon-list"></i> <%= t("show_mode.index")%></button>
<button name="at" value="summary" class="btn btn-small <%= "active" if params[:at] == "summary" %>"><i class="icon-th-list"></i> <%= t("show_mode.summary")%></button>
<button name="at" value="thumbnail" class="btn btn-small <%= "active" if params[:at] == "thumbnail" %>"><i class="icon-th"></i> <%= t("show_mode.thumbnail")%></button>
</form>
</div>
<div class="searchClear pull-right">
<form>
<input id="filter-input" class="search-query input-medium" type="text" placeholder="Search" value="">
</form>
</div>
<ul class="nav nav-pills filter-nav pull-right">
<li class="accordion-group">
<div class="accordion-heading">
@ -42,4 +43,4 @@
</ul>
</div>
<%= render :partial=> "index_paginator" %>
<%= render :partial=> "index_paginator" if @mq.blank? %>

View File

@ -6,20 +6,21 @@
<div id="filter" class="topnav clearfix">
<div class="view-switch btn-group pull-right" data-toggle="buttons-radio">
<div class="searchClear pull-left">
<form action="" method="get">
<%= text_field_tag 'mq',( params[:mq] ? params[:mq] : '' ), {:id=>'filter-input', :class => "search-query input-medium", :placeholder => 'Search'} %>
<input type="hidden" name="at" id="at" value="<%= params[:at] %>" />
</form>
</div>
<div class="view-switch pull-right" data-toggle="buttons-radio">
<form action="" method="get" class="btn-group">
<button class="btn btn-small <%= "active" if params[:at].blank? %>"><i class="icon-list"></i> <%= t("show_mode.index")%></button>
<button name="at" value="summary" class="btn btn-small <%= "active" if params[:at] == "summary" %>"><i class="icon-th-list"></i> <%= t("show_mode.summary")%></button>
<button name="at" value="thumbnail" class="btn btn-small <%= "active" if params[:at] == "thumbnail" %>"><i class="icon-th"></i> <%= t("show_mode.thumbnail")%></button>
</form>
</div>
<div class="searchClear pull-right">
<form>
<input id="filter-input" class="search-query input-medium" type="text" placeholder="Search" value="">
</form>
</div>
<ul class="nav nav-pills filter-nav pull-right">
<li class="accordion-group">
<div class="accordion-heading">
@ -42,4 +43,4 @@
</ul>
</div>
<%= render :partial=> "index_paginator" %>
<%= render :partial=> "index_paginator" if @mq.blank? %>

View File

@ -15,13 +15,13 @@
<%= javascript_include_tag "lib/bootstrap-fileupload.js" %>
<%= javascript_include_tag "lib/bootstrap-datetimepicker.js" %>
<%= javascript_include_tag "lib/datetimepicker/date.time.picker.js" %>
<%= javascript_include_tag "lib/member/role-forms.js" %>
<%= javascript_include_tag "lib/member/textarea-lang-btn.js" %>
<%= javascript_include_tag "lib/member/role-forms.js" %>
<% end -%>
<%= form_for @user, :url => admin_users_new_interface_index_path, :html => { :multipart => true, :class=>"form-horizontal main-forms", :id=>"new-user-forms" },:method => :post do |f| %>
<%= form_for @user, :url => admin_users_new_interface_index_path, :html => { :multipart => true, :class=>"form-horizontal main-forms", :id=>"user-forms" },:method => :post do |f| %>
<fieldset>
<div id="basic-area" class="input-area">
@ -34,7 +34,7 @@
<div class="form-actions">
<%#= f.submit%>
<%= link_to t(:new_), "#", :class=>"btn btn-primary returnDecide", :onclick=>"$('#new-user-forms').submit()" %>
<%= link_to t(:new_), "#", :class=>"btn btn-primary returnDecide", :onclick=>"$('#user-forms').submit()" %>
<%= link_back('btn') %>
</div>

View File

@ -5,7 +5,7 @@
<%= render :partial => "js_and_css"%>
<% content_for :page_specific_javascript do -%>
<%= javascript_include_tag "lib/jquery-scrolltofixed-min.js" %>
<%= javascript_include_tag "lib/jquery.lite.image.resize.js" %>
<%= javascript_include_tag "lib/member/member.js" %>
<%= javascript_include_tag "lib/footable-0.1.js" %>
<% end -%>
@ -19,9 +19,10 @@
<div class="basic-profile">
<h4><%= @user.name%></h4>
<small class="muted"><%= @user.email %></small>
<%= link_to("<i class='icon-edit'></i>#{t(:edit)}".html_safe,edit_admin_users_new_interface_path(@user),:class=>"btn btn-mini" ) if is_admin?%>
<%= link_to("<i class='icons-cycle'></i>#{t("users.change_passwd")}".html_safe,admin_users_new_interface_edit_passwd_path(@user),:class=>"btn btn-mini" ) if is_admin?%>
<div class="btn-group">
<%= link_to("<i class='icon-edit'></i> #{t(:edit)}".html_safe,edit_admin_users_new_interface_path(@user),:class=>"btn btn-mini" ) if is_admin?%>
<%= link_to("<i class='icons-cycle'></i> #{t("users.change_passwd")}".html_safe,admin_users_new_interface_edit_passwd_path(@user),:class=>"btn btn-mini" ) if is_admin?%>
</div>
</div>
<div id="member-roles" class="nano">
@ -35,27 +36,43 @@
</div>
<div id="member-module">
<div id="module-navbar">
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<%= content_tag :li, :class=>(params[:show_plugin_profile].nil? ? "active" : nil) do %>
<%= link_to t(:all_plugin_summary)%>
<% end -%>
<% @plugins.each do |plugin| %>
<%= content_tag :li, :class=>(params[:show_plugin_profile] == plugin.name ? "active" : nil) do %>
<%= link_to plugin.name, :show_plugin_profile => plugin.name %>
<% end -%>
<% end -%>
</ul>
<div id="module-navbar">
<div class="navbar">
<div class="navbar-inner">
<span class="brand">
<%= params[:show_plugin_profile].nil? ? t(:all_plugin_summary) : params[:show_plugin_profile] %>
</span>
<ul class="nav pull-right">
<li class="divider-vertical"></li>
<li class="dropdown">
<a data-toggle="dropdown" class="dropdown-toggle" href="#">Module List <b class="caret"></b></a>
<ul class="dropdown-menu">
<% @plugins.each do |plugin| %>
<%= content_tag :li, :class=>(params[:show_plugin_profile] == plugin.name ? "active" : nil) do %>
<%= link_to plugin.name, :show_plugin_profile => plugin.name %>
<% end -%>
<% end -%>
</ul>
</li>
</ul>
</div>
</div>
</div>
<div id="module-content">
<div class="nano">
<div class="content">
<%=render :partial => @right_partial %>
</div>
</div>
</div>
</div>
</div>
<div id="module-content">
<%=render :partial => @right_partial %>
</div>
</div>
</div>

View File

@ -23,7 +23,7 @@
<section id="main-wrap">
<div class="wrap-inner">
<div id="filter" class="topnav clearfix">
<ul class="breadcrumb pull-left">
<ul class="breadcrumb">
<li><a href="/orbit_4.0.1/admin/dashboards/dashboards.shtml">Dashboard</a> <span class="divider">/</span></li>
<li class="active">All</li>
</ul>

View File

@ -1,62 +1,71 @@
<div class="modal hide fade address-edit <%= btn_class %>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" id=<%= html_id%>>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel"><%= (field_name rescue nil) || t("address_modal.default_title") %></h3>
</div>
<div class="modal-body">
<div id="address-field" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3><%= (field_name rescue nil) || t("address_modal.default_title") %></h3>
</div>
<div class="modal-body form-horizontal address-modal">
<div class="tabbable">
<ul class="nav nav-tabs">
<% VALID_LOCALES.each do |locale|%>
<% active = (locale == I18n.locale.to_s ? ["active"] : [] ) %>
<%= content_tag :li,:class=>active.push("modal_tab","address_tab").join(' '),:for=>locale do%>
<%= link_to I18nVariable.from_locale(locale),".#{btn_class}.address_modal.#{locale}",:data=>{:toggle=>"tab"}%>
<% end %>
<ul class="nav nav-tabs">
<% VALID_LOCALES.each do |locale|%>
<% active = (locale == I18n.locale.to_s ? ["active"] : [] ) %>
<%= content_tag :li,:class=>active,:for=>locale do%>
<%= link_to I18nVariable.from_locale(locale),".#{btn_class}.address_modal.#{locale}",:data=>{:toggle=>"tab"}%>
<% end %>
</ul>
<div class="tab-content">
<% VALID_LOCALES.each do |locale|%>
<!-- start of lang tab context -->
<% active = (locale == I18n.locale.to_s ? "active" : "" ) %>
<div class="tab-pane <%= active %> fade in <%= "#{btn_class} address_modal #{locale}" %>" for="<%= locale %>">
<div class="control-group">
<label class="control-label" for="street_address"><%= t("address_modal.street_address") %></label>
<div class="controls">
<%= text_area_tag("#{field_name_basic}[temp][address_ext][#{locale}][street_address]",nil,:rows=>3,:func=>'street_address') %>
</div>
</div>
<div class="control-group">
<label class="control-label" for="city"><%= t("address_modal.city") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][city]",'',:func=>'city') %>
</div>
</div>
<div class="control-group">
<label class="control-label" for="counties"><%= t("address_modal.county") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][county]",'',:func=>'county') %>
</div>
</div>
<div class="control-group">
<label class="control-label" for="zip"><%= t("address_modal.zip") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][zip]",nil,:class=>"input-mini",:func=>'zip') %>
</div>
</div>
<div class="control-group">
<label class="control-label" for="country"><%= t("address_modal.country") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][country]",'',:func=>'country') %>
</div>
<% end %>
</ul>
<div class="tab-content">
<% VALID_LOCALES.each do |locale|%>
<!-- start of lang tab context -->
<% active = (locale == I18n.locale.to_s ? "active" : "" ) %>
<div class="tab-pane fade <%= active %> in %>" for="<%= locale %>">
<div class="control-group">
<label class="control-label muted" for="street_address"><%= t("address_modal.street_address") %></label>
<div class="controls">
<%= text_area_tag("#{field_name_basic}[temp][address_ext][#{locale}][street_address]",nil,:rows=>3,:func=>'street_address', :class=>"input-xlarge") %>
</div>
</div>
<div class="control-group">
<label class="control-label muted" for="city"><%= t("address_modal.city") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][city]",'',:func=>'city', :class=>"input-xlarge") %>
</div>
</div>
<div class="control-group">
<label class="control-label muted" for="counties"><%= t("address_modal.county") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][county]",'',:func=>'county', :class=>"input-xlarge") %>
</div>
</div>
<div class="control-group">
<label class="control-label muted" for="zip"><%= t("address_modal.zip") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][zip]",nil,:class=>"input-mini",:func=>'zip', :class=>"input-xlarge") %>
</div>
</div>
<div class="control-group">
<label class="control-label muted" for="country"><%= t("address_modal.country") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][country]",'',:func=>'country', :class=>"input-xlarge") %>
</div>
</div>
<div class="control-group hide">
<label class="control-label muted" for="indicator"><%= t("address_modal.Indicator") %></label>
<div class="controls">
<%= text_field_tag("#{field_name_basic}[temp][address_ext][#{locale}][indicator]",'',:func=>'country', :class=>"input-xlarge") %>
</div>
</div>
<!-- end of tab context -->
<% end %>
</div>
<!-- end of tab context -->
<% end %>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true"><%=t(:close)%></button>
<button href="" class="btn btn-primary bt-save" data-dismiss="modal" aria-hidden="true"><%=t(:save_and_close)%></button>
</div>
</div>
</div>
<div class="modal-footer">
<a class="btn" data-dismiss="modal" aria-hidden="true"><%=t(:close)%></a>
<a class="btn btn-primary returnDecide" data-dismiss="modal" aria-hidden="true"><%=t(:save_and_close)%></a>
</div>
</div>