Merge commit '7c55f6fb8850ef426978dd422fa782358f9ec2fe' into ldap
Conflicts: config/environments/development.rb
This commit is contained in:
commit
7f05f21930
2
Gemfile
2
Gemfile
|
@ -22,7 +22,7 @@ gem 'rubyzip'
|
||||||
gem 'sinatra'
|
gem 'sinatra'
|
||||||
gem 'sprockets'
|
gem 'sprockets'
|
||||||
gem 'tinymce-rails'
|
gem 'tinymce-rails'
|
||||||
# gem 'therubyracer'
|
gem 'therubyracer'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,7 @@ GEM
|
||||||
railties (~> 3.0)
|
railties (~> 3.0)
|
||||||
thor (~> 0.14)
|
thor (~> 0.14)
|
||||||
json (1.6.5)
|
json (1.6.5)
|
||||||
|
libv8 (3.3.10.4)
|
||||||
linecache19 (0.5.12)
|
linecache19 (0.5.12)
|
||||||
ruby_core_source (>= 0.1.4)
|
ruby_core_source (>= 0.1.4)
|
||||||
mail (2.3.0)
|
mail (2.3.0)
|
||||||
|
@ -182,6 +183,8 @@ GEM
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
subexec (0.2.1)
|
subexec (0.2.1)
|
||||||
|
therubyracer (0.9.9)
|
||||||
|
libv8 (~> 3.3.10)
|
||||||
thor (0.14.6)
|
thor (0.14.6)
|
||||||
tilt (1.3.3)
|
tilt (1.3.3)
|
||||||
tinymce-rails (3.4.8)
|
tinymce-rails (3.4.8)
|
||||||
|
@ -239,6 +242,7 @@ DEPENDENCIES
|
||||||
sinatra
|
sinatra
|
||||||
spork
|
spork
|
||||||
sprockets
|
sprockets
|
||||||
|
therubyracer
|
||||||
tinymce-rails
|
tinymce-rails
|
||||||
uglifier
|
uglifier
|
||||||
watchr
|
watchr
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
|
@ -70,8 +70,28 @@ $(document).ready(function(){
|
||||||
});
|
});
|
||||||
$(window).resize(function(){
|
$(window).resize(function(){
|
||||||
resize();
|
resize();
|
||||||
$('#main-sidebar').css("height", viewportheight-40);
|
var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2;
|
||||||
$('#main-sidebar .viewport').css("height", viewportheight-40);
|
$('#main-sidebar').css("height", viewportheight-30);
|
||||||
|
$('#main-sidebar .viewport').css("height", viewportheight-30);
|
||||||
$('.post-title').css("width", viewportwidth-495);
|
$('.post-title').css("width", viewportwidth-495);
|
||||||
$('#main-sidebar').tinyscrollbar({ size:(viewportheight-44)});
|
$('#main-wrap > .subnav').css("width", viewportwidth-$mainWrapMarginLeft)
|
||||||
|
$('#main-sidebar').tinyscrollbar({size:(viewportheight-34)});
|
||||||
|
mainTablePosition()
|
||||||
|
});
|
||||||
|
/*main-table position*/
|
||||||
|
function mainTablePosition() {
|
||||||
|
var $height = $('#main-wrap > .subnav').height()
|
||||||
|
var $table = $('#main-wrap > .table')
|
||||||
|
//alert ($table.height())
|
||||||
|
$table.stop().animate({marginTop:$height},500)
|
||||||
|
//$table.css({marginTop : $height})
|
||||||
|
}
|
||||||
|
$(window).scroll(function () {
|
||||||
|
//var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
|
||||||
|
//var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
|
||||||
|
var $winLeft = $(window).scrollLeft()
|
||||||
|
$(".table-label").css({left:$winLeft*-1} );
|
||||||
|
//$(".table-label").css({left:$mainWrapMarginLeft+($winLeft*-1)} );
|
||||||
|
//$("#main-wrap > .subnav").css({width:$subnavWidth+($winLeft)} );
|
||||||
|
//console.log($mainWrapMarginLeft+($winLeft*-1)+5);
|
||||||
});
|
});
|
||||||
|
|
|
@ -2663,7 +2663,8 @@ button.btn.small, input[type="submit"].btn.small {
|
||||||
.pagination li {
|
.pagination li {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
.pagination a {
|
|
||||||
|
.pagination .page{
|
||||||
float: left;
|
float: left;
|
||||||
padding: 0 14px;
|
padding: 0 14px;
|
||||||
line-height: 34px;
|
line-height: 34px;
|
||||||
|
@ -2671,6 +2672,28 @@ button.btn.small, input[type="submit"].btn.small {
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
border-left-width: 0;
|
border-left-width: 0;
|
||||||
}
|
}
|
||||||
|
.pagination a {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.pagination .next{
|
||||||
|
float: left;
|
||||||
|
padding: 0 14px;
|
||||||
|
line-height: 34px;
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
.pagination .last{
|
||||||
|
float: left;
|
||||||
|
padding: 0 14px;
|
||||||
|
line-height: 34px;
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
.pagination .current{
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
.pagination a:hover, .pagination .active a {
|
.pagination a:hover, .pagination .active a {
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
@font-face{
|
@font-face{
|
||||||
font-family: 'WebSymbolsRegular';
|
font-family: 'WebSymbolsRegular';
|
||||||
src: url(<%= asset_path 'fonts/websymbols-regular-webfont.eot' %>);
|
src: url(<%= asset_path 'websymbols-regular-webfont.eot' %>);
|
||||||
src: url(<%= asset_path 'fonts/websymbols-regular-webfont.eot?#iefix' %>) format('embedded-opentype'),
|
src: url(<%= asset_path 'websymbols-regular-webfont.eot?#iefix' %>) format('embedded-opentype'),
|
||||||
url(<%= asset_path 'fonts/websymbols-regular-webfont.woff' %>) format('woff'),
|
url(<%= asset_path 'websymbols-regular-webfont.woff' %>) format('woff'),
|
||||||
url(<%= asset_path 'fonts/websymbols-regular-webfont.ttf' %>) format('truetype'),
|
url(<%= asset_path 'websymbols-regular-webfont.ttf' %>) format('truetype'),
|
||||||
url(<%= asset_path 'fonts/websymbols-regular-webfont.svg#WebSymbolsRegular' %>) format('svg');
|
url(<%= asset_path 'websymbols-regular-webfont.svg#WebSymbolsRegular' %>) format('svg');
|
||||||
}
|
}
|
||||||
.login-logo {
|
.login-logo {
|
||||||
text-indent: -9999px;
|
text-indent: -9999px;
|
||||||
|
@ -30,6 +30,15 @@
|
||||||
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
||||||
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
|
||||||
|
|
||||||
|
background-image: -moz-linear-gradient(top, #5282A6, #133757);
|
||||||
|
background-image: -ms-linear-gradient(top, #5282A6, #133757);
|
||||||
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5282A6), to(#133757));
|
||||||
|
background-image: -webkit-linear-gradient(top, #5282A6, #133757);
|
||||||
|
background-image: -o-linear-gradient(top, #5282A6, #133757);
|
||||||
|
background-image: linear-gradient(top, #5282A6, #133757);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5282A6', endColorstr='#133757', GradientType=0);
|
||||||
|
/*
|
||||||
background-image: -moz-linear-gradient(top, #545b60, #191a1c);
|
background-image: -moz-linear-gradient(top, #545b60, #191a1c);
|
||||||
background-image: -ms-linear-gradient(top, #545b60, #191a1c);
|
background-image: -ms-linear-gradient(top, #545b60, #191a1c);
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));
|
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));
|
||||||
|
@ -37,6 +46,7 @@
|
||||||
background-image: -o-linear-gradient(top, #545b60, #191a1c);
|
background-image: -o-linear-gradient(top, #545b60, #191a1c);
|
||||||
background-image: linear-gradient(top, #545b60, #191a1c);
|
background-image: linear-gradient(top, #545b60, #191a1c);
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#545b60', endColorstr='#191a1c', GradientType=0);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#545b60', endColorstr='#191a1c', GradientType=0);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
#orbit-bar .navbar-search {
|
#orbit-bar .navbar-search {
|
||||||
float: none;
|
float: none;
|
||||||
|
@ -65,7 +75,8 @@
|
||||||
width:100%;
|
width:100%;
|
||||||
}
|
}
|
||||||
#orbit-bar .orbit-logo .brand {
|
#orbit-bar .orbit-logo .brand {
|
||||||
background: url(<%= asset_path 'orbit-bar.png' %>) no-repeat -162px -5px;
|
/* background: url(<%= asset_path 'orbit-bar.png' %>) no-repeat -162px -5px; */
|
||||||
|
background: url(<%= asset_path 'nccu_logo.png' %>) no-repeat 6px 0px;
|
||||||
text-indent:-9999px;
|
text-indent:-9999px;
|
||||||
padding: 5px 20px 4px;
|
padding: 5px 20px 4px;
|
||||||
}
|
}
|
||||||
|
@ -78,6 +89,9 @@
|
||||||
#orbit-bar .orbit-logo .dropdown-menu {
|
#orbit-bar .orbit-logo .dropdown-menu {
|
||||||
left: -15px;
|
left: -15px;
|
||||||
}
|
}
|
||||||
|
#orbit-bar .nav > li {
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
#orbit-bar .nav > li > a:hover {
|
#orbit-bar .nav > li > a:hover {
|
||||||
background-color: rgba(0,157,220,1);
|
background-color: rgba(0,157,220,1);
|
||||||
}
|
}
|
||||||
|
@ -121,7 +135,6 @@
|
||||||
}
|
}
|
||||||
#orbit-bar .nav span.member-name {
|
#orbit-bar .nav span.member-name {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
float: right;
|
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +225,7 @@
|
||||||
padding-right: 4px;
|
padding-right: 4px;
|
||||||
border-right: 1px solid rgba(0,0,0,.2);
|
border-right: 1px solid rgba(0,0,0,.2);
|
||||||
position:fixed;
|
position:fixed;
|
||||||
top: 42px;
|
top: 32px;
|
||||||
z-index: 88;
|
z-index: 88;
|
||||||
}
|
}
|
||||||
#main-sidebar .nav {
|
#main-sidebar .nav {
|
||||||
|
@ -250,7 +263,7 @@
|
||||||
#main-wrap {
|
#main-wrap {
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
margin-left:160px;
|
margin-left:160px;
|
||||||
padding-top: 42px;
|
padding-top: 32px;
|
||||||
padding-bottom: 18px;
|
padding-bottom: 18px;
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
|
|
|
@ -21,7 +21,10 @@ class Admin::AppAuthsController < ApplicationController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
app_auth = AppAuth.find_or_create_by(module_app_id: params[:module_app_id])
|
app_auth = AppAuth.find_or_create_by(module_app_id: params[:module_app_id])
|
||||||
params[:new].each do |item|
|
auth_all = params[:auth_all] || false
|
||||||
|
app_auth.update_attribute(:all,auth_all)
|
||||||
|
new_array = params[:new] || []
|
||||||
|
new_array.each do |item|
|
||||||
field = item[0]
|
field = item[0]
|
||||||
field_value = item[1]
|
field_value = item[1]
|
||||||
if field_value!=''
|
if field_value!=''
|
||||||
|
@ -66,6 +69,8 @@ class Admin::AppAuthsController < ApplicationController
|
||||||
@module_app = ModuleApp.find(params[:id])
|
@module_app = ModuleApp.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@module_app = ModuleApp.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -21,6 +21,10 @@ class Admin::ModuleAppsController < ApplicationController
|
||||||
@module_app = ModuleApp.find(params[:id])
|
@module_app = ModuleApp.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@module_app = ModuleApp.find(params[:id])
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@module_app = ModuleApp.find(params[:id])
|
@module_app = ModuleApp.find(params[:id])
|
||||||
|
@ -97,7 +101,7 @@ class Admin::ModuleAppsController < ApplicationController
|
||||||
end
|
end
|
||||||
#user is not permited to do that
|
#user is not permited to do that
|
||||||
flash[:notice] = t('admin.app_auth.operation_not_permitted')
|
flash[:notice] = t('admin.app_auth.operation_not_permitted')
|
||||||
redirect_to :action => "edit" # [TODO] maybe need to redirect to some other page
|
render :nothing => true, :status => 403
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +113,7 @@ class Admin::ModuleAppsController < ApplicationController
|
||||||
end
|
end
|
||||||
#user is not permited to do that
|
#user is not permited to do that
|
||||||
flash[:notice] = t('admin.app_auth.operation_not_permitted')
|
flash[:notice] = t('admin.app_auth.operation_not_permitted')
|
||||||
redirect_to :action => "edit" # [TODO] maybe need to redirect to some other page
|
render :nothing => true, :status => 403
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,8 +1,12 @@
|
||||||
class Admin::ObjectAuthsController < ApplicationController
|
class Admin::ObjectAuthsController < ApplicationController
|
||||||
|
include OrbitCoreLib::PermissionUnility
|
||||||
layout "admin"
|
layout "admin"
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
|
before_filter :check_if_user_can_do_object_auth
|
||||||
# before_filter :is_admin? ,:only => :index
|
# before_filter :is_admin? ,:only => :index
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
# if current_user.admin?
|
# if current_user.admin?
|
||||||
@object_auths = ObjectAuth.all
|
@object_auths = ObjectAuth.all
|
||||||
|
@ -14,6 +18,7 @@ class Admin::ObjectAuthsController < ApplicationController
|
||||||
def new
|
def new
|
||||||
obj = eval(params[:type]).find params[:obj_id]
|
obj = eval(params[:type]).find params[:obj_id]
|
||||||
@object_auth=obj.object_auths.build
|
@object_auth=obj.object_auths.build
|
||||||
|
@object_auth_title_option = eval(params[:type]+"::ObjectAuthTitlesOptions")
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html # new.html.erb
|
format.html # new.html.erb
|
||||||
format.xml { render :xml => @post }
|
format.xml { render :xml => @post }
|
||||||
|
@ -22,13 +27,21 @@ class Admin::ObjectAuthsController < ApplicationController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
obj = eval(params[:object_auth][:type]).find params[:object_auth][:obj_id]
|
obj = eval(params[:object_auth][:type]).find params[:object_auth][:obj_id]
|
||||||
@object_auth=obj.object_auths.create :title=> params[:object_auth][:title]
|
@object_auth=obj.object_auths.build :title=> params[:object_auth][:title]
|
||||||
|
if @object_auth.save
|
||||||
redirect_to edit_admin_object_auth_path(@object_auth)
|
redirect_to edit_admin_object_auth_path(@object_auth)
|
||||||
|
else
|
||||||
|
flash[:error] = t('admin.object.a_object_must_have_only_one_object_auth_profile_for_each_action')
|
||||||
|
redirect_to (:back)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_role
|
def create_role
|
||||||
object_auth = ObjectAuth.find(params[:id])
|
object_auth = ObjectAuth.find(params[:id])
|
||||||
params[:new].each do |item|
|
auth_all = params[:auth_all] || false
|
||||||
|
object_auth.update_attribute(:all,auth_all)
|
||||||
|
new_array = params[:new] || []
|
||||||
|
new_array.each do |item|
|
||||||
field = item[0]
|
field = item[0]
|
||||||
field_value = item[1]
|
field_value = item[1]
|
||||||
if field_value!=''
|
if field_value!=''
|
||||||
|
@ -70,6 +83,10 @@ class Admin::ObjectAuthsController < ApplicationController
|
||||||
@object_auth = ObjectAuth.find(params[:id])
|
@object_auth = ObjectAuth.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def check_if_user_can_do_object_auth
|
||||||
|
unless check_permission(:manager)
|
||||||
|
render :nothing => true, :status => 403
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -1,3 +0,0 @@
|
||||||
class ObitFrontendController< ObitFrontendComponentController
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,3 +0,0 @@
|
||||||
class ObitWidgetController< ObitFrontendComponentController
|
|
||||||
|
|
||||||
end
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
class OrbitBackendController< ApplicationController
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
before_filter :setup_vars
|
||||||
|
# before_filter {|c| c.front_end_available(@app_title)}
|
||||||
|
before_filter :check_user_can_use,:except => [:public]
|
||||||
|
include OrbitCoreLib::PermissionUnility
|
||||||
|
|
||||||
|
layout 'admin'
|
||||||
|
|
||||||
|
def setup_vars
|
||||||
|
@app_title = request.fullpath.split('/')[2]
|
||||||
|
@module_app = ModuleApp.first(conditions: {:key => @app_title} )
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def check_user_can_use
|
||||||
|
unless check_permission
|
||||||
|
redirect_to polymorphic_path(['panel',@app_title,'back_end','public'])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,4 +1,4 @@
|
||||||
class ObitFrontendComponentController< ApplicationController
|
class OrbitFrontendComponentController< ApplicationController
|
||||||
before_filter :setup_vars
|
before_filter :setup_vars
|
||||||
before_filter {|c| c.front_end_available(@app_title)}
|
before_filter {|c| c.front_end_available(@app_title)}
|
||||||
layout 'module_widget'
|
layout 'module_widget'
|
|
@ -0,0 +1,3 @@
|
||||||
|
class OrbitFrontendController< OrbitFrontendComponentController
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
class ObitWidgetController< OrbitFrontendComponentController
|
||||||
|
|
||||||
|
end
|
|
@ -3,4 +3,9 @@ module Admin::AppAuthHelper
|
||||||
link_to t(:enable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? 'none' : ''}", :class => 'switch'
|
link_to t(:enable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? 'none' : ''}", :class => 'switch'
|
||||||
link_to t(:disable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? '' : 'none'}", :class => 'switch'
|
link_to t(:disable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? '' : 'none'}", :class => 'switch'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def if_permitted_to(user,role)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -5,4 +5,17 @@ module AdminHelper
|
||||||
link_to('/' , admin_items_path) + ( @parent_items.map{ |i| link_to(i.name, admin_items_path(:parent_id=>i.id) ) } << @parent_item.name ).join("/").html_safe
|
link_to('/' , admin_items_path) + ( @parent_items.map{ |i| link_to(i.name, admin_items_path(:parent_id=>i.id) ) } << @parent_item.name ).join("/").html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Check if the current_user is manager in current module app
|
||||||
|
def is_manager?
|
||||||
|
@module_app.is_manager?(current_user) || is_admin?
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check if the current_user is sub manager in current module app
|
||||||
|
def is_sub_manager?
|
||||||
|
@module_app.is_sub_manager?(current_user)|| is_admin?
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_admin?
|
||||||
|
current_user.admin?
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -2,4 +2,5 @@ class AppAuth < PrototypeAuth
|
||||||
|
|
||||||
belongs_to :module_app
|
belongs_to :module_app
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,6 +1,7 @@
|
||||||
class ModuleApp
|
class ModuleApp
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include OrbitCoreLib::ObjectTokenUnility
|
||||||
|
|
||||||
field :key
|
field :key
|
||||||
field :title
|
field :title
|
||||||
|
@ -26,6 +27,14 @@ class ModuleApp
|
||||||
|
|
||||||
before_save :set_key
|
before_save :set_key
|
||||||
|
|
||||||
|
def is_manager?(user)
|
||||||
|
managing_users.include?(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_sub_manager?(user)
|
||||||
|
sub_managing_users.include?(user) || is_manager?(user)
|
||||||
|
end
|
||||||
|
|
||||||
def managing_users
|
def managing_users
|
||||||
self.managers.collect{ |t| t.user }
|
self.managers.collect{ |t| t.user }
|
||||||
end
|
end
|
||||||
|
@ -74,4 +83,5 @@ class ModuleApp
|
||||||
self.key = self.title.underscore if self.title
|
self.key = self.title.underscore if self.title
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class ObjectAuth < PrototypeAuth
|
class ObjectAuth < PrototypeAuth
|
||||||
|
include OrbitCoreLib::ObjectTokenUnility
|
||||||
|
validates_uniqueness_of :obj_authable_type,:scope => :title #{ |c| }
|
||||||
belongs_to :obj_authable, polymorphic: true
|
belongs_to :obj_authable, polymorphic: true
|
||||||
# > - Something.find_with_auth(query)
|
# > - Something.find_with_auth(query)
|
||||||
# > - or Something.find(query).auth
|
# > - or Something.find(query).auth
|
||||||
|
|
|
@ -4,7 +4,6 @@ class PrototypeAuth
|
||||||
# after_save :update_block_list,:update_privilage_list
|
# after_save :update_block_list,:update_privilage_list
|
||||||
|
|
||||||
field :title
|
field :title
|
||||||
field :token
|
|
||||||
field :all ,type: Boolean,default: false
|
field :all ,type: Boolean,default: false
|
||||||
|
|
||||||
belongs_to :users
|
belongs_to :users
|
||||||
|
@ -12,11 +11,12 @@ class PrototypeAuth
|
||||||
has_and_belongs_to_many :blocked_users, :inverse_of => nil, :class_name => "User"
|
has_and_belongs_to_many :blocked_users, :inverse_of => nil, :class_name => "User"
|
||||||
has_and_belongs_to_many :privilege_users, :inverse_of => nil, :class_name => "User"
|
has_and_belongs_to_many :privilege_users, :inverse_of => nil, :class_name => "User"
|
||||||
|
|
||||||
|
|
||||||
has_and_belongs_to_many :roles
|
has_and_belongs_to_many :roles
|
||||||
has_and_belongs_to_many :sub_roles
|
has_and_belongs_to_many :sub_roles
|
||||||
|
|
||||||
attr_protected :roles,:sub_roles,:privilege_users,:blocked_users,:users
|
attr_protected :roles,:sub_roles,:privilege_users,:blocked_users
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def add_role role
|
def add_role role
|
||||||
add_operation(:roles,role)
|
add_operation(:roles,role)
|
||||||
|
@ -68,7 +68,7 @@ class PrototypeAuth
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def auth_users
|
def auth_users_before_block_list
|
||||||
if self.all?
|
if self.all?
|
||||||
User.all.entries
|
User.all.entries
|
||||||
else
|
else
|
||||||
|
@ -83,11 +83,10 @@ class PrototypeAuth
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def auth_users_after_block_list
|
def auth_users
|
||||||
auth_users - self.blocked_users
|
auth_users_before_block_list - self.blocked_users
|
||||||
end
|
end
|
||||||
|
|
||||||
# protected
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
|
@ -0,0 +1 @@
|
||||||
|
<%= f.select :module_app_id, @apps.collect { |t| [t.title.capitalize, t.id] }, {:include_blank => true} ,{:rel => admin_module_apps_path } %>
|
|
@ -1,3 +1,10 @@
|
||||||
|
<div id="open_for_all_user">
|
||||||
|
<h1>All User</h1>
|
||||||
|
<%= form_tag(submit_url) do %>
|
||||||
|
<%= check_box_tag 'auth_all',true,(auth.all rescue true) %><%= submit_tag 'Add Role' %><br/>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="user_role_management">
|
<div id="user_role_management">
|
||||||
<h1>User Role</h1>
|
<h1>User Role</h1>
|
||||||
<%= form_tag(submit_url) do %>
|
<%= form_tag(submit_url) do %>
|
||||||
|
@ -10,7 +17,6 @@
|
||||||
<%= collection_select(:new,:blocked_user, User.all, :id, :name, :prompt => true) %>
|
<%= collection_select(:new,:blocked_user, User.all, :id, :name, :prompt => true) %>
|
||||||
<%= submit_tag 'Add BlockedList' %><br/>
|
<%= submit_tag 'Add BlockedList' %><br/>
|
||||||
<% end %>
|
<% end %>
|
||||||
<ul>Roles </ul>
|
|
||||||
<% unless auth.nil? %>
|
<% unless auth.nil? %>
|
||||||
<% auth.roles.each do |role| %>
|
<% auth.roles.each do |role| %>
|
||||||
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %>
|
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %>
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
<%= f.select :module_app_id, @apps.collect { |t| [t.title.capitalize, t.id] }, {}, {:rel => admin_module_apps_path } %>
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
<br /><br /><br /><br />
|
||||||
|
<%=@module_app.key %><br />
|
||||||
|
<%=@module_app.title %><br />
|
||||||
|
<%=@module_app.version %><br />
|
||||||
|
<%=@module_app.organization %><br />
|
||||||
|
<%=@module_app.author %><br />
|
||||||
|
<%=@module_app.intro %><br />
|
||||||
|
<%=@module_app.update_info %><br />
|
||||||
|
<%=@module_app.create_date %><br />
|
||||||
|
<%=@module_app.enable_frontend%><br />
|
||||||
|
<%=@module_app.app_pages%><br />
|
||||||
|
<%=@module_app.widgets%><br />
|
||||||
|
|
||||||
|
Mangers:
|
||||||
|
<ul>
|
||||||
|
<% @module_app.managers.each do |manager|%>
|
||||||
|
<li><%= manager.user.name %></li>
|
||||||
|
<%end%>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
SubManagers:
|
||||||
|
<div>
|
||||||
|
<% @module_app.sub_managers.each do |manager|%>
|
||||||
|
<%= manager.user.name %>
|
||||||
|
<%end%>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
All User?:<%= @module_app.app_auth.all %><br />
|
||||||
|
Blocked Users:<%= @module_app.app_auth.blocked_users.collect{|t| t.name} %><br />
|
||||||
|
Privilege Users:<%= @module_app.app_auth.privilege_users.collect{|t| t.name}%><br />
|
||||||
|
User Roles:<%= @module_app.app_auth.roles.collect{|t| t.key} %><br />
|
||||||
|
User Sub Roles:<%= @module_app.app_auth.sub_roles.collect{|t| t.key} %><br />
|
||||||
|
|
||||||
|
Available users after calculation:
|
||||||
|
<%= @module_app.app_auth.auth_users.collect{|user| user.name}.join(',') %>
|
|
@ -11,4 +11,4 @@
|
||||||
<%= render :partial => "admin/components/user_role_management", :locals => {
|
<%= render :partial => "admin/components/user_role_management", :locals => {
|
||||||
:object => @object_auth.auth_obj ,:auth=>@object_auth,:submit_url=>create_role_admin_object_auth_path(@object_auth),:ploy_route_ary=>['remove',:admin,@object_auth] } %>
|
:object => @object_auth.auth_obj ,:auth=>@object_auth,:submit_url=>create_role_admin_object_auth_path(@object_auth),:ploy_route_ary=>['remove',:admin,@object_auth] } %>
|
||||||
|
|
||||||
|
<%= link_to 'Back to object',eval(@object_auth.obj_authable.class.to_s+"::AfterObjectAuthUrl") %>
|
|
@ -12,7 +12,8 @@
|
||||||
<h1><%= t('object_auth.new_object_auth') %></h1>
|
<h1><%= t('object_auth.new_object_auth') %></h1>
|
||||||
<%= form_for @object_auth, :url => admin_object_auths_path do |f| %>
|
<%= form_for @object_auth, :url => admin_object_auths_path do |f| %>
|
||||||
<%= f.label :title %>
|
<%= f.label :title %>
|
||||||
<%= f.text_field :title, :class => 'text' %>
|
<%= f.select :title,@object_auth_title_option %>
|
||||||
|
|
||||||
<%= f.hidden_field :obj_id, :value => params[:obj_id] %>
|
<%= f.hidden_field :obj_id, :value => params[:obj_id] %>
|
||||||
<%= f.hidden_field :type, :value => params[:type] %>
|
<%= f.hidden_field :type, :value => params[:type] %>
|
||||||
|
|
||||||
|
|
|
@ -26,10 +26,10 @@
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<% if user_signed_in? %>
|
<% if user_signed_in? %>
|
||||||
<li class="dropdown active clear">
|
<li class="dropdown active">
|
||||||
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
||||||
<!-- <img src="images/menber-pic.png" /> -->
|
<img class="member-img" src="/assets/menber-pic.png" />
|
||||||
<%= image_tag current_user.avatar.thumb.url, :class => 'member-img' %>
|
<%#= image_tag current_user.avatar.thumb.url, :class => 'member-img' %>
|
||||||
<span class="member-name"><%= current_user.name %></span>
|
<span class="member-name"><%= current_user.name %></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu account-menu">
|
<ul class="dropdown-menu account-menu">
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
<%= t(:desktop) %>
|
<%= t(:desktop) %>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-out') + t(:logout), destroy_user_session_path %></li>
|
<li><%= link_to content_tag(:i, nil, :class => 'icons-out') + ' ' + t(:logout), destroy_user_session_path %></li>
|
||||||
|
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<form class="navbar-search span6" action="">
|
<form class="navbar-search span6" action="">
|
||||||
<input class="search-query span4" type="text" placeholder="Search NCCU">
|
<input class="search-query span4" type="text" placeholder="<%= t(:search_nccu) %>">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= content_tag :li, :class => active_for_controllers('users') do -%>
|
<%= content_tag :li, :class => active_for_controllers('users') do -%>
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), panel_web_resource_back_end_web_links_path %>
|
<%= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), nil %>
|
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
<%= content_tag :li, :class => active_for_controllers(nil) do -%>
|
||||||
|
|
|
@ -47,7 +47,7 @@ module PrototypeR4
|
||||||
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
||||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||||
# config.i18n.default_locale = :de
|
# config.i18n.default_locale = :de
|
||||||
config.i18n.default_locale = :en
|
config.i18n.default_locale = :zh_tw
|
||||||
|
|
||||||
# JavaScript files you want as :defaults (application.js is always included).
|
# JavaScript files you want as :defaults (application.js is always included).
|
||||||
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
||||||
|
|
|
@ -28,7 +28,7 @@ PrototypeR4::Application.configure do
|
||||||
# :email_prefix => "[R4_error]",
|
# :email_prefix => "[R4_error]",
|
||||||
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
|
# :sender_address => %{"notifier" <redmine@rulingcom.com>},
|
||||||
# :exception_recipients => %w{chris@rulingcom.com}
|
# :exception_recipients => %w{chris@rulingcom.com}
|
||||||
#
|
|
||||||
# config.action_mailer.delivery_method = :smtp
|
# config.action_mailer.delivery_method = :smtp
|
||||||
# config.action_mailer.smtp_settings = {
|
# config.action_mailer.smtp_settings = {
|
||||||
# :tls => true,
|
# :tls => true,
|
||||||
|
|
|
@ -32,6 +32,7 @@ en:
|
||||||
password: Password
|
password: Password
|
||||||
register: Register
|
register: Register
|
||||||
remember_me: Remember me
|
remember_me: Remember me
|
||||||
|
search_nccu: Search NCCU
|
||||||
show: Show
|
show: Show
|
||||||
submit: Submit
|
submit: Submit
|
||||||
sure?: Are you sure?
|
sure?: Are you sure?
|
||||||
|
|
|
@ -17,7 +17,7 @@ zh_tw:
|
||||||
edit: 編輯
|
edit: 編輯
|
||||||
email: 電子郵件
|
email: 電子郵件
|
||||||
enable: 啟用
|
enable: 啟用
|
||||||
forget_password: 忘記密碼?
|
forgot_password: 忘記密碼?
|
||||||
help: 協助
|
help: 協助
|
||||||
hide: 隱藏
|
hide: 隱藏
|
||||||
homepage: 首頁
|
homepage: 首頁
|
||||||
|
@ -25,10 +25,11 @@ zh_tw:
|
||||||
logout: 登出
|
logout: 登出
|
||||||
no_: "No"
|
no_: "No"
|
||||||
nothing: 無
|
nothing: 無
|
||||||
or_lower: 或者
|
or_lower: 或
|
||||||
password: 密碼
|
password: 密碼
|
||||||
register: 註冊
|
register: 註冊
|
||||||
remember_me: 記住我
|
remember_me: 記住我
|
||||||
|
search_nccu: 搜尋政大
|
||||||
show: 顯示
|
show: 顯示
|
||||||
submit: 送出
|
submit: 送出
|
||||||
sure?: 您肯定嗎?
|
sure?: 您肯定嗎?
|
||||||
|
|
|
@ -31,4 +31,44 @@ module OrbitCoreLib
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
module ObjectTokenUnility
|
||||||
|
def self.included(base)
|
||||||
|
base.instance_eval("field :s_token")
|
||||||
|
base.instance_eval("after_create :generate_token")
|
||||||
|
end
|
||||||
|
|
||||||
|
def token
|
||||||
|
return self.s_token
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
def generate_token
|
||||||
|
self.s_token = ActiveSupport::SecureRandom.hex(16)
|
||||||
|
self.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module PermissionUnility
|
||||||
|
private
|
||||||
|
def check_permission(type = :use)
|
||||||
|
permission_grant = current_user.admin?? true : false
|
||||||
|
module_app = @module_app.nil?? find_module_app_by_token(params[:token]) : @module_app
|
||||||
|
unless permission_grant
|
||||||
|
permission_grant = case type
|
||||||
|
when :use
|
||||||
|
users_ary = module_app.app_auth.auth_users rescue nil
|
||||||
|
users_ary = [] if users_ary.nil?
|
||||||
|
(users_ary.include?(current_user) || module_app.is_manager?(current_user) || module_app.is_sub_manager?(current_user))
|
||||||
|
when :manager
|
||||||
|
module_app.is_manager?(current_user)
|
||||||
|
when :sub_manager
|
||||||
|
module_app.is_manager?(current_user) || module_app.is_sub_manager?(current_user)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
permission_grant
|
||||||
|
end
|
||||||
|
def find_module_app_by_token(token)
|
||||||
|
ModuleApp.first(conditions: {s_token: token})
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -81,7 +81,7 @@ module ParserFrontEnd
|
||||||
res << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>"
|
res << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>"
|
||||||
res << "<script type='text/javascript' src='/assets/event.js'></script>"
|
res << "<script type='text/javascript' src='/assets/event.js'></script>"
|
||||||
page.design.javascripts.each do |js|
|
page.design.javascripts.each do |js|
|
||||||
res << "<script type='text/javascript' src='#{js.file.url}'></script>"
|
# res << "<script type='text/javascript' src='#{js.file.url}'></script>"
|
||||||
end
|
end
|
||||||
res
|
res
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
namespace :anc do
|
||||||
|
|
||||||
|
task :build => :environment do
|
||||||
|
bulletin_category_1 = BulletinCategory.create(:key => "C1ChrisCheckANDPreivew",:display => "List" )
|
||||||
|
bulletin_category_1.create_i18n_variable(:en => "ChrisCheckANDPreivew", :zh_tw => 'ChrisCheckANDPreivew')
|
||||||
|
bulletin_category_2 = BulletinCategory.create(:key => "C2MattCheckANDPreivew",:display => "List" )
|
||||||
|
bulletin_category_2.create_i18n_variable(:en => "MattCheckANDPreivew", :zh_tw => 'MattCheckANDPreivew')
|
||||||
|
bulletin_category_3 = BulletinCategory.create(:key => "C3MattCheckChrisPreview",:display => "List" )
|
||||||
|
bulletin_category_3.create_i18n_variable(:en => "MattCheckChrisPreview", :zh_tw => 'MattCheckChrisPreview')
|
||||||
|
|
||||||
|
|
||||||
|
bulletin_1 = Bulletin.create(:title => "C1P1",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_1 )
|
||||||
|
bulletin_2 = Bulletin.create(:title => "C1P2",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_1 )
|
||||||
|
bulletin_3 = Bulletin.create(:title => "C2P1",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_2 )
|
||||||
|
bulletin_4 = Bulletin.create(:title => "C2P2",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_2 )
|
||||||
|
bulletin_5 = Bulletin.create(:title => "C3P1",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_3 )
|
||||||
|
bulletin_6 = Bulletin.create(:title => "C3P2",:status => nil,:subtitle => "",:text => "value",:postadate => Time.now,:deadline => nil,:bulletin_category => bulletin_category_3 )
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -126,6 +126,12 @@ namespace :dev do
|
||||||
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[0].id, :key => 'major', :en => 'Information management', :zh_tw => '信息化管理' )
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[0].id, :key => 'major', :en => 'Information management', :zh_tw => '信息化管理' )
|
||||||
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[1].id, :key => 'department', :en => 'Computer Science', :zh_tw => '計算機科學' )
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[1].id, :key => 'department', :en => 'Computer Science', :zh_tw => '計算機科學' )
|
||||||
|
|
||||||
|
user = User.create( :email => 'manager@rulingcom.com', :password => 'password', :password_confirmation => 'password', :admin => false, :role_id => r_2.id, :sub_role_ids => [sr_2_1.id ] )
|
||||||
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => i_1.attribute_fields[0].id, :key => 'first_name', :en => 'Manager', :zh_tw => '管理員' )
|
||||||
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => i_1.attribute_fields[1].id, :key => 'last_name', :en => 'Chen', :zh_tw => '陳' )
|
||||||
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[0].id, :key => 'major', :en => 'Information management', :zh_tw => '信息化管理' )
|
||||||
|
AttributeValue.create( :user_id => user.id, :attribute_field_id => sr_2_1.attribute_fields[1].id, :key => 'department', :en => 'Computer Science', :zh_tw => '計算機科學' )
|
||||||
|
|
||||||
|
|
||||||
ad_banner = AdBanner.new(:title => 'banner_1',:post_date => Date.today,:context=> "context",:ad_fx=>'zoom',:direct_to_after_click=>true)
|
ad_banner = AdBanner.new(:title => 'banner_1',:post_date => Date.today,:context=> "context",:ad_fx=>'zoom',:direct_to_after_click=>true)
|
||||||
ad_banner.ad_images.build(:time_to_next=>2,:picture_intro=>'Banner1',:out_link=>'http://www.rulingcom.com/main.php',:file => File.open("#{Rails.root}/lib/ad_banner/ad_banner1.jpg",:link_open=>'new_window'))
|
ad_banner.ad_images.build(:time_to_next=>2,:picture_intro=>'Banner1',:out_link=>'http://www.rulingcom.com/main.php',:file => File.open("#{Rails.root}/lib/ad_banner/ad_banner1.jpg",:link_open=>'new_window'))
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :user do
|
||||||
User.all(conditions: {email: /nor/}).destroy_all
|
User.all(conditions: {email: /nor/}).destroy_all
|
||||||
|
|
||||||
username_list = %w{nor1 nor2 nor3 nor4 nor5 nor6 nor7}
|
username_list = %w{nor1 nor2 nor3 nor4 nor5 nor6 nor7}
|
||||||
userfirstname_list_en = %w{ One Two Thre For Fiv Six Sen }
|
userfirstname_list_en = %w{ UserOne UserTwo Thre For Fiv Six Sen }
|
||||||
userlastname_list_en = %w{ Aa Bb Cc Dd Ee Ff Gg }
|
userlastname_list_en = %w{ Aa Bb Cc Dd Ee Ff Gg }
|
||||||
|
|
||||||
userfirstname_list_ct = %w{ 一一 二二 三三 四四 五五 六六 七七 }
|
userfirstname_list_ct = %w{ 一一 二二 三三 四四 五五 六六 七七 }
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"title": "Announcement",
|
"title": "announcement",
|
||||||
"version": "0.1",
|
"version": "0.1",
|
||||||
"organization": "Rulingcom",
|
"organization": "Rulingcom",
|
||||||
"author": "RD dep",
|
"author": "RD dep",
|
||||||
|
|
|
@ -105,7 +105,7 @@ class Panel::Announcement::BackEnd::BulletinsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @bulletin.update_attributes(params[:bulletin])
|
if @bulletin.update_attributes(params[:bulletin]) && @bulletin.save
|
||||||
# format.html { redirect_to(panel_announcement_back_end_bulletin_url(@bulletin), :notice => t('bulletin.update_bulletin_success')) }
|
# format.html { redirect_to(panel_announcement_back_end_bulletin_url(@bulletin), :notice => t('bulletin.update_bulletin_success')) }
|
||||||
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) }
|
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) }
|
||||||
format.js { render 'toggle_enable' }
|
format.js { render 'toggle_enable' }
|
||||||
|
@ -145,7 +145,13 @@ class Panel::Announcement::BackEnd::BulletinsController < ApplicationController
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def get_categorys(id = nil)
|
def get_categorys(id = nil)
|
||||||
|
@bulletin_categorys = []
|
||||||
|
if(is_manager? || is_admin?)
|
||||||
@bulletin_categorys = (id ? BulletinCategory.find(id).to_a : BulletinCategory.excludes('disabled' => true))
|
@bulletin_categorys = (id ? BulletinCategory.find(id).to_a : BulletinCategory.excludes('disabled' => true))
|
||||||
|
elsif is_sub_manager?
|
||||||
|
@bulletin_categorys = BulletinCategory.authed_for_user(current_user,'submit_new')
|
||||||
|
end
|
||||||
|
<<<<<<< HEAD
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_sorted_bulletins
|
def get_sorted_bulletins
|
||||||
|
@ -190,6 +196,8 @@ class Panel::Announcement::BackEnd::BulletinsController < ApplicationController
|
||||||
a.flatten!
|
a.flatten!
|
||||||
a.uniq
|
a.uniq
|
||||||
end
|
end
|
||||||
|
=======
|
||||||
|
>>>>>>> 26cd6951dba43b1f6eaf5056160309c5c77a8716
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
class Panel::Announcement::BackEnd::FactChecksController < OrbitBackendController
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
include AdminHelper
|
||||||
|
layout 'admin'
|
||||||
|
|
||||||
|
def index
|
||||||
|
@bulletin_categorys_submit_new = []
|
||||||
|
@bulletin_categorys_check =[]
|
||||||
|
if is_admin? || is_manager?
|
||||||
|
#@bulletin_categorys_submit_new = BulletinCategory.all
|
||||||
|
@bulletin_categorys_check = BulletinCategory.all
|
||||||
|
# elsif is_sub_manager?
|
||||||
|
# @bulletin_categorys_submit_new = BulletinCategory.authed_for_user(current_user,'submit_new')
|
||||||
|
# @bulletin_categorys_check = BulletinCategory.authed_for_user(current_user,'fact_check')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -18,6 +18,8 @@ class Panel::Announcement::FrontEnd::BulletinsController < ObitWidgetController
|
||||||
end
|
end
|
||||||
|
|
||||||
get_categorys
|
get_categorys
|
||||||
|
|
||||||
|
@current_category = BulletinCategory.from_id(params[:bulletin_category_id]) rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
class BulletinCategory
|
class BulletinCategory
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include OrbitCoreLib::ObjectAuthable
|
||||||
|
|
||||||
|
ObjectAuthTitlesOptions = %W{submit_new fact_check}
|
||||||
|
AfterObjectAuthUrl = '/panel/announcement/back_end/bulletin_categorys'
|
||||||
# include Mongoid::MultiParameterAttributes
|
# include Mongoid::MultiParameterAttributes
|
||||||
|
|
||||||
PAYMENT_TYPES = [ "List", "Picture" ]
|
PAYMENT_TYPES = [ "List", "Picture" ]
|
||||||
|
@ -14,4 +18,8 @@ class BulletinCategory
|
||||||
|
|
||||||
has_many :bulletins
|
has_many :bulletins
|
||||||
|
|
||||||
|
def self.from_id(id)
|
||||||
|
BulletinCategory.find(id) rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -5,7 +5,15 @@
|
||||||
<td><%= bulletin_category.i18n_variable[locale] rescue nil %></td>
|
<td><%= bulletin_category.i18n_variable[locale] rescue nil %></td>
|
||||||
<% end %>
|
<% end %>
|
||||||
<td><%= bulletin_category.display %></td>
|
<td><%= bulletin_category.display %></td>
|
||||||
|
<% if is_manager? %>
|
||||||
<td>
|
<td>
|
||||||
|
<%= link_to t('blog.new_auth'), init_admin_object_auths_path("BulletinCategory",bulletin_category,:token => @module_app.token) %> <br/ >
|
||||||
|
<% bulletin_category.object_auths.each do |obj_auth| %>
|
||||||
|
<%= link_to obj_auth.title,edit_admin_object_auth_url(obj_auth,:token => @module_app.token) %><br />
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<% end %>
|
||||||
<%= link_to t('bulletin_category.edit'), edit_panel_announcement_back_end_bulletin_category_path(bulletin_category), :remote => true %> |
|
<%= link_to t('bulletin_category.edit'), edit_panel_announcement_back_end_bulletin_category_path(bulletin_category), :remote => true %> |
|
||||||
<%= link_to t('bulletin_category.quick_edit'), panel_announcement_back_end_bulletin_category_quick_edit_path(bulletin_category), :remote => true %> |
|
<%= link_to t('bulletin_category.quick_edit'), panel_announcement_back_end_bulletin_category_quick_edit_path(bulletin_category), :remote => true %> |
|
||||||
<%= link_to t('bulletin_category.delete'), panel_announcement_back_end_bulletin_category_path(bulletin_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
|
<%= link_to t('bulletin_category.delete'), panel_announcement_back_end_bulletin_category_path(bulletin_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
|
||||||
|
|
|
@ -1,22 +1,17 @@
|
||||||
<% content_for :secondary do %>
|
<% content_for :secondary do %>
|
||||||
<br />
|
<%= render :partial => '/panel/announcement/back_end/announcement_secondary' %>
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<ul class="list">
|
|
||||||
<li><%#= link_to t('bulletin_category.new_announcement_class'), new_panel_announcement_back_end_bulletin_category_path, :class => 'seclink1' %></li>
|
|
||||||
</ul>
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= flash_messages %>
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
<h1><%= t('bulletin_category.list_announcement_class') %></h1>
|
<h1><%= t('bulletin_category.list_announcement_class') %></h1>
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<table id="bulletin_categorys">
|
<table id="bulletin_categorys">
|
||||||
<tr>
|
<tr>
|
||||||
<th><%= t('bulletin_category.key') %></th>
|
<th><%= t('bulletin_category.key') %></th>
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
|
|
||||||
<% content_for :secondary do %>
|
<% content_for :secondary do %>
|
||||||
<ul class="list">
|
<%= render :partial => '/panel/announcement/back_end/announcement_secondary' %>
|
||||||
<li><%= link_to t('bulletin_category.index'), panel_announcement_back_end_bulletin_categorys_path, :class => 'seclink2' %></li>
|
|
||||||
</ul>
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
<%= flash_messages %>
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
<h1><%= t('bulletin_category.new_announcement_class') %></h1>
|
<h1><%= t('bulletin_category.new_announcement_class') %></h1>
|
||||||
<%= form_for @bulletin_category, :url => panel_announcement_back_end_bulletin_categorys_path do |f| %>
|
<%= form_for @bulletin_category, :url => panel_announcement_back_end_bulletin_categorys_path do |f| %>
|
||||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||||
|
|
|
@ -6,4 +6,3 @@
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_announcement_back_end_bulletin_path, :class => 'btn btn-primary' %>
|
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_announcement_back_end_bulletin_path, :class => 'btn btn-primary' %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<%= form_for @bulletin, :url => panel_announcement_back_end_bulletins_path do |f| %>
|
<%= form_for @bulletin, :url => panel_announcement_back_end_bulletins_path do |f| %>
|
||||||
<%= render :partial => 'form', :locals => {:f => f} %>
|
<%= render :partial => 'form', :locals => {:f => f} %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
<% # encoding: utf-8 %>
|
<% content_for :secondary do %>
|
||||||
|
<%= render :partial => '/panel/announcement/back_end/announcement_secondary' %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<%= flash_messages %>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
|
<br />
|
||||||
<p id="notice"><%= flash_messages %></p>
|
<br />
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<h1><%= bulletin_category.key %></h1>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th><%= t('bulletin.status') %></th>
|
||||||
|
<th><%= t('bulletin.category') %></th>
|
||||||
|
<th><%= t('bulletin.title') %></th>
|
||||||
|
<th><%= t('bulletin.postdate') %></th>
|
||||||
|
<th><%= t('bulletin.deadline') %></th>
|
||||||
|
<th><%= t('bulletin.action') %></th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<% bulletin_category.bulletins.each do |post| %>
|
||||||
|
<%= render :partial => 'panel/announcement/back_end/bulletins/bulletins', :locals => {:post => post,:fact_check_allow=>true} %>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
|
@ -0,0 +1,40 @@
|
||||||
|
<% content_for :secondary do %>
|
||||||
|
<%= render :partial => '/panel/announcement/back_end/announcement_secondary' %>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
<%= flash_messages %>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<fieldset><legend><%= t('bulletin.search') %></legend>
|
||||||
|
|
||||||
|
<%= form_for :bulletin, :action => 'search', :method => 'get', :url => panel_announcement_back_end_bulletins_path do |f| %>
|
||||||
|
|
||||||
|
<%#= f.select :bulletin_category_id, @bulletin_categorys.collect {|t| [ t.i18n_variable[I18n.locale], t.id ] },{ :include_blank => t('bulletin.select') }%>
|
||||||
|
|
||||||
|
Category <%#= select_tag "category_id", options_for_select(@bulletin_categorys.collect{|t| [t.i18n_variable[I18n.locale], t.id]}), :prompt => t('bulletin.select') %>
|
||||||
|
|
||||||
|
KeyWord <%#= text_field_tag :search, params[:search], :id => 'search_field' %>
|
||||||
|
|
||||||
|
<%= submit_tag "Search", :name => nil %>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<h1><%= t('bulletin.list_announcement') %></h1>
|
||||||
|
|
||||||
|
<div id="check_block">
|
||||||
|
<h1>Check Please</h1>
|
||||||
|
<%= render :partial => "list_table", :collection => @bulletin_categorys_check,:as => :bulletin_category%>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
<%= flash_messages %>
|
<%= flash_messages %>
|
||||||
|
|
||||||
<h1 class="h1"><%= t('announcement.list_announcement') %></h1>
|
<% if @current_category %>
|
||||||
|
<h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('announcement.bulletin.list_lower') %></h1>
|
||||||
|
<% else %>
|
||||||
|
<h1 class="h1"><%= t('announcement.list_announcement') %></h1>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<li>
|
<li>
|
||||||
<div class="news_img"><%= image_tag(post.image.url, :size => "290x130") if post.image.file %></div>
|
<div class="news_img"><%= image_tag(post.image.url, :size => "290x130") if post.image.file %></div>
|
||||||
<h3 class="h3 news_title"><%= link_to post.title[I18n.locale], panel_announcement_front_end_bulletin_path(post, :category_id => post.bulletin_category_id) %></h3>
|
<h3 class="h3 news_title"><%= link_to post.title[I18n.locale], panel_announcement_front_end_bulletin_path(post, :category_id => post.bulletin_category_id) %></h3>
|
||||||
<p class="news_wrap"><%= post.subtitle[I18n.locale] %></p>
|
<p class="news_wrap"><%= post.subtitle[I18n.locale].html_safe %></p>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -32,6 +32,7 @@ en:
|
||||||
list_announcement: List Announcement
|
list_announcement: List Announcement
|
||||||
bulletin:
|
bulletin:
|
||||||
category: Category
|
category: Category
|
||||||
|
list_lower: " list"
|
||||||
title: Title
|
title: Title
|
||||||
postdate: Postdate
|
postdate: Postdate
|
||||||
# admin:
|
# admin:
|
||||||
|
|
|
@ -27,6 +27,7 @@ zh_tw:
|
||||||
list_announcement: 公告列表
|
list_announcement: 公告列表
|
||||||
bulletin:
|
bulletin:
|
||||||
category: 分類
|
category: 分類
|
||||||
|
list_lower: 列表
|
||||||
title: 標題
|
title: 標題
|
||||||
postdate: 張貼日期
|
postdate: 張貼日期
|
||||||
# admin:
|
# admin:
|
||||||
|
|
|
@ -2,6 +2,9 @@ Rails.application.routes.draw do
|
||||||
namespace :panel do
|
namespace :panel do
|
||||||
namespace :announcement do
|
namespace :announcement do
|
||||||
namespace :back_end do
|
namespace :back_end do
|
||||||
|
match 'public' => "announcements#public",:as => :public
|
||||||
|
resources :fact_checks
|
||||||
|
match 'list_mine' => "announcements#list_mine"
|
||||||
root :to => "bulletins#index"
|
root :to => "bulletins#index"
|
||||||
resources :bulletins
|
resources :bulletins
|
||||||
resources :bulletin_categorys, :controller => 'bulletin_categorys' do
|
resources :bulletin_categorys, :controller => 'bulletin_categorys' do
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
# desc "Explaining what the task does"
|
|
||||||
# task :announcement do
|
|
||||||
# # Task goes here
|
|
||||||
# end
|
|
|
@ -1,4 +1,4 @@
|
||||||
class Panel::NewBlog::FrontEnd::CommentsController < ObitFrontendController
|
class Panel::NewBlog::FrontEnd::CommentsController < OrbitFrontendController
|
||||||
def create
|
def create
|
||||||
@post = Post.find(params[:post_id])
|
@post = Post.find(params[:post_id])
|
||||||
@comment = @post.comments.create!(params[:comment])
|
@comment = @post.comments.create!(params[:comment])
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class Panel::NewBlog::FrontEnd::PostsController < ObitFrontendController
|
class Panel::NewBlog::FrontEnd::PostsController < OrbitFrontendController
|
||||||
# GET /posts
|
# GET /posts
|
||||||
# GET /posts.xml
|
# GET /posts.xml
|
||||||
def index
|
def index
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Panel::WebResource::Widget::WebLinksController < ObitWidgetController
|
||||||
|
|
||||||
# @web_link = WebLink.where( :is_hidden => false ).desc(:is_top, :name).first
|
# @web_link = WebLink.where( :is_hidden => false ).desc(:is_top, :name).first
|
||||||
|
|
||||||
@web_links = WebLink.widget_datas.page(params[:page]).per(9)
|
@web_links = WebLink.widget_datas.page(params[:page]).per(5)
|
||||||
|
|
||||||
# get_categorys
|
# get_categorys
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ class Panel::WebResource::Widget::WebLinksController < ObitWidgetController
|
||||||
end
|
end
|
||||||
|
|
||||||
def reload_web_links
|
def reload_web_links
|
||||||
@web_links = WebLink.widget_datas.page(params[:page]).per(9)
|
@web_links = WebLink.widget_datas.page(params[:page]).per(5)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue