member plugin edit
This commit is contained in:
		
						commit
						bc44d38948
					
				
							
								
								
									
										4
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										4
									
								
								Gemfile
								
								
								
								
							|  | @ -1,5 +1,5 @@ | |||
| source 'http://rubygems.org' | ||||
| gem 'rails' | ||||
| gem 'rails', "~> 3.2.9" | ||||
| 
 | ||||
| gem "brakeman" | ||||
| gem 'mime-types' | ||||
|  | @ -11,7 +11,7 @@ gem "net-ldap", "~> 0.3.1" | |||
| gem 'devise', '1.5.3' | ||||
| gem 'exception_notification' # Send error trace | ||||
| gem 'execjs' | ||||
| gem 'jquery-rails' | ||||
| gem 'jquery-rails', '2.1.4' | ||||
| gem 'jquery-ui-rails' | ||||
| gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git' | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,4 +15,3 @@ | |||
| //= require orbitTimeline
 | ||||
| //= require orbitdesktop
 | ||||
| //= require desktop/books_pages
 | ||||
| //= require desktop/seminar_pages
 | ||||
|  |  | |||
|  | @ -25,8 +25,8 @@ $('#index').live('pageinit',function(){ | |||
| 	$(".slideImg").muImageResize({width: $globalW, height: Math.floor($globalW/720*240)}); | ||||
| 	$(this).find(".newpic img").muImageResize({width: 280, height: 200}); | ||||
| 	$('.slideshow').cycle({ | ||||
| 		fx:'scrollLeft', | ||||
| 		timeout: 6000, | ||||
| 		fx: $effect, | ||||
| 		timeout: $timeout | ||||
| 	}); | ||||
| 	$(".newlist").css({ | ||||
| 		"width" : $(".newitem").outerWidth()*(Math.floor($globalW/$(".newitem").outerWidth()))+30, | ||||
|  | @ -40,8 +40,9 @@ $('#index').live('pageinit',function(){ | |||
| $('#announcement_content').live('pageinit',function(){ | ||||
| 	$(this).find(".newpic img").muImageResize({width: 320, height: 220}); | ||||
| }); | ||||
| var mobileDemo = { 'center': '24.987449, 121.576117', 'zoom': 17 }; | ||||
| 
 | ||||
| $('#map').live('pageinit', function() { | ||||
| 	var mobileDemo = { 'center': $map_center, 'zoom': $map_zoom }; | ||||
| 	var $windowH = $(window).height(); | ||||
| 	$("#map_canvas").css({ | ||||
| 		'height' : $windowH, | ||||
|  | @ -50,7 +51,7 @@ $('#map').live('pageinit', function() { | |||
| 		$('#map_canvas').gmap({'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':false, 'callback': function() { | ||||
| 			var self = this; | ||||
| 			self.addMarker({'position': this.get('map').getCenter() }).click(function() { | ||||
| 				self.openInfoWindow({ 'content': "<%= I18n.t('mobile.location_description') %>" }, this); | ||||
| 				self.openInfoWindow({ 'content': $info }, this); | ||||
| 			}); | ||||
| 		}});  | ||||
| 	}).load('basic_map'); | ||||
|  |  | |||
|  | @ -9,7 +9,6 @@ | |||
| //= require jquery.form
 | ||||
| //= require bootstrap
 | ||||
| //= require jquery.masonry.min
 | ||||
| //= require jquery.isotope.min
 | ||||
| //= require jquery.tinyscrollbar.min
 | ||||
| //= require orbit-1.0
 | ||||
| //= require tinymce-jquery
 | ||||
|  |  | |||
|  | @ -1,28 +1,42 @@ | |||
| $(document).on('click', '.orbit-bar-search', function (){ | ||||
| 	if ($(this).parents('.search').hasClass('visible')){ | ||||
| 		$(this).parents('.search').stop().animate({ | ||||
| 			'width':'28px', | ||||
| 		},500); | ||||
| 		$('.navbar-search').stop().animate({ | ||||
| 			'left':'30px', | ||||
| 			'opacity':'0', | ||||
| 		},200); | ||||
| 		$(this).parents('.search').css({ | ||||
| 			'background-color': 'transparent', | ||||
| 		});	 | ||||
| 		$(this).parents('.search').removeClass('visible'); | ||||
| 	} | ||||
| 	else{ | ||||
| 		$(this).parents('.search').stop().animate({ | ||||
| 			'width':'265px', | ||||
| 		},200); | ||||
| 		$('.navbar-search').stop().animate({ | ||||
| 			'left':'7px', | ||||
| 			'opacity':'1' | ||||
| 		},500); | ||||
| 		$(this).parents('.search').css({ | ||||
| 			'background-color': 'rgba(0, 0, 0, 0.5)', | ||||
| 		}); | ||||
| 		$(this).parents('.search').addClass('visible'); | ||||
| 	} | ||||
| 
 | ||||
| $(document).ready(function(){ | ||||
| 	$('.search').tooltip({ | ||||
| 			placement: "bottom" | ||||
| 	}); | ||||
| }); | ||||
| $(document).on('mouseenter', '.orbit-bar-search', function (){ | ||||
|    $(this).parents('.search').stop().animate({ | ||||
|        'width':'265px', | ||||
|    },200); | ||||
|    $('.navbar-search').stop().animate({ | ||||
|        'left':'4px', | ||||
|        'opacity':'1' | ||||
|    },500); | ||||
|    $(this).parents('.search').css({ | ||||
|        'background-color': 'rgba(0, 0, 0, 0.5)', | ||||
|    }); | ||||
|    $(this).parents('.search').addClass('visible'); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| $(document).on('mouseleave', '.search.visible', function (){ | ||||
|    $(this).stop().animate({ | ||||
|        'width':'28px', | ||||
|    },500); | ||||
|    $('.navbar-search').stop().animate({ | ||||
|        'left':'30px', | ||||
|        'opacity':'0', | ||||
|    },200); | ||||
|    $(this).css({ | ||||
|        'background-color': 'transparent', | ||||
|    });     | ||||
|    $(this).removeClass('visible'); | ||||
| }); | ||||
| 
 | ||||
| $(document).on("mouseenter",".orbit-bar-language, .language-menu",function(){ | ||||
|    $(this).parents('.language').addClass("open") | ||||
| }) | ||||
| 
 | ||||
| $(document).on("mouseleave",".orbit-bar-language, .language-menu",function(){ | ||||
|    $(this).parents('.language').removeClass("open") | ||||
| }) | ||||
|  |  | |||
|  | @ -1,5 +1,11 @@ | |||
| function get_part_id(){ | ||||
| 	return $(".edit_page_part").attr("action").split('/').pop(); | ||||
| 	return $(".edit_page_part,.edit_page").attr("action").split('/').pop(); | ||||
| } | ||||
| 
 | ||||
| function get_object_path(){ | ||||
| 	a = window.location.href.split('/'); | ||||
| 	a.pop(); | ||||
| 	return a.join('/'); | ||||
| } | ||||
| 
 | ||||
| $("div.editable").live("mouseenter mouseleave", function (event) { | ||||
|  | @ -10,26 +16,26 @@ $("#page_design").live('change', function() { | |||
| 	$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_themes'); | ||||
| }); | ||||
| 
 | ||||
| $("#page_module_app_id").live('change', function() { | ||||
| 	var app_id = $(this).val(); | ||||
| 	if(app_id!=''){ | ||||
| 		$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_frontend_pages',function(data, textStatus){ | ||||
| 			if(textStatus == 'success'){ | ||||
| 				$(this).after(data); | ||||
| 			} | ||||
| 		}); | ||||
| 	} | ||||
| 	else{ | ||||
| 		$("#app_page_url").children().remove(); | ||||
| 	} | ||||
| }); | ||||
| // $("#page_module_app_id").live('change', function() { | ||||
| // 	var app_id = $(this).val(); | ||||
| // 	if(app_id!=''){ | ||||
| // 		$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_after_module_changed',function(data, textStatus){ | ||||
| // 			if(textStatus == 'success'){ | ||||
| // 				$(this).after(data); | ||||
| // 			} | ||||
| // 		}); | ||||
| // 	} | ||||
| // 	else{ | ||||
| // 		$("#app_page_url").children().remove(); | ||||
| // 	} | ||||
| // }); | ||||
| 
 | ||||
| $("#module_app_list select").live('change', function() { | ||||
| 	$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widgets?part_id=' + get_part_id()); | ||||
| 	$.getScript(get_object_path()  + '/reload_after_module_changed?module_app_id='+$(this).val()); //?part_id=' + get_part_id()); | ||||
| }); | ||||
| 
 | ||||
| $("#widget_list select").live('change', function() { | ||||
| 	$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widget_styles?module_app_id=' + $("#module_app_list select").val() + '&part_id=' + get_part_id()); | ||||
| $("#widget_list select,#frontend_list select").live('change', function() { | ||||
| 	$.getScript(get_object_path()  +'/reload_after_list_changed?frontend=' +   $(this).val()  + '&module_app_id=' + $("#module_app_list select").val() );//+ '&part_id=' + get_part_id()); | ||||
| }); | ||||
| 
 | ||||
| $("#tag_list select").live('change', function() { | ||||
|  |  | |||
|  | @ -10,7 +10,6 @@ | |||
| //= require jquery.ui.sortable
 | ||||
| //= require jquery_ujs
 | ||||
| //= require bootstrap
 | ||||
| //= require jquery.isotope.min
 | ||||
| //= require jquery.tinyscrollbar.min
 | ||||
| //= require orbit-1.0
 | ||||
| //= require orbit-bar-search
 | ||||
|  |  | |||
|  | @ -1,6 +1,11 @@ | |||
| label{ | ||||
|     white-space: nowrap !important; | ||||
| } | ||||
| .style_switch{} | ||||
| 
 | ||||
| .style_switch ul{} | ||||
| .style_switch ul{ | ||||
|     margin: 0; | ||||
| } | ||||
| 
 | ||||
| .style_switch li{ | ||||
|     float: left; | ||||
|  | @ -9,17 +14,20 @@ | |||
|     width: 103px; | ||||
| } | ||||
| .style_radio{ | ||||
|     margin: 0 0 5px 10px; | ||||
|     cursor: pointer; | ||||
|     margin: 0 0 0 10px; | ||||
| } | ||||
| .style_img{ | ||||
|     display: block; | ||||
|     margin: 0 0 5px; | ||||
|     margin: 5px 0 5px -28px; | ||||
| } | ||||
| 
 | ||||
| .style_description{ | ||||
|     color: #6B6B6B; | ||||
|     display: block; | ||||
|     margin: 0 0 0 5px; | ||||
|     font-size: 12px; | ||||
|     margin: 0 0 0 -25px; | ||||
|     white-space: normal; | ||||
| } | ||||
| 
 | ||||
| label{ | ||||
|  |  | |||
|  | @ -13,7 +13,6 @@ | |||
|  *= require list | ||||
|  *= require widget | ||||
|  *= require scroll_style | ||||
|  *= require isotope | ||||
|  *= require icons | ||||
|  *= require site-map | ||||
|  *= require lib/bootstrap-datetimepicker | ||||
|  |  | |||
|  | @ -9,32 +9,6 @@ class Admin::ModuleAppsController < ApplicationController | |||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   def reload_frontend_pages | ||||
|     @categories =[] | ||||
|     @module_app = ModuleApp.find(params[:id]) | ||||
| 	 | ||||
|     @frontend_path = @module_app.widgets.keys[0] if ( !@module_app.widgets.blank? && @module_app.widgets[0].blank? ) | ||||
| 	 | ||||
|     @frontend_style =  @module_app.widgets[@frontend_path] if ( !@frontend_path.blank? ) | ||||
| 	 | ||||
|     case @module_app.key | ||||
|       when 'announcement' | ||||
|         @categories =  BulletinCategory.all | ||||
|         @tags = AnnouncementTag.all | ||||
|       when 'news' | ||||
|         @categories =  NewsBulletinCategory.all | ||||
|         @tags = NewsTag.all | ||||
|       when 'web_resource' | ||||
|         @categories =  WebLinkCategory.all | ||||
|         @tags = WebResourceTag.all | ||||
|       when 'archive' | ||||
|         @categories =  ArchiveFileCategory.all | ||||
|         @tags = ArchiveTag.all | ||||
|     end | ||||
|     respond_to do |format| | ||||
|       format.js  {} | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def module_auth_proc | ||||
|     @module_app = ModuleApp.find(params[:id]) | ||||
|  | @ -136,7 +110,6 @@ class Admin::ModuleAppsController < ApplicationController | |||
|     end | ||||
|       #user is not permited to do that | ||||
|       flash[:notice] = t('app_auth.operation_not_permitted') | ||||
|       render :nothing => true, :status => 403  | ||||
|   end | ||||
|    | ||||
|       render :nothing => true,:status => 403 | ||||
|     end | ||||
| end | ||||
|  | @ -1,5 +1,5 @@ | |||
| class Admin::ObjectAuthsController < ApplicationController | ||||
|   include OrbitCoreLib::PermissionUnility | ||||
|   include OrbitCoreLib::PermissionUtility | ||||
|   layout "new_admin" | ||||
|   before_filter :force_order | ||||
| #  before_filter :is_admin? ,:only => :index | ||||
|  |  | |||
|  | @ -1,7 +1,11 @@ | |||
| class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController | ||||
|   include OrbitCoreLib::PermissionUnility | ||||
|   include OrbitCoreLib::PermissionUtility | ||||
|   before_filter :force_order | ||||
| 
 | ||||
|   def set_module_app | ||||
|     @module_app = ModuleApp.where(:title=>'Announcement').first | ||||
|   end | ||||
| 
 | ||||
|    | ||||
|   def setting | ||||
|     @sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user | ||||
|  | @ -59,6 +63,7 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController | |||
| 
 | ||||
|   def force_order | ||||
|     authenticate_user! | ||||
|     set_module_app | ||||
|     setup_vars | ||||
|     check_if_user_can_do_object_auth | ||||
|   end | ||||
|  |  | |||
|  | @ -25,31 +25,28 @@ class Admin::PagePartsController < ApplicationController | |||
|   def edit | ||||
|     @part = PagePart.find(params[:id]) | ||||
|     @module_apps = ModuleApp.excludes(widgets: nil).where(enable_frontend: true).order_by(:title, :asc) | ||||
|     @module_app = @part.module_app ? @part.module_app : @module_apps[0] | ||||
|     @module_app = @part.module_app ? @part.module_app : nil | ||||
|     @user_choose = @part.widget_path | ||||
|     @r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag | ||||
|     @tag_objects = @r_tag.classify.constantize.all rescue nil | ||||
| 
 | ||||
| 	@widget_path = @part.widget_path ? @part.widget_path : @module_app.widgets.keys[0] | ||||
|     if @module_app | ||||
|       @widget_path = @part.widget_path ? @part.widget_path : @module_app.widgets.keys[0] | ||||
|       @widget_style = @module_app.get_widget_style[@widget_path][:style] unless @widget_path.nil? or @module_app.nil? | ||||
|     end | ||||
|      | ||||
| 	if @module_app.widgets.any?{|b| b.class == Array} | ||||
| 
 | ||||
|     unless @module_app.nil? | ||||
|       @categories = @module_app.get_categories  | ||||
|       @tags = @module_app.get_tags | ||||
|     end | ||||
| 
 | ||||
| 	@widget_path = @part.widget_path ? @part.widget_path : (@module_app.widgets.keys[0] rescue nil) | ||||
| 	 | ||||
| 	if @module_app && @module_app.widgets.any?{|b| b.class == Array} | ||||
|       @widget_style =  @module_app.widgets[@widget_path] if !@widget_path.blank? && !@module_app.widgets.blank? | ||||
| 	end | ||||
| 
 | ||||
|       case @module_app.key | ||||
|         when 'announcement' | ||||
|           @categories =  BulletinCategory.all | ||||
|           @tags = AnnouncementTag.all | ||||
|         when 'gallery' | ||||
|           @albums = GalleryAlbum.all | ||||
|           @tags = [] | ||||
|         when 'web_resource' | ||||
|           @categories =  WebLinkCategory.all | ||||
|           @tags = WebResourceTag.all | ||||
|         when 'archive' | ||||
|           @categories =  ArchiveFileCategory.all | ||||
|           @tags = ArchiveTag.all | ||||
|       end | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|  | @ -59,9 +56,12 @@ class Admin::PagePartsController < ApplicationController | |||
|   def update | ||||
|     @part = PagePart.find(params[:id]) | ||||
| 	 | ||||
| 	params[:page_part][:widget_field] = params[:page_part][:widget_field].zip( params[:page_part][:widget_field_type] ) if params[:page_part][:widget_field]	   | ||||
| 	params[:page_part][:widget_field_type] = nil | ||||
|   	params[:page_part][:widget_field] = params[:page_part][:widget_field].zip( params[:page_part][:widget_field_type] ) if params[:page_part][:widget_field]	   | ||||
|   	params[:page_part][:widget_field_type] = nil | ||||
| 
 | ||||
|     if params[:page_part][:module_app].blank? | ||||
|       params[:page_part][:module_app] = nil | ||||
|     end | ||||
|     if @part.update_attributes(params[:page_part]) | ||||
|       set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu') | ||||
|       flash.now[:notice] = t('update.success.content') | ||||
|  | @ -91,30 +91,14 @@ class Admin::PagePartsController < ApplicationController | |||
|   end | ||||
|    | ||||
|   def reload_widgets | ||||
|     @part = PagePart.find params[:part_id] | ||||
|     @categories =[] | ||||
|     @module_app = ModuleApp.find(params[:id]) | ||||
| 	 | ||||
|     @widget_path = @module_app.widgets.keys[0] if ( @module_app.widgets[0].blank? ) | ||||
| 	 | ||||
|     @part = PagePart.find params[:id] | ||||
|     @module_app = ModuleApp.find(params[:module_app_id]) rescue nil | ||||
|     @categories =@module_app ? @module_app.get_categories : [] | ||||
|     @tags =@module_app ? @module_app.get_tags : [] | ||||
|     @widget_path = @module_app.widgets.keys[0] if (@module_app &&  @module_app.widgets[0].blank? )	 | ||||
|     @widget_style =  @module_app.widgets[@widget_path] if ( !@widget_path.blank? ) | ||||
| 
 | ||||
|     case @module_app.key | ||||
|       when 'announcement' | ||||
|         @categories =  BulletinCategory.all | ||||
|         @tags = AnnouncementTag.all | ||||
|       when 'gallery' | ||||
|         @albums = GalleryAlbum.all | ||||
|         @tags = [] | ||||
|       when 'web_resource' | ||||
|         @categories =  WebLinkCategory.all | ||||
|         @tags = WebResourceTag.all | ||||
|       when 'archive' | ||||
|         @categories =  ArchiveFileCategory.all | ||||
|         @tags = ArchiveTag.all | ||||
|     end | ||||
| 
 | ||||
|     @part.widget_path = @module_app.widgets.first if @module_app.needs_to_widget_option? | ||||
|     @part.widget_path = @module_app.widgets.first if( @module_app) | ||||
|     respond_to do |format| | ||||
|       format.js  {} | ||||
|     end | ||||
|  | @ -122,9 +106,11 @@ class Admin::PagePartsController < ApplicationController | |||
|    | ||||
|   def reload_widget_styles | ||||
|     @module_app = ModuleApp.find(params[:module_app_id]) | ||||
|     @part = PagePart.find params[:part_id] | ||||
|     @user_choose =@widget_path= params[:id] | ||||
|     @widget_style =  @module_app.widgets[params[:id]] | ||||
| 
 | ||||
|     @part = PagePart.find params[:id] | ||||
|     @user_choose =@widget_path= params[:frontend] | ||||
|     @widget_style =  @module_app.widgets[@widget_path] | ||||
| 
 | ||||
| 
 | ||||
|     respond_to do |format| | ||||
|       format.js  {} | ||||
|  |  | |||
|  | @ -19,14 +19,20 @@ helper Admin::PagePartsHelper | |||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|     @item = Page.find(params[:id]) | ||||
|     @item = @page  =Page.find(params[:id]) | ||||
|     @user_choose =  @item.app_frontend_url | ||||
|     @apps = ModuleApp.excludes(app_pages: nil).entries | ||||
| 	 | ||||
|     @module_apps = ModuleApp.excludes(widgets: nil).where(enable_frontend: true).order_by(:title, :asc) | ||||
| 	 | ||||
|     @designs = Design.all.entries | ||||
|     @design = @item.design ? @item.design : @designs.first | ||||
|     @app_frontend_urls = @item.module_app.app_pages if @item.module_app | ||||
| 
 | ||||
|     if @item.module_app | ||||
|       @app_frontend_urls = @item.module_app.app_pages.map{|t| [I18n.t(t[0]),t[1]]} | ||||
|       @app_frontend_urls << [I18n.t('default_widget.name'),'default_widget'] if @item.module_app.has_default_widget?  | ||||
|     end | ||||
|      | ||||
|      | ||||
|     if @item.module_app | ||||
|       @module_app = @item.module_app | ||||
|  | @ -84,12 +90,12 @@ helper Admin::PagePartsHelper | |||
|   def update | ||||
|     @item = Page.find(params[:id]) | ||||
| 
 | ||||
| 	  if @item.module_app && @item.module_app.key == 'page_content' && @item.page_contexts.blank? | ||||
| 	    @item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id ) | ||||
| 	  end | ||||
|     if @item.module_app && @item.module_app.key == 'page_content' && @item.page_contexts.blank? | ||||
|       @item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id ) | ||||
|     end | ||||
| 	 | ||||
| 	params[:page][:frontend_field] = params[:page][:frontend_field].zip( params[:page][:frontend_field_type] ) if params[:page][:frontend_field]  | ||||
| 	params[:page][:frontend_field_type] = nil | ||||
|   params[:page][:frontend_field] = params[:page][:frontend_field].zip( params[:page][:frontend_field_type] ) if params[:page][:frontend_field]  | ||||
|   params[:page][:frontend_field_type] = nil | ||||
| 
 | ||||
|     if @item.update_attributes(params[:page]) | ||||
|       flash[:notice] = t('update.success.page') | ||||
|  | @ -124,6 +130,41 @@ helper Admin::PagePartsHelper | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def reload_front_end_setting | ||||
|     @page = Page.find params[:id] | ||||
|     @module_app = ModuleApp.find params[:module_app_id] | ||||
|     @chosen_frontend = @user_choose = params[:frontend] | ||||
|   end   | ||||
| 
 | ||||
|   def reload_frontend_pages | ||||
|     @page = Page.find params[:id] rescue nil | ||||
|     # @categories =[] | ||||
|     @module_app = ModuleApp.find(params[:module_app_id]) rescue nil | ||||
|     @app_frontend_urls = @module_app.nil? ? nil :  @module_app.app_pages.map{|t| [I18n.t(t[0]),t[1]]} | ||||
|     @app_frontend_urls << [I18n.t('default_widget.name'),'default_widget'] if(@module_app && @module_app.has_default_widget?) | ||||
| 
 | ||||
|     case (@module_app.nil? ? nil : @module_app.key ) | ||||
|       when 'announcement' | ||||
|         @categories =  BulletinCategory.all | ||||
|         @tags = AnnouncementTag.all | ||||
|       when 'news' | ||||
|         @categories =  NewsBulletinCategory.all | ||||
|         @tags = NewsTag.all | ||||
|       when 'web_resource' | ||||
|         @categories =  WebLinkCategory.all | ||||
|         @tags = WebResourceTag.all | ||||
|       when 'archive' | ||||
|         @categories =  ArchiveFileCategory.all | ||||
|         @tags = ArchiveTag.all | ||||
|       else | ||||
|         @categories =  [] | ||||
|         @tags = [] | ||||
|     end | ||||
|     respond_to do |format| | ||||
|       format.js  {} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def reload_themes | ||||
|     @design = Design.find(params[:id]) | ||||
|     @themes = @design.themes | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ class Admin::PluginsController < ApplicationController | |||
|    | ||||
|   def index | ||||
|    | ||||
|     @plugins = OrbitApp::Module::Registration.all | ||||
| 	@plugins = OrbitApp::Plugin::Registration.all | ||||
| 
 | ||||
|     if(!params[:show_plugin_profile].nil?) | ||||
| 	 | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ class Admin::UsersNewInterfaceController <  OrbitBackendController | |||
|    | ||||
|   def show | ||||
|     @user = User.find(params[:id]) | ||||
|     @plugins = OrbitApp::Module::Registration.all | ||||
|     @plugins = OrbitApp::Plugin::Registration.all | ||||
| 
 | ||||
|     @profile_data = [] | ||||
|     @teacher_data = [] | ||||
|  |  | |||
|  | @ -1,7 +1,12 @@ | |||
| class DefaultWidgetController< OrbitWidgetController | ||||
| 
 | ||||
|   def front_end_available(var) | ||||
|     @page_part = PagePart.find params[:part_id] | ||||
|     @page_part = case params[:item_type] | ||||
|     when "page" | ||||
|       Page.find params[:page_id] | ||||
|     when "page_part" | ||||
|       PagePart.find params[:part_id]   | ||||
|     end | ||||
|     @page_part.module_app.enable_frontend? | ||||
|   end | ||||
| 
 | ||||
|  | @ -9,10 +14,16 @@ class DefaultWidgetController< OrbitWidgetController | |||
|     @tag_class = nil | ||||
| 
 | ||||
|     @default_widget = @page_part.module_app.get_default_widget | ||||
|     @widget_image_field = @default_widget[:image] | ||||
|     data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3) | ||||
|     @widget_image_field = @default_widget["image"] || @default_widget[:image] | ||||
|     data_limit = case @page_part | ||||
|     when Page | ||||
|       @fields = @page_part.frontend_field | ||||
|       @page_part.frontend_data_count.is_a?(Fixnum) ? @page_part.frontend_data_count : (@page_part.frontend_data_count.to_i rescue 3) | ||||
|     when PagePart | ||||
|       @fields = @page_part.widget_field | ||||
|       @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3) | ||||
|     end | ||||
|     @data = eval(@default_widget["query"]).limit(data_limit).includes(@widget_image_field) | ||||
|     @fields = @page_part.widget_field | ||||
|      | ||||
|     case params[:type] | ||||
|     when "typeA" | ||||
|  | @ -26,15 +37,6 @@ class DefaultWidgetController< OrbitWidgetController | |||
|       render "typeC" | ||||
|     end | ||||
| 
 | ||||
|      #    {"inner"=>"true", | ||||
|      # "category_id"=>"false", | ||||
|      # "tag_id"=>"", | ||||
|      # "page"=>"", | ||||
|      # "search_query"=>"", | ||||
|      # "part_title"=>"", | ||||
|      # "part_id"=>"50ac426f83e75219d20000a7", | ||||
|      # "controller"=>"default_widget", | ||||
|      # "action"=>"default_widget", | ||||
|      # "type"=>"typeA"} | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -1,75 +0,0 @@ | |||
| class DesktopPublicationsController< ApplicationController | ||||
| 	  def journal_p | ||||
|       	render "desktop/journal_p", :layout => false | ||||
|    	end | ||||
|    | ||||
|   	def journal_p_list | ||||
|     	render "desktop/journal_pages/list", :layout => false | ||||
|   	end | ||||
|    | ||||
|   	def journal_p_add | ||||
|       debugger | ||||
|     	render "desktop/journal_pages/add", :layout => false | ||||
|   	end | ||||
| 
 | ||||
|     def books | ||||
|       render "desktop/books", :layout => false | ||||
|     end | ||||
| 
 | ||||
|     def books_list | ||||
|         render "desktop/books/list", :layout => false | ||||
|     end | ||||
| 
 | ||||
|     def books_add | ||||
|         render "desktop/books/add", :layout => false | ||||
|     end | ||||
| 
 | ||||
|     def seminar_p | ||||
|       render "desktop/seminar_p", :layout => false | ||||
|     end | ||||
| 
 | ||||
|     def seminar_p_list | ||||
|         render "desktop/seminar_pages/list", :layout => false | ||||
|     end | ||||
| 
 | ||||
|     def seminar_p_add | ||||
|         render "desktop/seminar_pages/add", :layout => false | ||||
|     end | ||||
| 
 | ||||
|   	def create_journal | ||||
|   		Journal.create(user_id: current_user.id, title: "Ice Cream Sandwich") | ||||
|   		b = Array.new | ||||
|     	b << {"success"=>"true"} | ||||
|     	render :json=>b.to_json | ||||
|   	end | ||||
| 
 | ||||
|   	def getjournals | ||||
|   		@journals = current_user.journals | ||||
|   		data = Array.new | ||||
|   		@journals.each do |journal| | ||||
|   			@papers = journal.papers.all | ||||
|   			data << {"title" => journal.title, "papers" => @papers} | ||||
|   		end | ||||
|   		render :json=>data.to_json | ||||
|   	end | ||||
| 
 | ||||
|     def delete_journal | ||||
|       @journals = Journal.find("") | ||||
|       @journals.delete | ||||
|       b = Array.new | ||||
|       b << {"success"=>"true"} | ||||
|       render :json=>b.to_json | ||||
|     end | ||||
| 
 | ||||
|     def update_journal | ||||
|       @journal = Journal.find("4ff2d6ebbd98eb02b9000017") | ||||
|       @papers = @journal.papers | ||||
|       @papers.each do |paper| | ||||
|         paper.update_attributes(:user_id => current_user.id) | ||||
|       end | ||||
|        b = Array.new | ||||
| 
 | ||||
|       b << {"success"=>"true"} | ||||
|       render :json=>b.to_json | ||||
|     end | ||||
| end | ||||
|  | @ -1,10 +1,6 @@ | |||
| require 'mime/types' | ||||
| 
 | ||||
| class DesktopPublicationsController< ApplicationController | ||||
|   #def journal_p | ||||
|   #  render "desktop/journal_p", :layout => false | ||||
|   #end | ||||
| 
 | ||||
|   def books | ||||
|     render "desktop/books", :layout => false | ||||
|   end | ||||
|  | @ -16,44 +12,4 @@ class DesktopPublicationsController< ApplicationController | |||
|   def books_add | ||||
|     render "desktop/books/add", :layout => false | ||||
|   end | ||||
| 
 | ||||
|   def seminar_p | ||||
|     render "desktop/seminar_p", :layout => false | ||||
|   end | ||||
| 
 | ||||
|   def seminar_p_list | ||||
|     render "desktop/seminar_pages/list", :layout => false | ||||
|   end | ||||
| 
 | ||||
|   def seminar_p_add | ||||
|     render "desktop/seminar_pages/add", :layout => false | ||||
|   end | ||||
| 
 | ||||
| #  def create_journal | ||||
| #    Journal.create(user_id: current_user.id, title: "Ice Cream Sandwich") | ||||
| #    b = Array.new | ||||
| #    b << {"success"=>"true"} | ||||
| #    render :json=>b.to_json | ||||
| #  end | ||||
| # | ||||
| # | ||||
| #  def delete_journal | ||||
| #    @journals = Journal.find("") | ||||
| #    @journals.delete | ||||
| #    b = Array.new | ||||
| #    b << {"success"=>"true"} | ||||
| #    render :json=>b.to_json | ||||
| #  end | ||||
| # | ||||
| #  def update_journal | ||||
| #    @journal = Journal.find("4ff2d6ebbd98eb02b9000017") | ||||
| #    @papers = @journal.papers | ||||
| #    @papers.each do |paper| | ||||
| #      paper.update_attributes(:user_id => current_user.id) | ||||
| #    end | ||||
| #    b = Array.new | ||||
| # | ||||
| #    b << {"success"=>"true"} | ||||
| #    render :json=>b.to_json | ||||
| #  end | ||||
| end | ||||
|  |  | |||
|  | @ -1,10 +1,6 @@ | |||
| class OrbitBackendController < ApplicationController | ||||
|   #before_filter :setup_vars | ||||
|   #before_filter :set_current_user | ||||
| 
 | ||||
|  # before_filter {|c| c.front_end_available(@app_title)} | ||||
|   # before_filter :check_user_can_use | ||||
|   include OrbitCoreLib::PermissionUnility | ||||
|   include OrbitCoreLib::AppBackendUtility | ||||
|   include OrbitCoreLib::PermissionUtility | ||||
|   include AdminHelper | ||||
|   include ApplicationHelper | ||||
|    | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| class OrbitFrontendController< OrbitFrontendComponentController | ||||
| 
 | ||||
| 
 | ||||
| end | ||||
|  | @ -1,3 +1,4 @@ | |||
| class OrbitWidgetController< OrbitFrontendComponentController | ||||
| 
 | ||||
| 
 | ||||
| end | ||||
|  | @ -10,43 +10,85 @@ module Admin::PagePartsHelper | |||
|   end | ||||
| 
 | ||||
|   def widget_field_options(i,local_item=nil) | ||||
|     local_item = @part if local_item.nil? | ||||
|     options = @module_app.widget_fields.collect{|widget_field| [I18n.t(widget_field[1]), widget_field[0]]} | ||||
|     options_for_select(options, (local_item[:widget_field][i][0] if (local_item && !local_item[:widget_field].blank? && !local_item[:widget_field][i].blank?)) ) | ||||
|     local_item = @part if local_item.nil? && @part | ||||
|     local_item = @page if local_item.nil? && @page | ||||
| 
 | ||||
|     options = @module_app.widget_fields.collect do |widget_field|  | ||||
|       label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}") | ||||
|       [label, widget_field[0]]  | ||||
|     end | ||||
| 
 | ||||
|     case local_item | ||||
|     when Page | ||||
|       options_for_select(options, (local_item[:frontend_field][i][0] if (local_item && !local_item[:frontend_field].blank? && !local_item[:frontend_field][i].blank?)) ) | ||||
|     when PagePart | ||||
|       options_for_select(options, (local_item[:widget_field][i][0] if (local_item && !local_item[:widget_field].blank? && !local_item[:widget_field][i].blank?)) ) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def widget_fiield_type_options(i,local_item=nil) | ||||
|     options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]} | ||||
|     local_item = @part if local_item.nil? | ||||
|     options_for_select(options, (local_item[:widget_field][i][1] if (local_item && !local_item[:widget_field].blank? && !local_item[:widget_field][i].blank?)) ) | ||||
|     local_item = @part if local_item.nil? && @part | ||||
|     local_item = @page if local_item.nil? && @page | ||||
| 
 | ||||
|     case local_item | ||||
|     when Page | ||||
|       options_for_select(options, (local_item[:frontend_field][i][1] if (local_item && !local_item[:frontend_field].blank? && !local_item[:frontend_field][i].blank?)) ) | ||||
|     when PagePart | ||||
|       options_for_select(options, (local_item[:widget_field][i][1] if (local_item && !local_item[:widget_field].blank? && !local_item[:widget_field][i].blank?)) ) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tag_checked_value(part,radio_value) | ||||
|     part and (part[:tag] == radio_value) ? true : false | ||||
|     if radio_value.blank? | ||||
|       (part.nil? || part[:tag].blank?)? true : false | ||||
|     else | ||||
|       part and (part[:tag] == radio_value.to_s) ? true : false | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   def category_checked_value(part,radio_value) | ||||
|     part and (part[:category] == radio_value) ? true : false | ||||
|     if radio_value.blank? | ||||
|       (part.nil? || part[:category].blank?)? true : false | ||||
|     else | ||||
|       part and (part[:category] == radio_value.to_s) ? true : false | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def style_checked_value(part,radio_value) | ||||
|     part and (part.widget_style == radio_value) ? true : false | ||||
|     case part | ||||
|     when Page | ||||
|       if  part.frontend_style.nil? && radio_value == "typeA" | ||||
|         true | ||||
|       else | ||||
|         (part.frontend_style == radio_value) ? true : false | ||||
|       end | ||||
|     when PagePart | ||||
|       if  part.widget_style.nil? && radio_value == "typeA" | ||||
|         true | ||||
|       else | ||||
|         (part.widget_style == radio_value) ? true : false   | ||||
|       end | ||||
|     when nil | ||||
|       false | ||||
|     end  | ||||
|   end | ||||
| 
 | ||||
|   def nil_radio_button(part,tag_or_cate) | ||||
|     field_name = case part | ||||
|     when PagePart | ||||
|       'page_part' | ||||
|     when Page | ||||
|       'page' | ||||
|     end | ||||
|     content_tag :label,:class=>"radio inline" do  | ||||
|       op = radio_button("page_part", tag_or_cate, '' , :checked => eval("#{tag_or_cate}_checked_value(part,'')")) | ||||
|       op = radio_button(field_name, tag_or_cate, '' , :checked => eval("#{tag_or_cate}_checked_value(part,'')")) | ||||
|       op << I18n.t("default_widget.no_value") | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def show_default_widget_setting_panel | ||||
|     if  @module_app.has_default_widget? && (!@user_choose.nil? && @user_choose== 'default_widget') #&& @part.widget_path == 'default_widget'  | ||||
|       true | ||||
|     else | ||||
|       false   | ||||
|     end | ||||
|       @module_app && @module_app.has_default_widget? && (!@user_choose.nil? && @user_choose== 'default_widget') #&& @part.widget_path == 'default_widget'  | ||||
|   end | ||||
| 
 | ||||
|   def show_custom_widget_setting_panel | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ module AdminHelper | |||
|   end | ||||
|    | ||||
|   def is_admin? | ||||
|     current_or_guest_user.admin? | ||||
|     current_or_guest_user.admin? rescue false | ||||
|   end | ||||
| 
 | ||||
|   def is_member? | ||||
|  |  | |||
|  | @ -54,8 +54,14 @@ module ApplicationHelper | |||
|     raw(formatted_messages.join) | ||||
|   end | ||||
|    | ||||
|   def link_back | ||||
|   def link_back(custom_class=nil) | ||||
|     case custom_class | ||||
|     when nil | ||||
|      link_to t('back'), get_go_back, :class => 'nav'   | ||||
|     else | ||||
|       link_to t('back'), get_go_back, :class => custom_class   | ||||
|     end | ||||
|       | ||||
|   end | ||||
|    | ||||
|   # Clean the link back | ||||
|  | @ -197,7 +203,6 @@ module ApplicationHelper | |||
|       javascripts << "<script type='text/javascript' src='/static/jquery.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/orbit-bar-member.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n" | ||||
|       javascripts << "<script type='text/javascript' src='/assets/orbit-bar-search.js'></script>\n" | ||||
|  |  | |||
|  | @ -49,7 +49,8 @@ module DefaultWidgetHelper | |||
|     when nil | ||||
|       eval method_entry | ||||
|     else | ||||
|       eval("#{method_entry}('#{object}')" )  | ||||
|       object = "'#{object.to_s}'" if object.class == BSON::ObjectId | ||||
|       eval("#{method_entry}(#{object})" )  | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ class Item | |||
|   include Mongoid::Timestamps | ||||
|   include Mongoid::Tree | ||||
|   include Mongoid::Tree::Ordering | ||||
|   LIST = YAML.load(File.read('config/list.yml')) | ||||
| 
 | ||||
|   field :name | ||||
|   field :path | ||||
|  | @ -15,7 +16,7 @@ class Item | |||
| 
 | ||||
|   | ||||
|   validates_format_of :name, :with => /^[0-9a-zA-Z\-_]+$/ | ||||
|   validates :name, :exclusion => { :in => LIST[:forbidden_item_names] } | ||||
|   # validates :name, :exclusion => { :in => LIST[:forbidden_item_names] } | ||||
|   validates_uniqueness_of :name, :scope => :parent_id | ||||
|   validates_presence_of :name | ||||
|   validates_associated :parent, :children | ||||
|  |  | |||
|  | @ -1,111 +1,130 @@ | |||
| class ModuleApp | ||||
|   include Mongoid::Document | ||||
|   include Mongoid::Timestamps | ||||
|   include OrbitCoreLib::ObjectTokenUnility | ||||
|   include OrbitCoreLib::ObjectTokenUtility | ||||
|   include OrbitApp::ModuleAppMembershipTools | ||||
| 
 | ||||
|   field :key | ||||
|   field :title | ||||
|   field :version | ||||
|   field :organization | ||||
|   field :author | ||||
|   field :intro | ||||
|   field :update_info | ||||
|   field :create_date | ||||
|   field :enable_frontend, type: Boolean, :default => true | ||||
|   field :sidebar_order#,type: Integer | ||||
| 
 | ||||
|   def refetch_setting!(reg) | ||||
|     # %w{module_label category base_url version organization author intro update_info create_date}.each  do |field| | ||||
|     #   self[field.to_sym] =  reg.send field  | ||||
|     # end     | ||||
|     self[:app_pages] = reg.get_app_pages | ||||
|     self[:enable_frontend] = reg.get_enable_frontend | ||||
|     self[:get_widget_style] = reg.get_widgets | ||||
|     self[:using_default_widget] = !reg.get_default_widget.blank? | ||||
|     self[:widgets] = reg.get_widgets | ||||
|   end | ||||
| 
 | ||||
|      | ||||
|   # def app_pages | ||||
|   #   get_registration.get_app_pages | ||||
|   # end | ||||
| 
 | ||||
| 
 | ||||
|   def enable_frontend? | ||||
|     self[:enable_frontend] | ||||
|   end | ||||
| 
 | ||||
|   def get_default_widget | ||||
|     raise 'Need to link with OrbitApp [type: Array]' | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   def get_widget_for_select | ||||
|     widgets = get_widget_style | ||||
|     ary = widgets.collect do |k,v|  | ||||
|       if k == 'default_widget' | ||||
|         [I18n.t('widget.default_widget'),'default_widget']  | ||||
|       else | ||||
|         [I18n.t(v[:label]),k]    | ||||
|       end | ||||
|        | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   # def get_widget_style | ||||
|   #   get_registration.get_widgets | ||||
|   # end | ||||
| 
 | ||||
|   def has_default_widget? | ||||
|     self[:widgets].has_key? 'default_widget'   | ||||
|   end | ||||
| 
 | ||||
|   def label | ||||
|     I18n.t(label_i18n) | ||||
|   end | ||||
| 
 | ||||
|   def label_i18n | ||||
|     reg = get_registration | ||||
|     reg.nil? ?  'Init is not defined completely' : get_registration.get_label_i18n | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   # def needs_to_widget_option? | ||||
|   #   if self.widget_options | ||||
|   #     self.widget_options.has_key? widgets.first | ||||
|   #   else | ||||
|   #     false   | ||||
|   #   end | ||||
|   # end | ||||
| 
 | ||||
|   def using_default_widget? | ||||
|     # !get_registration.get_default_widget.blank? | ||||
|     self[:get_default_widget] | ||||
|   end | ||||
| 
 | ||||
|   def widget_fields | ||||
|     # binding.pry | ||||
|     # raise 'Need to link with OrbitApp [type: Array]' | ||||
|     get_registration.get_default_widget_fields | ||||
|   end | ||||
| 
 | ||||
|   # def widgets | ||||
|   #   # get_registration.get_widgets | ||||
|   #   # get_registration.get_default_widget | ||||
|   # end | ||||
| 
 | ||||
|   def widget_options(widget_path=nil) | ||||
|     get_registration.get_widget_by_path(widget_path) | ||||
|     # raise 'Need to link with OrbitApp [type: Hash]' | ||||
|   end | ||||
| 
 | ||||
|   def widget_options_fields_i18n | ||||
|     raise 'Need to link with OrbitApp [type: Hash]' | ||||
|   end | ||||
| 
 | ||||
|   def widget_fields_link_method | ||||
|     raise 'Need to link with OrbitApp [type: Hash]' | ||||
|   end | ||||
| 
 | ||||
|   field :app_pages ,type: Array | ||||
|   # field :widgets ,type: Array | ||||
|   field :widgets ,type: Hash | ||||
|   field :widget_fields ,type: Array | ||||
|   field :widget_options,type:Hash | ||||
|   field :widget_options_fields_i18n,type:Hash | ||||
|   field :widget_fields_link_method,type:Hash | ||||
|   field :get_default_widget,type:Hash | ||||
| 
 | ||||
|   has_many :managers,as: :managing_app ,:class_name => "AppManager" ,:dependent => :destroy#,:foreign_key => "managing_app_id",:inverse_of => :managing_app | ||||
|   has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager", :dependent => :destroy#,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app | ||||
|    | ||||
|   has_many :tags | ||||
|   # # has_many :tags | ||||
|   has_many :page_parts | ||||
|   has_many :pages | ||||
|    | ||||
|   has_one :app_auth,dependent: :delete | ||||
| 
 | ||||
|   before_save :set_key | ||||
|    | ||||
|   def is_manager?(user) | ||||
|     managing_users.include?(user) | ||||
|   def get_tags | ||||
|     get_registration.get_tags | ||||
|   end | ||||
| 
 | ||||
|   def is_sub_manager?(user) | ||||
|     sub_managing_users.include?(user) || is_manager?(user) | ||||
|   def get_categories | ||||
|     get_registration.get_categories | ||||
|   end | ||||
| 
 | ||||
|   def managing_users | ||||
|     self.managers.collect{ |t| t.user } | ||||
|   def module_name | ||||
|     I18n.t(get_registration.get_label_i18n) | ||||
|   end | ||||
| 
 | ||||
|   def sub_managing_users | ||||
|     self.sub_managers.collect{ |t| t.user } | ||||
|   def get_registration | ||||
|     OrbitApp::Module::Registration.find_by_key(key) | ||||
|   end | ||||
|    | ||||
|   def assign_manager(user,assigner) | ||||
|     manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil     | ||||
|     if manager.nil?  | ||||
|       manager = self.managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil)) | ||||
|     end | ||||
|     manager | ||||
|   end | ||||
|    | ||||
|   def assign_sub_manager(user,assigner) | ||||
|     submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|     if submanager.nil? && !self.managing_users.include?(user) | ||||
|       submanager = self.sub_managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil) ) | ||||
|     end | ||||
|     submanager | ||||
|   end | ||||
|    | ||||
|   def remove_manager(user) | ||||
|     manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|     if manager | ||||
|       manager.destroy | ||||
|     else | ||||
|       false | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def remove_sub_manager(user) | ||||
|     submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|     if submanager | ||||
|       submanager.destroy | ||||
|     else | ||||
|       false | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def needs_to_widget_option? | ||||
|     if self.widget_options | ||||
|       self.widget_options.has_key? widgets.first | ||||
|     else | ||||
|       false   | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def has_default_widget? | ||||
|     case self[:widgets] | ||||
|     when Array | ||||
|       false | ||||
|     when Hash | ||||
|       self[:widgets].has_key? 'default_widget'   | ||||
|     end | ||||
|      | ||||
|   end | ||||
| 
 | ||||
|   protected | ||||
|    | ||||
|   def set_key | ||||
|     self.key = self.title.underscore.singularize if self.title | ||||
|   end | ||||
| 
 | ||||
|    | ||||
| end | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| class ObjectAuth  < PrototypeAuth | ||||
|   include OrbitCoreLib::ObjectTokenUnility | ||||
|   include OrbitCoreLib::ObjectTokenUtility | ||||
|   validates_uniqueness_of :title ,:scope => [:obj_authable_type,:obj_authable_id]  #{ |c| } | ||||
|   belongs_to :obj_authable, polymorphic: true | ||||
|   after_save :check_user_has_can_access_app | ||||
|  |  | |||
|  | @ -23,6 +23,15 @@ class PagePart | |||
|   before_save :delete_empty_widget_field | ||||
|   after_save :update_parent | ||||
| 
 | ||||
|   # def module_app | ||||
|   #   if self[:module_app] | ||||
|   #     self[:module_app] | ||||
|   #   elsif self[:kind] == 'module_widget' | ||||
|   #     self.page.module_app | ||||
|   #   else | ||||
|   #     nil | ||||
|   #   end | ||||
|   # end | ||||
| 
 | ||||
|   protected | ||||
|    | ||||
|  | @ -37,5 +46,4 @@ class PagePart | |||
|     self.page.save | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
| end | ||||
|  | @ -0,0 +1,61 @@ | |||
| class LocationUploader < CarrierWave::Uploader::Base | ||||
| 
 | ||||
|   # Include RMagick or ImageScience support: | ||||
|   # include CarrierWave::RMagick | ||||
|   # include CarrierWave::ImageScience | ||||
|     include CarrierWave::MiniMagick | ||||
| 
 | ||||
|   # Choose what kind of storage to use for this uploader: | ||||
|   # storage :file | ||||
|   # storage :s3 | ||||
| 
 | ||||
|   # Override the directory where uploaded files will be stored. | ||||
|   # This is a sensible default for uploaders that are meant to be mounted: | ||||
|   def store_dir | ||||
|     "location/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" | ||||
|   end | ||||
| 
 | ||||
|   # Provide a default URL as a default if there hasn't been a file uploaded: | ||||
|   # def default_url | ||||
|   #   "/images/fallback/" + [version_name, "default.png"].compact.join('_') | ||||
|   # end | ||||
| 
 | ||||
|   # Process files as they are uploaded: | ||||
|   # process :scale => [200, 300] | ||||
|   # | ||||
|   # def scale(width, height) | ||||
|   #   # do something | ||||
|   # end | ||||
| 
 | ||||
|   # Create different versions of your uploaded files: | ||||
|   # version :thumb do | ||||
|   #   process :scale => [50, 50] | ||||
|   # end | ||||
|    | ||||
|   version :thumb do | ||||
|     process :resize_to_fill => [150, 120] | ||||
|   end | ||||
| 
 | ||||
|   # Add a white list of extensions which are allowed to be uploaded. | ||||
|   # For images you might use something like this: | ||||
|   # def extension_white_list | ||||
|   #   %w(jpg jpeg gif png) | ||||
|   # end | ||||
| 
 | ||||
|   # Override the filename of the uploaded files: | ||||
|   # def filename | ||||
|   #   "something.jpg" if original_filename | ||||
|   # end | ||||
|    | ||||
| #  def manipulate! | ||||
| #    raise current_path.inspect | ||||
| #    image = ::MiniMagick::Image.open(current_path) | ||||
| #    image = yield(image) | ||||
| #    image.write(current_path) | ||||
| #    ::MiniMagick::Image.open(current_path) | ||||
| #  rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e | ||||
| #    raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}") | ||||
| #  end | ||||
| 
 | ||||
| end | ||||
| 
 | ||||
|  | @ -1 +1 @@ | |||
| <%= f.select :module_app_id, @apps.collect { |t| [t.title.capitalize, t.id] }, {:include_blank => true} ,{:rel => admin_module_apps_path }  %> | ||||
| <%= f.select :module_app_id, @apps.collect { |t| [t.module_name, t.id] }, {:include_blank => true} ,{:rel => admin_module_apps_path }  %> | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| $('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', @module_app.app_pages) %>"); | ||||
| $('#app_page_frontend_style').html("<%= escape_javascript(select 'page', 'frontend_style', @module_app.widgets[@frontend_path]) if !@frontend_path.blank? %>"); | ||||
| $('#app_page_category').html("<%= j (select 'page', 'category', @categories.collect{|category| [category.title, category.id]}, {:include_blank => true}) if @categories %>"); | ||||
| $('#app_page_tag').html("<%= j (select 'page', 'tag', @tags.collect{|tag| [tag[I18n.locale], tag.id]}, {:include_blank => true}) if @tags %>"); | ||||
| $('#app_page_frontend_field').html("<%= j render '../admin/pages/frontend_fields' %>") | ||||
|  | @ -1,12 +1,20 @@ | |||
| <div class="style_switch well"> | ||||
|   <label><%= t("default_widget.select_widget_style") %></label> | ||||
|   <% if @module_app.widgets[@widget_path].blank? %> | ||||
|     <%= t("default_widget.no_support_setting")%> | ||||
|   <%else%> | ||||
|     <%= select('page_part', 'widget_style', @module_app.widgets[@widget_path]) %> | ||||
|   <% end %> | ||||
|   <% if(@module_app.widget_options && @module_app.widget_options.has_key?(@widget_path)) %> | ||||
|     <label><%= t("default_widget.select_widget_ext_option") %></label> | ||||
|     <%= render :partial=> "widget_ext_options" %>   | ||||
|   <% end %> | ||||
| <div class="style_switch  control-group"> | ||||
|   <label class="control-label"> | ||||
|     <%= t("default_widget.select_widget_style") %> | ||||
|   </label> | ||||
|   <div class="controls well"> | ||||
|     <% if @module_app.nil? || @module_app.widgets.nil? ||  (@module_app.widgets[@widget_path].blank? rescue true) %> | ||||
|       <%= t("default_widget.no_support_setting")%> | ||||
|     <%else%> | ||||
|       <%= select('page_part', 'widget_style', @module_app.widgets[@widget_path]["style"]) %> | ||||
|     <% end %> | ||||
|   </div> | ||||
| </div> | ||||
|   <% if(@module_app && @module_app.widget_options(@widget_path)) %> | ||||
|     <div class="style_switch  control-group"> | ||||
|       <label class="control-label"><%= t("default_widget.select_widget_ext_option") %></label> | ||||
|       <div class="controls well" > | ||||
|         <%= render :partial=> "widget_ext_options" %>   | ||||
|       </div> | ||||
|     </div> | ||||
|     <% end %> | ||||
|  | @ -1,4 +1,19 @@ | |||
| <div id="widget_field" class="well clear"> | ||||
| <% case  object%> | ||||
|   <% when PagePart %> | ||||
|     <% object_name = 'page_part' %> | ||||
|     <% field_name = 'widget_field' %> | ||||
|     <% data_count = 'widget_data_count' %> | ||||
|   <% when Page %> | ||||
|     <% object_name = 'page' %> | ||||
|     <% field_name = 'frontend_field' %> | ||||
|     <% data_count = 'frontend_data_count' %> | ||||
| <% end %> | ||||
| 
 | ||||
| <div class="style_switch  control-group"> | ||||
| <label class="control-label"> | ||||
|   <%= t("default_widget.fields_") %> | ||||
| </label> | ||||
| <div id="widget_field" class="well clear controls"> | ||||
| 
 | ||||
| 
 | ||||
|   <div class="rows clear"> | ||||
|  | @ -16,19 +31,24 @@ | |||
|     <div class="rows clear"> | ||||
|                         <span class="span4"> | ||||
|                             <%= i+1 %> | ||||
|           <%= select_tag "page_part[widget_field][]", widget_field_options(i), :include_blank => true %> | ||||
|           <%= select_tag "#{object_name}[#{field_name}][]", widget_field_options(i), :include_blank => true %> | ||||
|                         </span> | ||||
|                         <span class="span3"> | ||||
|           <%= select_tag "page_part[widget_field_type][]", widget_fiield_type_options(i), :include_blank => true %> <br /> | ||||
|           <%= select_tag "#{object_name}[#{field_name}_type][]", widget_fiield_type_options(i), :include_blank => true %> <br /> | ||||
|                         </span> | ||||
|                         <span class="span5"></span> | ||||
|                     </div> | ||||
|                     </div><br/> | ||||
| <% end %> | ||||
| <br/> | ||||
|   <div class="rows clear"> | ||||
|     <span class="span4"><%= label_tag t("default_widget.widget_data_count") %></span> | ||||
|     <span class="span4"> | ||||
|       <%= label_tag t("default_widget.widget_data_count") %> | ||||
|     </span> | ||||
|   </div> | ||||
|   <div class="rows clear"> | ||||
|     <span class="span4"><%= text_field_tag :widget_data_count,@part.widget_data_count %></span> | ||||
|     <span class="span4"> | ||||
|       <%= text_field_tag "#{object_name}[#{data_count}]",object.send(data_count) %> | ||||
|     </span> | ||||
|   </div> | ||||
| </div> | ||||
| </div> | ||||
|  | @ -1,45 +1,58 @@ | |||
| <div class="style_switch well"> | ||||
| <label><%= t("default_widget.select_widget_style") %></label> | ||||
| <% field_name='' %> | ||||
| <% case object %> | ||||
|   <% when Page %> | ||||
|     <% field_name = "page[frontend_style]" %> | ||||
|   <% when PagePart %> | ||||
|     <% field_name = "page_part[widget_style]" %> | ||||
| <% end %> | ||||
| 
 | ||||
| <div class="style_switch  control-group"> | ||||
| <label class="control-label"> | ||||
|   <%= t("default_widget.select_widget_style") %> | ||||
| </label> | ||||
| <div class="controls well"> | ||||
|     <ul class="clear"> | ||||
|         <li> | ||||
|             <label class="radio style_radio"> | ||||
|               <%= radio_button_tag :widget_style,"typeA",:checked => style_checked_value(@part,"typeA") %> | ||||
|               <%= radio_button_tag field_name,"typeA",style_checked_value(object,"typeA") %> | ||||
|               1 | ||||
|             </label> | ||||
|             <span class="style_img"><%=image_tag 'module/default_widgets/style01.png'%></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeA") %></span>               | ||||
|             </label> | ||||
| 
 | ||||
|         </li> | ||||
|         <li> | ||||
|             <label class="radio style_radio"> | ||||
|               <%= radio_button_tag :widget_style,"typeB_style2",:checked => style_checked_value(@part,"typeB_style2") %> | ||||
|               <%= radio_button_tag field_name,"typeB_style2",style_checked_value(object,"typeB_style2") %> | ||||
|               2 | ||||
|             </label> | ||||
|             <span class="style_img"><%=image_tag 'module/default_widgets/style02.png'%></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeA") %></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeB_style2") %></span> | ||||
|             </label> | ||||
|         </li> | ||||
|         <li> | ||||
|             <label class="radio style_radio"> | ||||
|               <%= radio_button_tag :widget_style,"typeB_style3",:checked => style_checked_value(@part,"typeB_style3") %> | ||||
|               <%= radio_button_tag field_name,"typeB_style3",style_checked_value(object,"typeB_style3") %> | ||||
|               3 | ||||
|             </label> | ||||
|             <span class="style_img"><%=image_tag 'module/default_widgets/style03.png'%></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeB_style3") %></span> | ||||
|             </label> | ||||
|         </li> | ||||
|         <li> | ||||
|             <label class="radio style_radio"> | ||||
|               <%= radio_button_tag :widget_style,"typeB_style4",:checked => style_checked_value(@part,"typeB_style4") %> | ||||
|               <%= radio_button_tag field_name,"typeB_style4",style_checked_value(object,"typeB_style4") %> | ||||
|               4 | ||||
|             </label> | ||||
|             <span class="style_img"><%=image_tag 'module/default_widgets/style04.png'%></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeB_style4") %></span> | ||||
|             </label> | ||||
|         </li> | ||||
|         <li> | ||||
|             <label class="radio style_radio"> | ||||
|               <%= radio_button_tag :widget_style,"typeC",:checked => style_checked_value(@part,"typeC") %> | ||||
|               <%= radio_button_tag field_name,"typeC",style_checked_value(object,"typeC") %> | ||||
|               5 | ||||
|             </label> | ||||
|             <span class="style_img"><%=image_tag 'module/default_widgets/style05.png'%></span> | ||||
|             <span class="style_description"><%= t("default_widget.caption.typeC") %></span> | ||||
|             </label> | ||||
|         </li> | ||||
|     </ul> | ||||
|   </div> | ||||
| </div> | ||||
|  | @ -1,10 +1,11 @@ | |||
| <%= stylesheet_link_tag "admin/default_widget_setting" %> | ||||
| 
 | ||||
| <%= form_for @part, :url => admin_page_part_path(@part) do |f| %> | ||||
| 	 | ||||
| <%= form_for @part, :url => admin_page_part_path(@part),:html=>{:class=>"clear form-horizontal edit_page_part"} do |f| %> | ||||
| 	<% LIST[:page_part_kinds].each do |kind| %> | ||||
|           <%= label_tag '',:class=>'checkbox inline' do  %> | ||||
| 		<%= f.radio_button :kind, kind, :class => 'part_kind' %> | ||||
| 		<%= t(kind, :scope => 'page_part_kinds') %> | ||||
|         <% end %> | ||||
| 	<% end %> | ||||
| 	<% LIST[:page_part_kinds].each do |kind| %> | ||||
| 		<div id='<%= "part_#{kind}" %>' class='part_kind_partial' style="display:<%= kind.eql?(@part.kind) ? 'block' : 'none' %>"> | ||||
|  | @ -12,7 +13,9 @@ | |||
| 		</div> | ||||
| 	<% end %> | ||||
| 	 | ||||
|   <p> | ||||
|     <%= f.submit t(:update_) %> <%= link_back %> | ||||
|   </p> | ||||
|   <div class="form-actions form-fixed pagination-right"> | ||||
|                 <%= f.submit t(:update_),:class=>"btn btn-primary" %>  | ||||
|                 <%= link_back("btn") %> | ||||
| 
 | ||||
| </div> | ||||
| <% end %> | ||||
|  |  | |||
|  | @ -1,39 +1,47 @@ | |||
|     <div> | ||||
|           <%= f.fields_for :title_translations do |f| %> | ||||
|         <%= f.fields_for :title_translations do |f| %> | ||||
|             <% @site_valid_locales.each do |locale| %> | ||||
|         <p> | ||||
|                 <%= f.label :locale, "#{t(:title)} #{I18nVariable.from_locale(locale)}" %> | ||||
|                 <%= f.text_field locale, :value => (@part.title_translations[locale] rescue nil),:size=>30 %> | ||||
|         </p> | ||||
|               <% end %> | ||||
|                 <div class="control-group"> | ||||
|                     <%= f.label :locale, "#{t(:title)} #{I18nVariable.from_locale(locale)}",:class=>"control-label" %> | ||||
|                     <div class="controls"> | ||||
|                         <%= f.text_field locale, :value => (@part.title_translations[locale] rescue nil),:size=>30 %> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             <% end %> | ||||
|         <% end %> | ||||
|     </div> | ||||
| 
 | ||||
|     <p id="module_app_list"> | ||||
|         <label for="age_part[module_app]"><%= t "default_widget.select_module_app" %></label> | ||||
|         <%= f.select :module_app, options_from_collection_for_select(@module_apps, :id, :title, :selected => @module_app.id), {}, {:rel => admin_page_parts_path} %> | ||||
|     </p> | ||||
| 
 | ||||
|     <p id="widget_list"> | ||||
|         <label for="age_part[widget_path]"><%= t "default_widget.select_widget_path" %></label> | ||||
|         <%= f.select :widget_path, @module_app.widgets.collect{|k,v| [k.humanize, k]}, {}, { :selected => @part.widget_path, :rel => admin_page_parts_path } %> | ||||
|     </p> | ||||
|     <div id="module_app_list" class="control-group"> | ||||
|         <label for="page_part[module_app]" class="control-label"> | ||||
|             <%= t "default_widget.select_module_app" %> | ||||
|         </label> | ||||
|         <div class="controls">   | ||||
|         <%= f.select :module_app, options_from_collection_for_select(@module_apps, :id, :module_name, :selected => (@module_app.id rescue nil)), {:include_blank => true }, {:rel => admin_page_parts_path,:id=>"page_module_app_id"} %> | ||||
|         </div> | ||||
|     </div> | ||||
|      | ||||
|     <div id="widget_list" class="control-group"> | ||||
|         <label for="page_part[widget_path]" class="control-label"> | ||||
|             <%= t "default_widget.select_widget_path" %> | ||||
|         </label> | ||||
|         <div class="controls">   | ||||
|         <%= f.select :widget_path, @module_app ? @module_app.widgets.collect{|k,v| [I18n.t(v["i18n"]),k]} : [], {}, { :selected => @part.widget_path, :rel => admin_page_parts_path } %> | ||||
|         </div> | ||||
|     </div> | ||||
| 
 | ||||
| 
 | ||||
|     <div id="widget_option"> | ||||
|         <div id="widget_data_source_category" class="well"> | ||||
|             <%= render :partial => 'widget_data_source_category' %> | ||||
|         <div id="widget_data_source_category" class="control-group"> | ||||
|             <%= render :partial => 'widget_data_source_category' ,:locals=>{:object=>@part}%> | ||||
|         </div> | ||||
|         <div id="widget_data_source_tag" class="well"> | ||||
|             <%= render :partial => 'widget_data_source_tag' %> | ||||
|         <div id="widget_data_source_tag" class="control-group"> | ||||
|             <%= render :partial => 'widget_data_source_tag' ,:locals=>{:object=>@part} %> | ||||
|         </div> | ||||
| 
 | ||||
|          | ||||
|     </div> | ||||
| 
 | ||||
|     <div id="widget_setting"> | ||||
|         <%= render :partial => 'widget_setting' ,:locals=>{:f=>f} %> | ||||
|         <%= render :partial => 'widget_setting' ,:locals=>{:f=>f,:object=>@part} %> | ||||
|     </div> | ||||
| <!--     <span id="widget_options"> | ||||
| 
 | ||||
|     </span> --> | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| <div class="style_switch  control-group"> | ||||
|   <label class="control-label"> | ||||
|     <%= t(label_i18n) %> | ||||
|   </label> | ||||
|   <div class="controls well"> | ||||
|     <%= t('default_widget.no_support_setting') %> | ||||
|   </div> | ||||
| </div> | ||||
|  | @ -1,12 +1,22 @@ | |||
|   <label><%= t "default_widget.data_source.tag" %></label> | ||||
| <% case  object %> | ||||
| <% when  Page %> | ||||
|   <% field_name = 'page' %> | ||||
| <% when  PagePart %> | ||||
|   <% field_name = 'page_part' %> | ||||
| <% end %> | ||||
| 
 | ||||
| 
 | ||||
|   <label  class="control-label"><%= t "default_widget.data_source.category" %></label> | ||||
|     <div class="well controls">  | ||||
|   <% if @categories %> | ||||
|     <fieldset> | ||||
|         <%= nil_radio_button(@part,:category) %> | ||||
|         <%= content_tag_for(:label, @categories,:class=>"radio inline") do |category|%> | ||||
|           <%= radio_button("page_part", "category", category.id, :checked => category_checked_value(@part,category.id) )%> | ||||
|           <%= category.title%> | ||||
|         <% end %> | ||||
|     </fieldset> | ||||
|   <% else %> | ||||
|     <%= t("default_widget.no_support_setting")%> | ||||
|   <% end %> | ||||
|       <fieldset> | ||||
|           <%= nil_radio_button(object,:category) %> | ||||
|           <%= content_tag_for(:label, @categories,:class=>"radio inline") do |category|%> | ||||
|             <%= radio_button_tag("#{field_name}[category]", category.id,  category_checked_value(object,category.id) )%> | ||||
|             <%= category.title%> | ||||
|           <% end %> | ||||
|       </fieldset> | ||||
|     <% else %> | ||||
|       <%= t("default_widget.no_support_setting")%> | ||||
|     <% end %> | ||||
|   </div> | ||||
|  | @ -1,12 +1,22 @@ | |||
| <label><%= t "default_widget.data_source.category" %></label> | ||||
| <% case  object %> | ||||
| <% when  Page %> | ||||
|   <% field_name = 'page' %> | ||||
| <% when  PagePart %> | ||||
|   <% field_name = 'page_part' %> | ||||
| <% end %> | ||||
| 
 | ||||
| 
 | ||||
| <label class="control-label"><%= t "default_widget.data_source.tag" %></label> | ||||
| <div class="well controls"> | ||||
|   <% if @categories %> | ||||
|     <fieldset> | ||||
|         <%= nil_radio_button(@part,:tag) %> | ||||
|         <%= nil_radio_button(object,:tag) %> | ||||
|         <%= content_tag_for(:label, @tags,:class=>"radio inline") do |tag|%> | ||||
|           <%= radio_button("page_part", "tag", tag.id, :checked => tag_checked_value(@part,tag.id) )%> | ||||
|           <%= radio_button_tag("#{field_name}[tag]", tag.id,  tag_checked_value(object,tag.id)  ) %> | ||||
|           <%= tag[I18n.locale]%> | ||||
|         <% end %> | ||||
|         <% end if @tags%> | ||||
|     </fieldset> | ||||
|   <% else %> | ||||
|     <%= t("default_widget.no_support_setting")%> | ||||
|   <% end %> | ||||
| </div> | ||||
|  | @ -1,5 +1,6 @@ | |||
|       <% @module_app.widget_options[@widget_path].each do |key,options| %> | ||||
|       <%= label_tag(t(@module_app.widget_options_fields_i18n[@widget_path][key]))%> | ||||
|       <% @module_app.widget_options(@widget_path).get_options.each do |key,settings| %> | ||||
|       <% options = settings[:opts] %> | ||||
|       <%= label_tag(t(settings[:label_i18n]))%> | ||||
|         <% case  options%> | ||||
|           <% when  Hash%> | ||||
|             <%= select_tag "page_part[widget_options][#{key}]", options_from_collection_for_select(eval(options["query"]), options["value"], options["label"].to_s, :selected => (@part.widget_options[key] rescue nil)) %> | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| <% if  show_default_widget_setting_panel %> | ||||
|     <div id="default_widget"> | ||||
|         <%= render :partial => 'default_widget_style_panel',:locals=>{:f=>f} %> | ||||
|         <%= render :partial => 'default_widget_setting' %> | ||||
|         <%= render :partial => 'admin/page_parts/default_widget_style_panel',:locals=>{:f=>f,:object=>object} %> | ||||
|         <%= render :partial => 'admin/page_parts/default_widget_setting',:locals=>{:object=>object} %> | ||||
|     </div>   | ||||
| <% elsif show_custom_widget_setting_panel %>  | ||||
|     <div id="custom_widget"> | ||||
|         <%= render :partial => 'custom_widget_setting' %> | ||||
|         <%= render :partial => 'admin/page_parts/custom_widget_setting',:locals=>{:object=>object} %> | ||||
|     </div>   | ||||
| <% end %> | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| 	<%= select 'page_part', 'category', @categories.collect{|category| [category.title, category.id]}, :selected => (@part ? @part[:category] : nil), :include_blank => true if @categories && @categories.size > 0 %> | ||||
|  | @ -1 +0,0 @@ | |||
| 	<%= select 'page_part', 'tag', @tags.collect{|tag| [tag[I18n.locale], tag.id]}, :selected => (@part ? @part[:tag] : nil), :include_blank => true if @tags && @tags.size > 0 %> | ||||
|  | @ -1,7 +1,7 @@ | |||
| 
 | ||||
|   <% if  show_default_widget_setting_panel %> | ||||
|     $('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel' %>"); | ||||
|     $('#widget_setting').append("<%= j render :partial => 'default_widget_setting' %>"); | ||||
|     $('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel',:locals=>{:object=>@part} %>"); | ||||
|     $('#widget_setting').append("<%= j render :partial => 'default_widget_setting',:locals=>{:object=>@part} %>"); | ||||
|   <% elsif show_custom_widget_setting_panel %> | ||||
|     $('#widget_setting').html("<%= j render :partial => 'custom_widget_setting' %>"); | ||||
|   <% end %> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,13 +1,18 @@ | |||
| $('#widget_list select').html("<%= j options_for_select(@module_app.widgets.collect{|k,v| k},@part.widget_path) %>"); | ||||
| $("#widget_data_source_category").html("<%= j render :partial => 'widget_data_source_category' %>"); | ||||
| $("#widget_data_source_tag").html("<%= j render :partial => 'widget_data_source_tag' %>"); | ||||
| <% if  @module_app%> | ||||
|   $('#widget_list select').html("<%= j options_for_select(@module_app.widgets.collect{|k,v| [I18n.t(v['i18n']),k]},@part.widget_path) %>"); | ||||
|   $("#widget_data_source_category").html("<%= j render :partial => 'widget_data_source_category',:locals=>{:object=>@part}  %>"); | ||||
|   $("#widget_data_source_tag").html("<%= j render :partial => 'widget_data_source_tag',:locals=>{:object=>@part}  %>"); | ||||
| 
 | ||||
| <% if  !@part.widget_path.blank? %> | ||||
|   <% if  show_default_widget_setting_panel %> | ||||
|     $('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel' %>"); | ||||
|     $('#widget_setting').append("<%= j render :partial => 'default_widget_setting' %>"); | ||||
|   <% elsif show_custom_widget_setting_panel %> | ||||
|     $('#widget_setting').html("<%= j render :partial => 'custom_widget_setting' %>"); | ||||
|   <% if  @part %> | ||||
|     <% if  show_default_widget_setting_panel %> | ||||
|       $('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel' %>"); | ||||
|       $('#widget_setting').append("<%= j render :partial => 'default_widget_setting',:locals=>{:object=>@part} %>"); | ||||
|     <% elsif show_custom_widget_setting_panel %> | ||||
|       $('#widget_setting').html("<%= j render :partial => 'custom_widget_setting' %>"); | ||||
|     <% end %> | ||||
|   <% end %> | ||||
|   <% else %> | ||||
|     $('#widget_option').find("div.well.controls").html("<%= t('default_widget.no_support_setting')%>");   | ||||
|     $('#widget_setting').html("<%=j render :partial=> 'reset',:locals=>{:label_i18n=>'default_widget.select_widget_style'}%>");   | ||||
|     $('#widget_list select').html("<%= j options_for_select([]) %>"); | ||||
| <% end %> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| <%= f.select :module_app_id, @apps.collect { |t| [t.title.capitalize, t.id] }, {:include_blank => true} ,{:rel => admin_module_apps_path }  %> | ||||
| <%= f.select :module_app_id, @apps.collect { |t| [t.module_name, t.id] }, {:include_blank => true} ,{:rel => admin_pages_path }  %> | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| <div class="control-group"> | ||||
|   <label class="control-label"> | ||||
|     <%= t("default_widget.select_widget_style") %> | ||||
|   </label> | ||||
|   <div class="controls well"> | ||||
|       <%= t("default_widget.no_support_setting")%> | ||||
|   </div> | ||||
| </div> | ||||
|  | @ -2,9 +2,12 @@ | |||
| <%= f.hidden_field :parent, :value => (@item.parent.id rescue nil) %> | ||||
| 
 | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :name, t(:name), :class => 'control-label' %> | ||||
| 	<%= f.label :name, '*'+t(:name), :class => 'control-label' %> | ||||
| 	  | ||||
| 	 | ||||
| 	<div class="controls"> | ||||
| 		<%= f.text_field :name, :class => 'text input-xlarge' %> | ||||
| 		<span class="help-inline">請輸入數字或英文,不可使用空白</span> | ||||
| 		<!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -35,36 +38,37 @@ | |||
| 		<!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> | ||||
| 	</div> | ||||
| </div> | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :name, t(:module), :class => 'control-label' %> | ||||
| 
 | ||||
| <div class="control-group" id="module_app_list"> | ||||
| 	<%= f.label '',t("default_widget.select_module_app"), :class => 'control-label' %> | ||||
| 	<div class="controls"> | ||||
| 		<%= render :partial => "app_selector", :locals => { :f => f } %> | ||||
| 		<span id="app_page_url"> | ||||
| 			<%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> | ||||
| 		</span> | ||||
| 		<span id="app_page_frontend_style"> | ||||
| 			<%= select('page','frontend_style', @frontend_style, :selected => @item[:frontend_style], :include_blank => true ) rescue ''%> | ||||
| 		</span> | ||||
| 		<span id="app_page_category"> | ||||
| 			<%= select('page','category', @categories.collect{|category| [category.title, category.id]}, :selected => @item[:category], :include_blank => true ) rescue ''%> | ||||
| 		</span> | ||||
| 		<span id="app_page_tag"> | ||||
| 			<%= select('page','tag', @tags.collect{|tag| [tag[I18n.locale], tag.id]}, :selected => @item[:tag], :include_blank => true ) rescue ''%> | ||||
| 		</span> | ||||
| 		<span id="app_page_frontend_field"> | ||||
| 			<%= render 'frontend_fields' %> | ||||
| 		</span> | ||||
| 		<!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> | ||||
| 	</div> | ||||
| </div> | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :frontend_data_count, t(:frontend_data_count), :class => 'control-label' %> | ||||
| 	<div class="controls"> | ||||
| 		<%= f.text_field :frontend_data_count %> | ||||
| 
 | ||||
| <div  class="control-group" id="frontend_list"> | ||||
| 	<%= f.label '', t("front_page.select_app_url"), :class => 'control-label' %> | ||||
| 	<div class="controls" id="app_page_url"> | ||||
| 		<%= select('page','app_frontend_url', @app_frontend_urls || [], :selected => @item.app_frontend_url ) rescue ''%> | ||||
| 	</div> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div id="app_page_category"  class="control-group"> | ||||
| 	<%= render :partial=>"admin/page_parts/widget_data_source_category",:locals=>{:object=>@item} %> | ||||
| </div> | ||||
| 
 | ||||
| <div id="app_page_tag"  class="control-group"> | ||||
| 	<%= render :partial=>"admin/page_parts/widget_data_source_tag" ,:locals=>{:object=>@item}%> | ||||
| </div> | ||||
| 
 | ||||
| <div id="frontend_setting"> | ||||
| 	<%= render :partial => 'frontend_setting', :locals=>{:object=>@item,:f=>f} %> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :is_published, "#{t(:is_published)} ?", :class => 'control-label' %> | ||||
| 	<%= f.label :is_published, "#{t('front_page.is_published')} ?", :class => 'control-label' %> | ||||
| 	<div class="controls"> | ||||
| 		<label class="radio"> | ||||
| 			<%= f.radio_button :is_published, true %> | ||||
|  | @ -78,7 +82,7 @@ | |||
| 	</div> | ||||
| </div> | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :menu_enabled_for, "#{t(:menu_enabled_for)}:", :class => 'control-label' %> | ||||
| 	<%= f.label :menu_enabled_for, "#{t('front_page.menu_enable_lang')}:", :class => 'control-label' %> | ||||
| 	<div class="controls"> | ||||
| 		<% @site_valid_locales.each do |valid_locale| %> | ||||
| 		<label class="checkbox"> | ||||
|  | @ -92,7 +96,7 @@ | |||
| </div> | ||||
| 
 | ||||
| <div class="control-group"> | ||||
| 	<%= f.label :enabled_for, "#{t(:enabled_for)}:", :class => 'control-label' %> | ||||
| 	<%= f.label :enabled_for, "#{t('front_page.link_enable_lang')}:", :class => 'control-label' %> | ||||
| 	<div class="controls"> | ||||
| 		<% @site_valid_locales.each do |valid_locale| %> | ||||
| 		<label class="checkbox"> | ||||
|  |  | |||
|  | @ -0,0 +1,3 @@ | |||
| <% if  show_default_widget_setting_panel %> | ||||
| <%= render :partial=>'admin/page_parts/widget_setting',:locals=>{:object=>object,:f=>f} %> | ||||
| <% end %> | ||||
|  | @ -1,3 +1,4 @@ | |||
| <%= stylesheet_link_tag "admin/default_widget_setting" %> | ||||
| <% content_for :sidebar do %> | ||||
|     <%= render 'admin/items/site_map_left_bar' %> | ||||
| <% end -%> | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| <% if  show_default_widget_setting_panel %> | ||||
|     // $('#app_page_tag').html("<%=  j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@page} %>"); | ||||
| 
 | ||||
|     $('#frontend_setting').html("<%= j render :partial => 'admin/page_parts/default_widget_style_panel',:locals=>{:object=>@page} %>"); | ||||
|     $('#frontend_setting').append("<%= j render :partial => 'admin/page_parts/default_widget_setting',:locals=>{:object=>@page} %>"); | ||||
|   <% else %> | ||||
|     $('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>"); | ||||
| <% end %> | ||||
|  | @ -0,0 +1,33 @@ | |||
| <% if @module_app %> | ||||
|   $('#app_page_category').html("<%= j render :partial => 'admin/page_parts/widget_data_source_category' ,:locals=>{:object=>@page}%>"); | ||||
|   $('#app_page_tag').html("<%=  j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@page} %>"); | ||||
| 
 | ||||
|   <% if !@module_app.app_pages.blank? %> | ||||
|     $('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', options_for_select(@app_frontend_urls, @app_frontend_urls.first)) %>"); | ||||
|     <%else %> | ||||
|     $('#app_page_url').html("<%= t('default_widget.no_support_setting')%>"); | ||||
|   <% end %> | ||||
| 
 | ||||
|   <% if  @app_frontend_urls.first =='default_widget' %> | ||||
|       $('#app_page_frontend_style').html("<%= escape_javascript(select 'page', 'frontend_style', @module_app.widgets[@frontend_path]) if !@frontend_path.blank? %>"); | ||||
|     <% else %> | ||||
|       $('#app_page_frontend_style').html("<%= t('default_widget.no_support_setting')%>"); | ||||
|   <% end %> | ||||
| 
 | ||||
|   <% if  show_default_widget_setting_panel %> | ||||
|       $('#app_page_tag').html("<%=  j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@page} %>"); | ||||
| 
 | ||||
|       $('#frontend_setting').html("<%= j render :partial => 'admin/page_parts/default_widget_style_panel',:locals=>{:object=>@page} %>"); | ||||
|       $('#frontend_setting').append("<%= j render :partial => 'admin/page_parts/default_widget_setting',:locals=>{:object=>@page} %>"); | ||||
|     <% else %> | ||||
|       $('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>"); | ||||
|   <% end %> | ||||
| <% else %> | ||||
| 
 | ||||
|   $('#app_page_url').html("<%= t('default_widget.no_support_setting')%>"); | ||||
|   $('#app_page_category').find("div.well.controls").html("<%= t('default_widget.no_support_setting')%>"); | ||||
|   $('#app_page_tag').find("div.well.controls").html("<%= t('default_widget.no_support_setting')%>"); | ||||
| 
 | ||||
|   $('#app_page_url').html("<%= t('default_widget.no_support_setting')%>"); | ||||
|   $('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>"); | ||||
| <% end %> | ||||
|  | @ -5,7 +5,6 @@ | |||
| <% content_for :page_specific_css do -%> | ||||
|     <%= stylesheet_link_tag "member" %> | ||||
|     <%= stylesheet_link_tag "site-map" %> | ||||
|     <%= stylesheet_link_tag "isotope" %> | ||||
| <% end -%> | ||||
| <% content_for :page_specific_javascript do -%> | ||||
|     <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %> | ||||
|  |  | |||
|  | @ -5,7 +5,6 @@ | |||
| <% content_for :page_specific_css do -%> | ||||
|     <%= stylesheet_link_tag "member" %> | ||||
|     <%= stylesheet_link_tag "site-map" %> | ||||
|     <%= stylesheet_link_tag "isotope" %> | ||||
| <% end -%> | ||||
| <% content_for :page_specific_javascript do -%> | ||||
|     <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %> | ||||
|  |  | |||
|  | @ -5,7 +5,6 @@ | |||
| <% content_for :page_specific_css do -%> | ||||
|     <%= stylesheet_link_tag "member" %> | ||||
|     <%= stylesheet_link_tag "site-map" %> | ||||
|     <%= stylesheet_link_tag "isotope" %> | ||||
| <% end -%> | ||||
| <% content_for :page_specific_javascript do -%> | ||||
|     <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %> | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ | |||
| 
 | ||||
|         <li class="dock_item"><a callback-method='initializeJournalPapers' href="<%= panel_personal_journal_desktop_journal_p_path %>" class="widget_fn wh3 hh3" id='d_journal_p' custom-load="journal" onclick="return false;"><span class="widget_icon"><img src="" alt="Journal Papers" id="journal_p_icon" width="30" height="30"/></span></a></li> | ||||
| 
 | ||||
|         <li class="dock_item"><a callback-method='initializeSeminar' href="<%= desktop_publications_seminar_p_path %>" class="widget_fn wh3 hh3" id='d_seminar_p' custom-load="seminar" onclick="return false;"><span class="widget_icon"><img src="" alt="Seminar Papers" id="seminar_p_icon" width="30" height="30"/></span></a></li> | ||||
|         <li class="dock_item"><a callback-method='initializeConference' href="<%= panel_personal_conference_desktop_conference_p_path %>" class="widget_fn wh3 hh3" id='d_conference_p' custom-load="conference" onclick="return false;"><span class="widget_icon"><img src="" alt="Conference Papers" id="conference_p_icon" width="30" height="30"/></span></a></li> | ||||
| 
 | ||||
|         <li class="dock_item"><a callback-method='initializeBooks' href="<%= desktop_publications_books_path %>" class="widget_fn wh3 hh3" id='d_books' onclick="return false;"><span class="widget_icon"><img src="" alt="Books" id="books_icon" width="30" height="30"/></span></a></li> | ||||
| 
 | ||||
|  | @ -103,3 +103,4 @@ | |||
|   o.notify("Welcome "+o.currentUsername+"!!","alert",3); | ||||
| </script> | ||||
| <%= javascript_include_tag "personal_journal" %> | ||||
| <%= javascript_include_tag "personal_conference" %> | ||||
|  |  | |||
|  | @ -41,10 +41,10 @@ | |||
| 		<div class="overview"> | ||||
| 			<div class="s_grid_con s_form"> | ||||
| 				<ul> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Seminar Title</textarea></li> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Conference Title</textarea></li> | ||||
| 					<li class="s_grid_row"> | ||||
| 					<label>Paper type</label><input type="radio" name="" value="Books" />Oral<input type="radio" name="" value="Chapter" />Poster</li> | ||||
| 					<li class="s_grid_row"><label>Seminar time</label></li> | ||||
| 					<li class="s_grid_row"><label>Conference time</label></li> | ||||
| 					 | ||||
| 					<li class="s_grid_row"><select name="" id="" class="s_grid s_grid_1"> | ||||
| 							<option value=""></option> | ||||
|  |  | |||
|  | @ -41,10 +41,10 @@ | |||
| 		<div class="overview"> | ||||
| 			<div class="s_grid_con s_form"> | ||||
| 				<ul> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Seminar Title</textarea></li> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Conference Title</textarea></li> | ||||
| 					<li class="s_grid_row"> | ||||
| 					<label>Paper type</label><input type="radio" name="" value="Books" />Oral<input type="radio" name="" value="Chapter" />Poster</li> | ||||
| 					<li class="s_grid_row"><label>Seminar time</label></li> | ||||
| 					<li class="s_grid_row"><label>Conference time</label></li> | ||||
| 					 | ||||
| 					<li class="s_grid_row"><select name="" id="" class="s_grid s_grid_1"> | ||||
| 							<option value=""></option> | ||||
|  |  | |||
|  | @ -41,10 +41,10 @@ | |||
| 		<div class="overview"> | ||||
| 			<div class="s_grid_con s_form"> | ||||
| 				<ul> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Seminar Title</textarea></li> | ||||
| 					<li class="s_grid_row"><textarea class="s_grid_6 s_grid" name="" id="">Conference Title</textarea></li> | ||||
| 					<li class="s_grid_row"> | ||||
| 					<label>Paper type</label><input type="radio" name="" value="Books" />Oral<input type="radio" name="" value="Chapter" />Poster</li> | ||||
| 					<li class="s_grid_row"><label>Seminar time</label></li> | ||||
| 					<li class="s_grid_row"><label>Conference time</label></li> | ||||
| 					 | ||||
| 					<li class="s_grid_row"><select name="" id="" class="s_grid s_grid_1"> | ||||
| 							<option value=""></option> | ||||
|  |  | |||
|  | @ -1,33 +0,0 @@ | |||
| <div id="seminar_p"> | ||||
| 	<div id="content"> | ||||
| 		<div id="header" class="hh3"> | ||||
| 			<div class="dtitle w2 hh3 hp"> | ||||
| 				<span class="thmtxth">Seminar</span> | ||||
| 			</div> | ||||
| 			<div id="search_app" class="hfn w2 hh2 hp thmc3"> | ||||
| 			<input type="text" class="ini_input form" value="Search" id="searchbox" /> | ||||
| 			<input type="submit" class="ini_input submit thmc1" value="Submit"/> | ||||
| 		</div> | ||||
| 		</div> | ||||
| 		<div id="holder"> | ||||
| 			<div id="panel_l" class="ph"> | ||||
| 				<div class="s_menu sm_v" content-type="menu"> | ||||
| 					<ul id='setting_left_nav'> | ||||
| 						<li><a href="<%= desktop_publications_seminar_p_list_path %>" callback-method="list" class="hh2 w2 hp active thmc1 thmtxt" onclick='return false;'>List</a></li> | ||||
| 						<li><a href="<%= desktop_publications_seminar_p_add_path %>" callback-method="addseminar" custom-load="add" class="admtxt hh2 w2 hp" onclick='return false;'>Add/Edit</a></li> | ||||
| 						<li><a href="<%= desktop_publications_seminar_p_add_path %>" callback-method="seminar" class="admtxt hh2 w2 hp" onclick='return false;'>Seminar</a></li> | ||||
| 						<li><a href="<%= desktop_publications_seminar_p_list_path %>" callback-method="rues" class="admtxt hh2 w2 hp" onclick='return false;'>Co-Authors</a></li> | ||||
| 						<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Tags & Keywords</a></li> | ||||
| 						<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Analysis</a></li> | ||||
| 						<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Import</a></li> | ||||
| 						<li><a href="" class="admtxt hh2 w2 hp" onclick='return false;'>Export</a></li> | ||||
| 					</ul> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 			<div id="panel_r" container="true" class="ph pw admbg hp"> | ||||
| 			</div> | ||||
| 			<div class="clear"></div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -10,25 +10,19 @@ | |||
|     </div> | ||||
|     <ul class="nav"> | ||||
|       <li><a href="<%= root_path %>" data-icons=""></a></li> | ||||
|       <!-- <li><a href="<%= desktop_path %>" data-icons=""></a></li> --> | ||||
|       <li><a href="<%= desktop_path %>" data-icons=""></a></li> | ||||
|     </ul> | ||||
|     <ul class="nav pull-right"> | ||||
|       <!-- | ||||
|       <li class="dropdown"> | ||||
|           <a class="dropdown-toggle" data-icons="" href="#" data-toggle="dropdown"></a> | ||||
|           <ul class="dropdown-menu"> | ||||
|             <% t('ntu.site_names').each do |site| %> | ||||
|               <li><%= link_to site[1], get_link(site[0]) %></li> | ||||
|             <% end %> | ||||
|             <% #t('ntu.site_names').each do |site| %> | ||||
|               <li><%#= link_to site[1], get_link(site[0]) %></li> | ||||
|             <%# end %> | ||||
|           </ul> | ||||
|       </li> | ||||
|       <li class="dropdown language"> | ||||
|         <a class="dropdown-toggle" href="#" data-toggle="dropdown" data-icons=""></a> | ||||
|         <ul class="dropdown-menu language-menu"> | ||||
|           <% @site_in_use_locales.each do |locale| %> | ||||
|             <%= content_tag :li, (link_to t(:_locale, :locale => locale), add_locale(remove_locale((referer rescue request.fullpath)), locale)), :class => (I18n.locale.eql?(locale.to_sym) ? 'active' : nil) %> | ||||
|           <% end %> | ||||
|         </ul> | ||||
|       </li> | ||||
|       --> | ||||
|       <li class="search clear" title="<%= t :search_google %>"> | ||||
|       <a class="orbit-bar-search" href="#" data-icons=""></a> | ||||
|       <form class="navbar-search" method="get" action="http://www.google.com/custom"> | ||||
|  | @ -41,6 +35,14 @@ | |||
|         <%= text_field_tag 'q','',{:class => "search-query span3",:placeholder=> t(:search_google) ,:disabled=> ((@site.search["sitesearch"] || @site.search["domains"] ).blank? rescue true)}%> | ||||
|       </form> | ||||
|       </li> | ||||
|       <li class="dropdown language"> | ||||
|         <a class="dropdown-toggle orbit-bar-language" href="#" data-toggle="dropdown" data-icons=""></a> | ||||
|         <ul class="dropdown-menu language-menu"> | ||||
|           <% @site_in_use_locales.each do |locale| %> | ||||
|             <%= content_tag :li, (link_to t(:_locale, :locale => locale), add_locale(remove_locale((referer rescue request.fullpath)), locale)), :class => (I18n.locale.eql?(locale.to_sym) ? 'active' : nil) %> | ||||
|           <% end %> | ||||
|         </ul> | ||||
|       </li> | ||||
|       <% if user_signed_in? %> | ||||
|         <li class="dropdown active"> | ||||
|         <a class="orbit-bar-account" href="#" data-toggle="dropdown"> | ||||
|  |  | |||
|  | @ -13,7 +13,8 @@ | |||
| 	<div class="viewport"> | ||||
| 		<div class="overview"> | ||||
| 			<ul class="nav nav-list"> | ||||
| 				<%= render ((local_assigns.has_key? :side_bar_content) ? side_bar_content : 'layouts/side_bar_content') %> | ||||
|                         <%= render :partial=> 'layouts/side_bar_content'%> | ||||
| 				<%#= render ((local_assigns.has_key? :side_bar_content) ? side_bar_content : 'layouts/side_bar_content') %> | ||||
| 			</ul> | ||||
| 		</div> | ||||
| 	</div> | ||||
|  |  | |||
|  | @ -1,78 +1,15 @@ | |||
| <%#= content_tag :li, :class => active_for_controllers('purchases') do -%> | ||||
|   <%#= link_to content_tag(:i, nil, :class => 'icons-purchase') + t('admin.purchase'), admin_purchases_path %> | ||||
| <%# end -%> | ||||
| <% content_for :page_specific_javascript do %> | ||||
|   <%= javascript_include_tag "/static/kernel.js"  %> | ||||
| <% end %> | ||||
| 
 | ||||
| <%= content_tag :li, :class => (active_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals') ||  active_for_app_auth('Announcement') || active_for_ob_auths_object("BulletinCategory") ) do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-megaphone') + content_tag(:span, t('announcement.announcement')), panel_announcement_back_end_bulletins_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + (visible_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals')||active_for_ob_auths_object("BulletinCategory"))) do -%> | ||||
|     <%= content_tag :li, link_to((t('announcement.all_articles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_bulletins_path), :class => active_for_action('bulletins', 'index')if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t('announcement.add_new') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t('announcement.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_bulletin_categorys_path), :class =>( active_for_action('bulletin_categorys', 'index') || active_for_ob_auths_object("BulletinCategory") )if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t('announcement.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_tags_path), :class => active_for_action('/panel/announcement/back_end/tags', 'index')if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t('announcement.bulletin.approval_setting') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_approval_setting_path), :class => active_for_action('approvals', 'setting')  if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t(:module_authorization) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "announcement"}))), :class => active_for_app_auth('Announcement') if (is_admin? rescue nil) %> | ||||
| 
 | ||||
|   <% end -%> | ||||
| 
 | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('page_contexts') || active_for_app_auth('page_content') || active_for_ob_auths_object("PageContext")  do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-newspaper') + content_tag(:span, t(:page)), panel_page_content_back_end_page_contexts_path %> | ||||
|     <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('page_contexts')) do -%> | ||||
|       <%= content_tag :li, link_to((t(:module_authorization) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "page_content"}))), :class => active_for_app_auth('page_content')  if (is_admin? rescue nil) %> | ||||
|     <% end -%> | ||||
| 
 | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('ad_banners', 'ad_images') ||active_for_ob_auths_object("AdBanner") ||active_for_app_auth('ad_banner') do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-landscape') + content_tag(:span, t(:ad_banner)), admin_ad_banners_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('ad_banners', 'ad_images') ) do -%> | ||||
|     <%= content_tag :li, link_to((t(:module_authorization) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "ad_banner"}))), :class => active_for_app_auth('ad_banners')  if (is_admin? rescue nil) %> | ||||
|   <% end -%> | ||||
| <% end %> | ||||
| <%OrbitApp::Module::SideBarRegisition.all.each do |t| %> | ||||
|   <%= t.render(request,params,current_user,@module_app) %> | ||||
| 
 | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys') || active_for_app_auth('web_resource')  || active_for_ob_auths_object("WebLinkCategory")  do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-link') + content_tag(:span, t(:link)), panel_web_resource_back_end_web_links_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys')) do -%> | ||||
|     <%= content_tag :li, link_to((t(:list_) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_web_links_path), :class => active_for_action('web_links', 'index')if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t(:link) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_web_resource_back_end_web_link_path), :class => active_for_action('web_links', 'new') if (is_manager? rescue nil)%> | ||||
|     <%= content_tag :li, link_to((t(:categories) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_web_link_categorys_path), :class => (active_for_action('web_link_categorys', 'index') || active_for_ob_auths_object("WebLinkCategory")) if (is_manager? rescue nil)%> | ||||
|     <%= content_tag :li, link_to((t(:tags) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_tags_path), :class => active_for_action('/panel/web_resource/back_end/tags', 'index') if (is_manager? rescue nil)%> | ||||
|     <%= content_tag :li, link_to((t(:module_authorization) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "web_resource"}))), :class => active_for_app_auth('web_resource')  if (is_admin? rescue nil) %> | ||||
|   <% end -%> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('albums','album_images','gallery_categories','/panel/gallery/back_end/tags') || active_for_app_auth("gallery") do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-pictures') + content_tag(:span, t("gallery.gallery")), panel_gallery_back_end_albums_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('albums') ) do -%> | ||||
|   <%= content_tag(:li, link_to((t('gallery.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_gallery_back_end_gallery_categories_path), :class => active_for_action('gallery_categories','index') )if (is_manager? rescue nil)%> | ||||
|   <%= content_tag :li, link_to((t('gallery.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_gallery_back_end_tags_path), :class => active_for_action('/panel/gallery/back_end/tags', 'index') if (is_manager? rescue nil) %> | ||||
|   <%= content_tag :li, link_to((t(:module_authorization) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "gallery"}))), :class => active_for_app_auth('gallery')  if (is_admin? rescue nil) %> | ||||
|   <% end -%> | ||||
| <% end %> | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('archive_files', 'panel/archive/back_end/tags', 'archive_file_categorys') do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-archive') + content_tag(:span, t(:archive)), panel_archive_back_end_archive_files_path %> | ||||
|     <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('archive_files', 'tags', 'archive_file_categorys')) do -%> | ||||
|     <%= content_tag :li, link_to((t(:all) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_archive_files_path), :class => active_for_action('archive_file', 'index')if (is_manager? rescue nil) %> | ||||
|     <%= content_tag :li, link_to((t(:add) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_archive_back_end_archive_file_path), :class => active_for_action('archive_file', 'new')  if (is_admin? rescue nil)%> | ||||
|     <%= content_tag(:li, link_to((t(:categories) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_archive_file_categorys_path), :class => active_for_action('archive_file_categorys', 'index'))if (is_manager? rescue nil)%> | ||||
|     <%= content_tag :li, link_to((t(:tags) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_tags_path), :class => active_for_action('tags', 'index') if (is_manager? rescue nil)%> | ||||
|   <% end -%> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= content_tag :li, :class => active_for_controllers('cals','panel/calendar/back_end/tags') || active_for_app_auth("calendar") do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-calendar') + content_tag(:span, t("calendar.calendar")), panel_calendar_back_end_cals_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('cals','calendar_categories') ) do -%> | ||||
|   <%= content_tag :li, link_to((t('calendar.calendars') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_calendar_back_end_cal_path), :class => active_for_action('cals','new') if (is_manager? rescue nil)%> | ||||
|   <%= content_tag :li, link_to(t(:tags), panel_calendar_back_end_tags_path), :class => active_for_action('/panel/calendar/back_end/tags', 'index')if (is_manager? rescue nil) %> | ||||
|   <% end -%> | ||||
| <% end %> | ||||
| <%= content_tag :li, :class => active_for_controllers('locations') do -%> | ||||
|   <%= link_to content_tag(:i, nil, :class => 'icons-location') + content_tag(:span, t(:location)), panel_location_back_end_locations_path %> | ||||
|   <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('locations') ) do -%> | ||||
|   <% end -%> | ||||
| <% end %> | ||||
| 
 | ||||
| <div class="content"> | ||||
|  |  | |||
|  | @ -20,6 +20,7 @@ | |||
| 	<% else %> | ||||
| 	 	<%= render 'layouts/side_bar' %> | ||||
| 	<% end %> | ||||
| 
 | ||||
| 	<div id="main-wrap"> | ||||
| 		<%= yield %> | ||||
| 	</div> | ||||
|  |  | |||
|  | @ -2,5 +2,5 @@ | |||
|   <%= render 'header_dialog_copyright' %> | ||||
| <% end %> | ||||
| 
 | ||||
| <p>本網站著作權屬於國立政治大學。</p> | ||||
| <p>RulingDigital 銳綸數位建置</p> | ||||
| <p><%= t('mobile.copytight') %></p> | ||||
| <p><%= t('mobile.copytight_orbit') %></p> | ||||
|  |  | |||
|  | @ -23,4 +23,5 @@ | |||
| <script type='text/javascript'> | ||||
|   var $effect = "<%= @ad_banner.ad_fx.nil? ? 'fade': @ad_banner.ad_fx %>" | ||||
|   var $timeout = "<%= @ad_banner.transition_msec %>" | ||||
|   var $info = "<%= t('mobile.location_description').html_safe %>" | ||||
| </script> | ||||
|  |  | |||
|  | @ -3,3 +3,8 @@ | |||
| <% end %> | ||||
| 
 | ||||
| <div id='map_canvas'></div> | ||||
| 
 | ||||
| <script type='text/javascript'> | ||||
|   var $map_center = "24.987449, 121.576117" | ||||
|   var $map_zoom = 17 | ||||
| </script> | ||||
|  | @ -70,3 +70,10 @@ widget_field_type: | |||
|   - tag | ||||
|   - viewcount | ||||
|   - poster | ||||
| 
 | ||||
| default_widget_style: | ||||
|   - style1 | ||||
|   - style2 | ||||
|   - style3 | ||||
|   - style4 | ||||
|   - style5 | ||||
|  | @ -4,8 +4,10 @@ en: | |||
|     bulletin: Bulletin | ||||
|     contact: Contact | ||||
|     copyright: Copyright | ||||
|     copyright_text: National Chengchi University © All RIGHTS RESERVED.  | ||||
|     copyright_orbit: Developed by RulingDigital | ||||
|     home: Home | ||||
|     language: Language | ||||
|     location: Location | ||||
|     location_description: '<h3>國立政治大學</h3>11605 臺北市文山區指南路二段64號' | ||||
|     location_description: '<h3>National Chengchi University</h3>NO.64,Sec.2,ZhiNan Rd.,Wenshan District,Taipei City 11605,Taiwan (R.O.C)' | ||||
|     page: Page | ||||
|  | @ -4,6 +4,8 @@ zh_tw: | |||
|     bulletin: 公告 | ||||
|     contact: 聯絡資訊 | ||||
|     copyright: 版權宣告 | ||||
|     copyright_text: 本網站著作權屬於國立政治大學。 | ||||
|     copyright_orbit: 銳綸數位建置 | ||||
|     home: 首頁 | ||||
|     language: 語言 | ||||
|     location: 地理位置 | ||||
|  |  | |||
|  | @ -1,7 +1,16 @@ | |||
| zh_tw: | ||||
| 
 | ||||
|   _locale: 中文 | ||||
| 
 | ||||
|   rulingcom: | ||||
|     errors: | ||||
|       init: | ||||
|         app_page_noname: 未命名前台頁面 | ||||
|         module_app_noname: 未命名模組 | ||||
|   front_page: | ||||
|     select_app_url: 模組前台樣式 | ||||
|     is_published: 是否公開 | ||||
|     menu_enable_lang: 選單啓用語系 | ||||
|     link_enable_lang: 連結生效語系 | ||||
|   access:  | ||||
|     denied:  | ||||
|       app:  | ||||
|  | @ -14,27 +23,18 @@ zh_tw: | |||
|   academic_info: 學術資訊 | ||||
|   action: 操作 | ||||
|   ad: | ||||
|     chinese_1: 在套圖中出現次數 1次請輸入1 | ||||
|     chinese_2: 輸入連結 | ||||
|     chinese_3: 輸入標題 | ||||
|     ab_fx: 轉場效果 | ||||
|     add_link: Add a reference link | ||||
|     banner_best_size: 輪播圖片尺寸 | ||||
|     best_size: 最佳尺寸 | ||||
|     best_size_example: "Ex: 500px x 300px" | ||||
|     new_image: 新增輪播圖片 | ||||
|     not_showing: 沒有顯示 | ||||
|     picture_list: 圖片列表 | ||||
|     sec_place_holder: 每張輪播圖片顯示秒數(3秒就請輸入3) | ||||
|     select_fx: Select the effect type | ||||
|     set_dates: Set the image to start and end dates | ||||
|     set_range: Set the range time | ||||
|     showing: 顯示中 | ||||
|     success_destroy_ad_image: 刪除圖片成功 | ||||
|     trans_unit_sec: 秒 | ||||
|     transition_sec: 轉場單位時間 | ||||
|     update_banner: 更新輪播 | ||||
|     upload_pictures: Upload pictures | ||||
|     widget_info_for_ad_image_size: "此區塊圖片尺寸使用: %{best_size}" | ||||
|   ad_banner: 廣告輪播 | ||||
|   add: 新增 | ||||
|  | @ -53,7 +53,6 @@ zh_tw: | |||
|   addthis_tools: | ||||
|     add_to_bookmark: 加入書籤 | ||||
|   admin: 管理員 | ||||
|   all: All | ||||
|   all_content: 所有內容 | ||||
|   all_file: 所有檔案 | ||||
|   all_member: 成員列表 | ||||
|  | @ -76,7 +75,6 @@ zh_tw: | |||
|       fail: 刪除次管理員失敗 | ||||
|       success: 刪除次管理員成功 | ||||
|     failed_no_user: 失敗,不是使用者 | ||||
|     operation_not_permitted: Operation not permitted | ||||
|   approval:  | ||||
|     not_pass: 拒絕 | ||||
|     not_pass_reason: 拒絕原因 | ||||
|  | @ -85,9 +83,7 @@ zh_tw: | |||
|     stat: 審核狀態 | ||||
|     user_list: 使用者列表 | ||||
|   approval_: 審核 | ||||
|   archive: Archive | ||||
|   asset: 資產 | ||||
|   attributes: 屬性 | ||||
|   auth: | ||||
|     add_manager: 新增管理員 | ||||
|     add_sub_manager: 新增次管理員 | ||||
|  | @ -101,8 +97,6 @@ zh_tw: | |||
|   back: 回上一步 | ||||
|   basic: 基本 | ||||
|   browse: 瀏覽 | ||||
|   built_in: Built-in | ||||
|   calendar: Calendar | ||||
|   cancel: 取消 | ||||
|   cant_delete_self: 不可以刪除自己 | ||||
|   cant_empty_star: 不能為空白 (*) | ||||
|  | @ -111,9 +105,7 @@ zh_tw: | |||
|   category: 類別 | ||||
|   category_auth: 類別授權 | ||||
|   clear: 清除 | ||||
|   close: Close | ||||
|   content: 內容 | ||||
|   courses: 開課數 | ||||
|   create: | ||||
|     error: | ||||
|       link: 建立連結時出錯 | ||||
|  | @ -121,8 +113,6 @@ zh_tw: | |||
|     fail: 建立失敗 | ||||
|     success: | ||||
|       asset_category: 資產類別已成功建立 | ||||
|       co_author: Co-author was successfully created. | ||||
|       link: Link was successfully created. | ||||
|       link: 連結已成功建立 | ||||
|       page: 頁面已成功建立 | ||||
|       user: 使用者已成功建立 | ||||
|  | @ -145,21 +135,25 @@ zh_tw: | |||
|   dashboard: | ||||
|     bulletin: 公告 | ||||
|     news_bulletin: 新聞 | ||||
|     page_context: 頁面 | ||||
|     web_link: 鏈接 | ||||
|     page_context: 頁面內容 | ||||
|     web_link: 連結 | ||||
|   dashboard_: 儀表版 | ||||
|   deadline: 最後期限 | ||||
|   default: Default | ||||
|   default_css: 預設樣式表 | ||||
|   delete: 刪除 | ||||
|   delete_file: 刪除檔案 | ||||
|   default_widget: | ||||
|     name: 預設樣式 | ||||
|     no_support_setting: 沒有可以使用的設定 | ||||
|     no_value: 不設定(全部) | ||||
|     fields_: 前台輸出欄位 | ||||
|     fields_order: 輸出欄位順序 | ||||
|     fields_style: 輸出欄位樣式 | ||||
|     select_module_app: 外掛模組選擇 | ||||
|     select_module_app: 套用模組 | ||||
|     select_widget_path: 外掛樣版選擇 | ||||
|     select_widget_style: 排版樣式 | ||||
|     widget_data_count: 模組輸出則數 | ||||
|     widget_data_count: 顯示則數 | ||||
|     select_widget_ext_option: 模組延伸選項 | ||||
|     caption: | ||||
|       typeA:  表格式排版,簡單明瞭呈現內容 | ||||
|  | @ -178,7 +172,6 @@ zh_tw: | |||
|   description: 描述 | ||||
|   desktop: 桌面 | ||||
|   disable: 關閉 | ||||
|   disabled: Disabled | ||||
|   dots: ●●●●●● | ||||
|   download: 下載 | ||||
|   downloaded: 已下載 | ||||
|  | @ -202,7 +195,6 @@ zh_tw: | |||
|     upload: 上傳檔案 | ||||
|   file_: 檔案 | ||||
|   file_type: 檔案類型 | ||||
|   followers: Followers | ||||
|   forgot_password: 忘記密碼? | ||||
|   frequency: 頻率 | ||||
|   frontend_data_count: Frontend data count | ||||
|  | @ -238,16 +230,25 @@ zh_tw: | |||
|     user: 使用者列表 | ||||
|   list_: 列表 | ||||
|   list_lower: 列表 | ||||
|   address_modal: | ||||
|     default_title: 地址 | ||||
|     street_address: 街道地址 | ||||
|     city: 城市 | ||||
|     county: 縣市 | ||||
|     zip: 郵遞區號 | ||||
|     country: 國家/地區 | ||||
|   langs: | ||||
|     zh_tw: 中文 | ||||
|     en: 英文 | ||||
|   lists: | ||||
|     markups: | ||||
|       address: 地址欄位 | ||||
|       text_field: 文字輸入框 | ||||
|       select: 下拉選單 | ||||
|       date: 日期 | ||||
|       text_area: 文字輸入方塊 | ||||
|       radio_button: 單選 | ||||
|       checkbox: 多選 | ||||
|   locale: Locale | ||||
|   location: Location | ||||
|   login: 登入 | ||||
|   logout: 登出 | ||||
|   mail: | ||||
|  | @ -265,22 +266,24 @@ zh_tw: | |||
|   markup: 輸入模式 | ||||
|   markup_options: Markup options | ||||
|   markup_value: Markup value | ||||
|   me: Me | ||||
|   me: 我 | ||||
|   member: 成員 | ||||
|   member_authorization: 成員權限 | ||||
|   member_info: 基本資料表 | ||||
|   member_registration: 註冊審核 | ||||
|   member_role: 身份欄位 | ||||
|   menu_enabled_for: 選單啟用 | ||||
|   module: Module | ||||
|   modal: | ||||
|     close: 關閉 | ||||
|     preview: 預覽 | ||||
|   module: 模組 | ||||
|   module_authorization: 模組授權 | ||||
|   more_plus: 更多+ | ||||
|   most_visited_page: 最多瀏覽頁面 | ||||
|   multilingual: 多語系 | ||||
|   name: 名稱 | ||||
|   need_home: You need a home page | ||||
|   neutral_title: Neutral title | ||||
|   neutral_for: Neutral for | ||||
|   nccu_c: | ||||
|     nccu_ldap_uid: 政治大學LDAP帳號 | ||||
|   new: | ||||
|     asset: 新增資產 | ||||
|     banner: 新增橫幅 | ||||
|  | @ -321,8 +324,6 @@ zh_tw: | |||
|   postdate: 張貼日期 | ||||
|   posted_by: 張貼人 | ||||
|   preview: 預覽 | ||||
|   profile: Profile | ||||
|   publications: Publications | ||||
|   purchase: 購買 | ||||
|   quantity: 數量 | ||||
|   quick_edit: 快速編輯 | ||||
|  | @ -345,15 +346,12 @@ zh_tw: | |||
|     sitesearch: 全站搜尋 | ||||
|     too_many: "搜尋有關 ' %{search_word} '尋找到超過 %{exceed_num} 筆資料,請嘗試加入更多關鍵字縮小搜尋範圍,以作更精確的搜尋?" | ||||
|     unit_get: "列出由 :%{unit_name}發佈的資料,共有%{item_num}筆" | ||||
|   search_: Search | ||||
|   search_google: 搜尋Google | ||||
|   search_nccu: 搜尋政治大學 | ||||
|   setup_member: 會員設定 | ||||
|   show: 顯示 | ||||
|   show_mode: | ||||
|     index: 清單 | ||||
|     summary: 摘要 | ||||
|     thumbnail: 縮圖 | ||||
|   site: | ||||
|     default_image: 預設圖像 | ||||
|     description: 網站描述 | ||||
|     description_help: '' | ||||
|     footer: 網站頁尾 | ||||
|  | @ -374,7 +372,6 @@ zh_tw: | |||
|   site_info: 網站資訊 | ||||
|   sitemap: 網站地圖 | ||||
|   site_name: 網站名稱 | ||||
|   size: Size | ||||
|   start: 開始 | ||||
|   start_date: 開始日期 | ||||
|   statistics: 統計資訊 | ||||
|  | @ -394,14 +391,13 @@ zh_tw: | |||
|     module_page_lang_not_support: "很抱歉,此頁面沒有開放中文版本" | ||||
|     not_previewable: "不支援預覽" | ||||
|     preview_only_for_img: "預覽僅支援:jpg,png,gif,bmp等圖片格式" | ||||
|   sys_basic_form: 系統基本資料表 | ||||
|   system_info: 系統資訊 | ||||
|   tag_cloud: 標籤雲 | ||||
|   tags: 標籤 | ||||
|   template: 樣版 | ||||
|   template_name: 樣版名稱 | ||||
|   text: 內文 | ||||
|   theme: 主題 | ||||
|   theme: 套用頁面樣式 | ||||
|   themes: 主題 | ||||
|   title: 標題 | ||||
|   to_search: 加入搜尋條件 | ||||
|  | @ -410,17 +406,17 @@ zh_tw: | |||
|   traffic: 流量 | ||||
|   type: 欄位類型 | ||||
|   unit_name: 單位名稱 | ||||
|   unzip_success: "App unzip procress is finished, please restart the server to apply effect" | ||||
|   up_to_date: 最新版本 | ||||
|   update: | ||||
|     error: | ||||
|       link: 更新連接時出錯 | ||||
|     fail: 更新消息 | ||||
|     success: | ||||
|       co_author: Co-author was successfully updated. | ||||
|       content: 內容已更新成功 | ||||
|       link: 連結已更新成功 | ||||
|       page: 頁面已更新成功 | ||||
|       user: 使用者已更新成功 | ||||
|     # success_: 更新成功 | ||||
|       paper: Paper was successfully updated. | ||||
|       user: User was successfully updated. | ||||
|     success_: S使用者已更新成功 | ||||
|  | @ -439,3 +435,571 @@ zh_tw: | |||
|   visitors_today: 今日造訪人次 | ||||
|   yes_: "是" | ||||
| 
 | ||||
| 
 | ||||
|   nccu: | ||||
|     date: 起迄日期 | ||||
|     file: 附加檔案 | ||||
|     file_description: 檔案描述 | ||||
|     file_name: 檔案名稱 | ||||
|     link_name: 連結名稱 | ||||
|     picture: 刊頭圖片 | ||||
|     selected_file: 選擇檔案 | ||||
|     tags: 頁籤 | ||||
|     url: 連結位置 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # : <<<<<<< HEAD | ||||
| # : ======= | ||||
|   errors: | ||||
|     at_least_one: 必須至少有一個值 | ||||
|   admin: | ||||
|     infos: | ||||
|       add_attribute_field: 新增 | ||||
|       save: 儲存 | ||||
|       initial: 起始值 | ||||
|       markup: 輸入模式 | ||||
|       item_name: 資料表名稱 | ||||
|       name: 名稱 | ||||
|       options: 選項 | ||||
|       :cross_lang: 跨語言輸入 | ||||
|       add_more: 使用者可自行延伸欄位 | ||||
|       add: 新增 | ||||
|       placeholder: 輸入協助 | ||||
|       type: 類型 | ||||
|       placeholder: 提示內容 | ||||
|       list: 自定選單 | ||||
|       is_range: 是 | ||||
|       not_range: 否 | ||||
|       date: | ||||
|         claendar: 紀年法 | ||||
|         range: 本欄為時間區段 | ||||
|         format: 格式 | ||||
|         tw_claendar: 民國 | ||||
|         minguo_calendar:  | ||||
|           after: 民國 | ||||
|           before: 民前 | ||||
|           first_year: 民國元年 | ||||
|           year: 年 | ||||
|           month: 月 | ||||
|         west_claendar: 西元 | ||||
|     access: | ||||
|       denied: | ||||
|         app: | ||||
|           not_sub_manager: 拒絕存取因你不是此應用程式次管理員 | ||||
|           not_manager: 拒絕存取因你不是此應用程式管理員 | ||||
|           not_authed_user: 拒絕存取因你不是此應用程式授權使用者 | ||||
|         not_admin: 拒絕存取因你不是此應用程式次管理員 | ||||
|         object: 拒絕存取因你不是網站管理者 | ||||
|     action: 操作 | ||||
|     ad_banner: 廣告輪播 | ||||
|     orbit_gallery: 活動花絮 | ||||
|     ad: | ||||
|       sec_place_holder: 3秒請輸入3 | ||||
|       ab_fx: 轉場特效 | ||||
|       all_banners: 輪播清單 | ||||
|       banner_best_size: Banner 尺寸 | ||||
|       best_size: 最佳尺寸 | ||||
|       cate_auth: 分類授權 | ||||
|       delete_banner: 刪除整組輪播 | ||||
|       new_banner: 新增輪播 | ||||
|       new_image: 新增橫幅 | ||||
|       showing: 顯示中 | ||||
|       not_showing: 沒有顯示 | ||||
|       picture_list: 圖片列表 | ||||
|       title: 標題 | ||||
|       transition_sec: 轉場單位時間 | ||||
|       trans_unit_sec: 秒 | ||||
|       update_banner: 更新輪播 | ||||
|       widget_info_for_ad_image_size: "此區塊圖片尺寸請使用 %{best_size}" | ||||
|     add: 新增 | ||||
|     add_item: 新增項目 | ||||
|     add_language: 新增語言 | ||||
|     add_drop_down_item: +增加Orbit選單 | ||||
|     admin: 網站管理者 | ||||
|     all_articles: 列表 | ||||
|     always_display_title: 永遠顯示於標題列 | ||||
|     announcement: 公告管理 | ||||
|     asset: 資產 | ||||
|     assets: | ||||
|         file: 檔案 | ||||
|         album: 相簿 | ||||
|         video: 影片 | ||||
|         book: 書籍 | ||||
|     attributes: 屬性 | ||||
|     author: 作者 | ||||
|     calendar: 行事曆 | ||||
|     cant_delete_self: 您不可以刪除自己。 | ||||
|     cant_revoke_self_admin: 您不可以撤銷自己的管理身份。 | ||||
|     category: 類別 | ||||
|     choose_file: 請選擇一個文件... | ||||
|     class: 階級 | ||||
|     content: 內容 | ||||
|     contenteditable: | ||||
|       update_done: 更新完成 | ||||
|       update_failed: 更新失敗 | ||||
|     create_error_link: 新增連接時出錯。 | ||||
|     create_error_page: 新增頁面時出錯。 | ||||
|     create_success_home: 首頁已成功新增。 | ||||
|     create_success_layout: 樣板已成功新增。 | ||||
|     create_success_link: 連結已成功新增。 | ||||
|     create_success_page: 頁面已成功新增。 | ||||
|     create_success_home: 首頁已成功新增。 | ||||
|     create_success_layout: 佈局已成功新增。 | ||||
|     create_success_link: 連結已成功新增。 | ||||
|     create_success_page: 頁面已成功新增。 | ||||
|     create_success_snippet: 片段已成功新增。 | ||||
|     create_success_user: 用戶已成功新增。。 | ||||
|     dashboard: 儀表板 | ||||
|     data: 選擇檔案 | ||||
|     delete_language: 刪除語言 | ||||
|     description: 描述 | ||||
|     design:  版型管理 | ||||
|     disable_language: 禁用語言 | ||||
|     edit: 編輯 | ||||
|     editing_home: 編輯首頁 | ||||
|     editing_layout: 編輯樣板 | ||||
|     editing_link: 編輯連結 | ||||
|     editing_page: 編輯頁面 | ||||
|     editing_snippet: 編輯片段 | ||||
|     editing_info: 編輯用戶資料 | ||||
|     editing_role: 編輯用戶身份 | ||||
|     email: Email | ||||
|     enable_language: 啟用語言 | ||||
|     enabled_for: 啟用 | ||||
|     file_name: 檔名 | ||||
|     file_size: 檔案大小 | ||||
|     file_upload: 文件上載 | ||||
|     format: 格式 | ||||
|     home: 首頁 | ||||
|     id: ID | ||||
|     info: 資料 | ||||
|     intro: 簡介 | ||||
|     is_published: 被出版 | ||||
|     item: 網站架構 | ||||
|     key: 關鍵 | ||||
|     keywords: 關鍵字 | ||||
|     language: 語言 | ||||
|     layout: 佈局 | ||||
|     layout_name: 佈局名字 | ||||
|     link: 連結管理 | ||||
|     links: 網路資源 | ||||
|     list_assets: 資產列表 | ||||
|     list_designs: 設計列表 | ||||
|     list_items: 項目列表 | ||||
|     list_puchases: 購買清單 | ||||
|     list_snippets: 斷片列表 | ||||
|     list_users: 使用列表 | ||||
|     list_infos: 用戶資料列表 | ||||
|     list_roles: 用戶身份列表 | ||||
|     mail_address: 郵件地址 | ||||
|     mail_port: 傳輸埠 | ||||
|     mail_domain: 網域名稱 | ||||
|     mail_authentication: 認證 | ||||
|     mail_user_name: 帳號 | ||||
|     mail_password: 密碼 | ||||
|     mail_tls: TLS | ||||
|     mail_enable_starttls_auto: Enable Start TLS Auto | ||||
|     member: 會員 | ||||
|     menu_enabled_for: 選單啟用 | ||||
|     module: | ||||
|       authorization: 模組授權 | ||||
|     move_down: 往下移 | ||||
|     move_up: 往上移 | ||||
|     multilingual: 多種語言 | ||||
|     my_avatar: 我的頭像 | ||||
|     no_home_page: 您沒有首頁 | ||||
|     no_layout: 您沒有佈局 | ||||
|     name: 名稱 | ||||
|     new_admin: | ||||
|       side_bar:  | ||||
|         all_user: 所有使用者 | ||||
|         add_user: 新增使用者 | ||||
|         user_roles: 角色 | ||||
|         user_info: 使用者資訊 | ||||
|       user: 會員 | ||||
|       users: | ||||
|         all_plugin_summary: 全部 | ||||
|         profile: 基本資料 | ||||
|         roles: | ||||
|           staff: 職員資料 | ||||
|           student: 學生資料 | ||||
|           teacher: 教師資料 | ||||
|       action: | ||||
|         add: 新增 | ||||
|         edit: 編輯 | ||||
|         delete: 刪除 | ||||
|         quick_edit: 快速編輯 | ||||
|         next: 下一頁 | ||||
|         prev: 上一頁 | ||||
|       attributes: | ||||
|         roles: 角色 | ||||
|         name: 名稱 | ||||
|         publications: 出版數 | ||||
|         courses: 開課數 | ||||
|         followers: 被關注數 | ||||
|       show_mode: | ||||
|         index: 清單 | ||||
|         summary: 摘要 | ||||
|         thumbnail: 縮圖 | ||||
|       table_header: | ||||
|         status: 狀態 | ||||
|         category: 分類 | ||||
|         tags: 標籤 | ||||
|         clear_filter: 重置 | ||||
|     new_asset: 新增資產 | ||||
|     new_component: 新增元件 | ||||
|     new_design: 新設計 | ||||
|     new_home: 新增首頁 | ||||
|     new_layout: 新增樣板 | ||||
|     new_link: 新增連結 | ||||
|     new_page: 新增頁面 | ||||
|     new_snippet: 新增片段 | ||||
|     new_user: 新增使用 | ||||
|     new_info: 新增用戶資料 | ||||
|     new_role: 新增用戶身份 | ||||
|     news: 新聞 | ||||
|     non_multilingual:  | ||||
|     object_auth: | ||||
|       list_title_of_users: 授權清單-%{auth_title} | ||||
|       update_done: 更新完成,結果顯示於清單 | ||||
|       update_failed: 更新失敗 | ||||
|     options: 選項 | ||||
|     orig_upload_file: 原上傳檔名 | ||||
|     page: 頁面管理 | ||||
|     page_context: | ||||
|       edit: 編輯 | ||||
|       ob_auth: | ||||
|         edit: 分類授權 | ||||
|     page_part_kinds: | ||||
|       text: 文字區塊 | ||||
|       public_r_tag: 系統模塊 | ||||
|       module_widget: 外掛模塊 | ||||
|     position: 位置 | ||||
|     published?: 發布? | ||||
|     purchase: 購買 | ||||
|     role: 身份 | ||||
|     roles: 身份 | ||||
|     site_description: 網站描述 | ||||
|     site_footer: 網站頁尾 | ||||
|     site_settings: 基本設定 | ||||
|     site_sub_menu: 網站次選單 | ||||
|     site_title: 網站標題 | ||||
|     setup_member: 成員設置 | ||||
|     setup_translations: 語系設定 | ||||
|     setup_designs: 版型設定 | ||||
|     site: 網站 | ||||
|     site_setting: 網站設定 | ||||
|     super_pages: 可編頁面 | ||||
|     structure: 網站結構 | ||||
|     tags: 標籤 | ||||
|     title: 標題 | ||||
|     translation: 翻譯 | ||||
|     type: 類型 | ||||
|     up_to_date: 最新版本 | ||||
|     update_error_link: 更新鏈接時出現錯誤。 | ||||
|     update_error_page: 更新頁面時出現錯誤。 | ||||
|     update_success_content: 內容已成功更新。 | ||||
|     update_success_home: 首頁已成功更新。 | ||||
|     update_success_layout: 樣板已成功更新。 | ||||
|     update_success_link: 連結已成功更新。 | ||||
|     update_success_page: 頁面已成功更新。 | ||||
|     update_success_snippet: 片段已成功更新。 | ||||
|     update_success_user: 用戶已成功更新 | ||||
|     upload_design: 上傳設計 | ||||
|     url: URL | ||||
|     user: 用戶 | ||||
|     user_new_interface:  | ||||
|       sys_basic_form: 系統基本資料表 | ||||
|       password: 密碼 | ||||
|       password_confirmation: 確認密碼 | ||||
|       email: 使用者帳號信箱 | ||||
|     user_role: | ||||
|       auth: | ||||
|         all_member: 所有會員 | ||||
|         manager: 管理員 | ||||
|         sub_manager: 次管理員 | ||||
|         by_role: 根據身份 | ||||
|         by_sub_role: 根據次身份 | ||||
|         block_list: 封鎖名單 | ||||
|         add_manager: 增加到管理員 | ||||
|         add_sub_manager: 增加到次管理員 | ||||
|         add_to_block_list: 封鎖名單 | ||||
|         add_to_privilege_list: 特許名單 | ||||
|         auth_by: -由%{user_display_name}授權 | ||||
|         user: 使用會員 | ||||
|     info: 用戶資料 | ||||
|     panel: 用戶面板 | ||||
|     role: 用戶身份 | ||||
|      | ||||
|   dashboard: | ||||
|     bulletin: 公告 | ||||
|     news_bulletin: 新聞 | ||||
|     page_context: 頁面 | ||||
|     web_link: 鏈接 | ||||
|    | ||||
|   panel: | ||||
|      | ||||
|      | ||||
|      | ||||
| # : >>>>>>> various_bugs | ||||
| # Chinese (Taiwan) translations for Ruby on Rails | ||||
| # by tsechingho (http://github.com/tsechingho) | ||||
|   date: | ||||
|     formats: | ||||
|       default: "%Y-%m-%d" | ||||
|       short: "%b%d日" | ||||
|       long: "%Y年%b%d日" | ||||
|     day_names: [星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六] | ||||
|     abbr_day_names: [日, 一, 二, 三, 四, 五, 六] | ||||
|     month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月] | ||||
|     abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] | ||||
|     order: [ :year, :month, :day ] | ||||
| 
 | ||||
|   time: | ||||
|     formats: | ||||
|       default: "%Y年%b%d日 %A %H:%M:%S %Z" | ||||
|       short: "%b%d日 %H:%M" | ||||
|       long: "%Y年%b%d日 %H:%M" | ||||
|     am: "上午" | ||||
|     pm: "下午" | ||||
| 
 | ||||
|   datetime: | ||||
|     distance_in_words: | ||||
|       half_a_minute: "半分鐘" | ||||
|       less_than_x_seconds: | ||||
|         one: "不到一秒" | ||||
|         other: "不到 %{count} 秒" | ||||
|       x_seconds: | ||||
|         one: "一秒" | ||||
|         other: "%{count} 秒" | ||||
|       less_than_x_minutes: | ||||
|         one: "不到一分鐘" | ||||
|         other: "不到 %{count} 分鐘" | ||||
|       x_minutes: | ||||
|         one: "一分鐘" | ||||
|         other: "%{count} 分鐘" | ||||
|       about_x_hours: | ||||
|         one: "大約一小時" | ||||
|         other: "大約 %{count} 小時" | ||||
|       x_days: | ||||
|         one: "一天" | ||||
|         other: "%{count} 天" | ||||
|       about_x_months: | ||||
|         one: "大約一個月" | ||||
|         other: "大約 %{count} 個月" | ||||
|       x_months: | ||||
|         one: "一個月" | ||||
|         other: "%{count} 個月" | ||||
|       about_x_years: | ||||
|         one: "大約一年" | ||||
|         other: "大約 %{count} 年" | ||||
|       over_x_years: | ||||
|         one: "一年多" | ||||
|         other: "%{count} 年多" | ||||
|       almost_x_years: | ||||
|         one:   "接近一年" | ||||
|         other: "接近 %{count} 年" | ||||
|     prompts: | ||||
|       year:   "年" | ||||
|       month:  "月" | ||||
|       day:    "日" | ||||
|       hour:   "時" | ||||
|       minute: "分" | ||||
|       second: "秒" | ||||
| 
 | ||||
|   number: | ||||
|     format: | ||||
|       separator: "." | ||||
|       delimiter: "," | ||||
|       precision: 3 | ||||
|       significant: false | ||||
|       strip_insignificant_zeros: false | ||||
|     currency: | ||||
|       format: | ||||
|         format: "%u %n" | ||||
|         unit: "NT$" | ||||
|         separator: "." | ||||
|         delimiter: "," | ||||
|         precision: 2 | ||||
|         significant: false | ||||
|         strip_insignificant_zeros: false | ||||
|     percentage: | ||||
|       format: | ||||
|         delimiter: "" | ||||
|     precision: | ||||
|       format: | ||||
|         delimiter: "" | ||||
|     human: | ||||
|       format: | ||||
|         delimiter: "" | ||||
|         precision: 1 | ||||
|         significant: false | ||||
|         strip_insignificant_zeros: false | ||||
|       storage_units: | ||||
|         format: "%n %u" | ||||
|         units: | ||||
|           byte: | ||||
|             one: "Byte" | ||||
|             other: "Bytes" | ||||
|           kb: "KB" | ||||
|           mb: "MB" | ||||
|           gb: "GB" | ||||
|           tb: "TB" | ||||
|       decimal_units: | ||||
|         format: "%n %u" | ||||
|         units: | ||||
|           # 10^-21 zepto, 10^-24 yocto | ||||
|           atto: "渺"  # 10^-18 | ||||
|           femto: "飛" # 10^-15 毫微微 | ||||
|           pico: "漠"  # 10^-12 微微 | ||||
|           nano: "奈"  # 10^-9 毫微 | ||||
|           micro: "微" # 10^-6 | ||||
|           mili: "毫"  # 10^-3 milli | ||||
|           centi: "厘" # 10^-2 | ||||
|           deci: "分"  # 10^-1 | ||||
|           unit: "" | ||||
|           ten: | ||||
|             one: "十" | ||||
|             other: "十"  # 10^1 | ||||
|           hundred: "百"  # 10^2 | ||||
|           thousand: "千" # 10^3 kilo | ||||
|           million: "百萬" # 10^6 mega | ||||
|           billion: "十億" # 10^9 giga | ||||
|           trillion: "兆" # 10^12 tera | ||||
|           quadrillion: "千兆" # 10^15 peta | ||||
|           # 10^18 exa, 10^21 zetta, 10^24 yotta | ||||
| 
 | ||||
|   support: | ||||
|     array: | ||||
|       words_connector: ", " | ||||
|       two_words_connector: " 和 " | ||||
|       last_word_connector: ", 和 " | ||||
|     select: | ||||
|       prompt: "請選擇" | ||||
| 
 | ||||
|   search: | ||||
|     not_found: "沒有搜尋結果" | ||||
|     domains: Google Search Domains | ||||
|     site_search: "全站搜尋" | ||||
|     sitesearch: Google Site Search | ||||
|     site_setting_help: 請輸入送交Google搜尋的參數 | ||||
|     result_get: "搜尋有關 ' %{search_word} ' 共搜尋到%{item_num}筆資料" | ||||
|     too_many: "搜尋有關 ' %{search_word} ' 尋找到超過 %{exceed_num} 筆資料,請嘗試加入更多關鍵字縮小搜尋範圍,以作更精確的搜尋" | ||||
| 
 | ||||
|     result_get: "搜尋標題有關 ' %{search_word} ' 共搜尋到%{item_num}筆資料" | ||||
|     unit_get: "列出由:%{unit_name}發佈的資料,共有%{item_num}筆" | ||||
|   activerecord: | ||||
|     errors: | ||||
|       template: # ~ 2.3.5 backward compatible | ||||
|         header: | ||||
|           one: "有 1 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|           other: "有 %{count} 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|         body: "以下欄位發生問題:" | ||||
|       full_messages: | ||||
|         format: "%{attribute} %{message}" | ||||
|       messages: | ||||
|         inclusion: "沒有包含在列表中" | ||||
|         exclusion: "是被保留的關鍵字" | ||||
|         invalid: "是無效的" | ||||
|         confirmation: "不符合確認值" | ||||
|         accepted: "必須是可被接受的" | ||||
|         empty: "不能留空" | ||||
|         blank: "不能是空白字元" | ||||
|         too_long: "過長(最長是 %{count} 個字)" | ||||
|         too_short: "過短(最短是 %{count} 個字)" | ||||
|         wrong_length: "字數錯誤(必須是 %{count} 個字)" | ||||
|         not_a_number: "不是數字" | ||||
|         not_an_integer: "必須是整數" | ||||
|         greater_than: "必須大於 %{count}" | ||||
|         greater_than_or_equal_to: "必須大於或等於 %{count}" | ||||
|         equal_to: "必須等於 %{count}" | ||||
|         less_than: "必須小於 %{count}" | ||||
|         less_than_or_equal_to: "必須小於或等於 %{count}" | ||||
|         odd: "必須是奇數" | ||||
|         even: "必須是偶數" | ||||
|         taken: "已經被使用" | ||||
|         record_invalid: "校驗失敗: %{errors}" | ||||
| 
 | ||||
|   activemodel: | ||||
|     errors: | ||||
|       template: | ||||
|         header: | ||||
|           one: "有 1 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|           other: "有 %{count} 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|         body: "以下欄位發生問題:" | ||||
| 
 | ||||
|   errors: | ||||
|     format: "%{attribute} %{message}" | ||||
|     messages: | ||||
|       inclusion: "沒有包含在列表中" | ||||
|       exclusion: "是被保留的關鍵字" | ||||
|       invalid: "是無效的" | ||||
|       confirmation: "不符合確認值" | ||||
|       accepted: "必須是可被接受的" | ||||
|       empty: "不能留空" | ||||
|       blank: "不能是空白字元" | ||||
|       too_long: "過長(最長是 %{count} 個字)" | ||||
|       too_short: "過短(最短是 %{count} 個字)" | ||||
|       wrong_length: "字數錯誤(必須是 %{count} 個字)" | ||||
|       not_a_number: "不是數字" | ||||
|       not_an_integer: "必須是整數" | ||||
|       greater_than: "必須大於 %{count}" | ||||
|       greater_than_or_equal_to: "必須大於或等於 %{count}" | ||||
|       equal_to: "必須等於 %{count}" | ||||
|       less_than: "必須小於 %{count}" | ||||
|       less_than_or_equal_to: "必須小於或等於 %{count}" | ||||
|       odd: "必須是奇數" | ||||
|       even: "必須是偶數" | ||||
|     template: | ||||
|         header: | ||||
|           one: "有 1 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|           other: "有 %{count} 個錯誤發生使得「%{model}」無法被儲存。" | ||||
|         body: "以下欄位發生問題:" | ||||
|   widget: | ||||
|     default_widget: 系統預設Widget | ||||
|     _default_widget: | ||||
|       typeA: 表格列表 | ||||
|       typeB_style2: 單行列佐圖(同邊) | ||||
|       typeB_style3: 多行列佐圖(同邊) | ||||
|       typeB_style4: 多行列佐圖(異邊) | ||||
|       typeC:  單行列佐單圖(同邊) | ||||
|   mongoid: | ||||
|     models: | ||||
|       news_bulletin: 新聞 | ||||
|       bulletin: 公告 | ||||
|       ad_banner: 廣告輪播 | ||||
|       web_link: 連結管理 | ||||
|     attributes: | ||||
|       news_bulletin: | ||||
|         title: 新聞標題 | ||||
|       bulletin: | ||||
|         title: 公告標題 | ||||
|       ad_banner: | ||||
|         title: 標題 | ||||
|       web_link: | ||||
|         title: 名稱 | ||||
|         url: 路徑 | ||||
|   helpers: | ||||
|     select: | ||||
|       prompt: "請選擇" | ||||
|     submit: | ||||
|       create: "新增%{model}" | ||||
|       update: "更新%{model}" | ||||
|       submit: "儲存%{model}" | ||||
|   modal: | ||||
|     save_and_close: "儲存並關閉" | ||||
|     close: "關閉" | ||||
|     preview: "預覽" | ||||
|   sys: | ||||
|     not_previewable: "不支援預覽" | ||||
|     limit_of_upload_file_size: "上傳檔案大小限制: %{best_size}" | ||||
|     preview_only_for_img: "預覽僅支援:jpg,png,gif,bmp...等圖片格式" | ||||
|     can_not_display_due_to_no_context: "因為沒有中文版本,所以無法顯示" | ||||
|     module_page_lang_not_support: "很抱歉,本頁沒有開放中文版本" | ||||
|   object_disable: | ||||
|     change_to_true: "設為停用" | ||||
|     change_to_false: "重新啓用" | ||||
|  |  | |||
|  | @ -1,4 +1,6 @@ | |||
| Orbit::Application.routes.draw do | ||||
|   # get "robots.txt" => 'robots#index' | ||||
| 
 | ||||
|   devise_for :users do | ||||
|     match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put | ||||
|   end | ||||
|  | @ -79,9 +81,15 @@ Orbit::Application.routes.draw do | |||
|     end | ||||
| 
 | ||||
|     resources :pages do | ||||
|       collection do | ||||
|         get 'reload_after_module_changed', :action=>'reload_frontend_pages' | ||||
|         get 'reload_after_list_changed',:action=> 'reload_front_end_setting' | ||||
|       end | ||||
|       member do | ||||
|         get 'delete' | ||||
|         get 'reload_themes' | ||||
|         get 'reload_after_module_changed',:action=>'reload_frontend_pages' | ||||
|         get 'reload_after_list_changed',:action=> 'reload_front_end_setting' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  | @ -101,14 +109,13 @@ Orbit::Application.routes.draw do | |||
| 
 | ||||
|         match 'remove_manager/:app_manager_id' ,:action=> 'remove_manager',:via => "delete",:as =>:remove_manager | ||||
|         match 'remove_sub_manager/:app_sub_manager_id' ,:action=> 'remove_sub_manager',:via => "delete",:as =>:remove_sub_manager | ||||
|         get 'reload_frontend_pages' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     resources :page_parts do | ||||
|       member do | ||||
|         get 'reload_widgets' | ||||
|         get 'reload_widget_styles' | ||||
|         get 'reload_after_module_changed',:action=>'reload_widgets' | ||||
|         get 'reload_after_list_changed',:action=> 'reload_widget_styles' | ||||
|         get 'reload_r_tag_options' | ||||
|       end | ||||
|     end | ||||
|  | @ -201,9 +208,9 @@ Orbit::Application.routes.draw do | |||
|   match 'desktop_publications/books_list'=>'desktop_publications#books_list' | ||||
|   match 'desktop_publications/books_add'=>'desktop_publications#books_add' | ||||
| 
 | ||||
|   match 'desktop_publications/seminar_p' => 'desktop_publications#seminar_p' | ||||
|   match 'desktop_publications/seminar_p_list/'=>'desktop_publications#seminar_p_list' | ||||
|   match 'desktop_publications/seminar_p_add/'=>'desktop_publications#seminar_p_add' | ||||
|   match 'desktop_publications/conference_p' => 'desktop_publications#conference_p' | ||||
|   match 'desktop_publications/conference_p_list/'=>'desktop_publications#conference_p_list' | ||||
|   match 'desktop_publications/conference_p_add/'=>'desktop_publications#conference_p_add' | ||||
|   # end | ||||
| 
 | ||||
|   # namespace :desktop_research do | ||||
|  |  | |||
|  | @ -1,6 +1,11 @@ | |||
| require 'factory_girl' | ||||
| require 'faker' | ||||
| 
 | ||||
| FactoryGirl.definition_file_paths = Dir["#{Rails.root}/vendor/built_in_modules/*/spec/factories"] | ||||
| 
 | ||||
| FactoryGirl.find_definitions | ||||
| 
 | ||||
| 
 | ||||
| CoAuthorRelation.destroy_all | ||||
| CoAuthor.destroy_all | ||||
| JournalLevelType.destroy_all | ||||
|  | @ -8,7 +13,8 @@ WritingJournalFile.destroy_all | |||
| WritingJournal.destroy_all | ||||
| #Dir[Rails.root.join("spec/factories/*.rb")].each {|f| require f} | ||||
| 
 | ||||
| 10.times do | ||||
| 
 | ||||
| 10.size.times do | ||||
|   FactoryGirl.create(:journal_level) | ||||
| end | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ | |||
| 			<li class="d_cate"><a href="" class="widget_fn wh3 hh3" id='d_publication' onclick="return false;"><span class="widget_icon"><img src="" alt="Publication" id="publication_icon" width="30" height="30"/></span></a> | ||||
| 				<ul class="dock_child hh3 thmc4" style="width: 180px;"> | ||||
| 					<li class="dock_item"><a href="journal_p" class="widget_fn wh3 hh3" id='d_journal_p' onclick="return false;"><span class="widget_icon"><img src="" alt="Journal Papers" id="journal_p_icon" width="30" height="30"/></span></a></li> | ||||
| 					<li class="dock_item"><a href="seminar_p" class="widget_fn wh3 hh3" id='d_seminar_p' onclick="return false;"><span class="widget_icon"><img src="" alt="Seminar Papers" id="seminar_p_icon" width="30" height="30"/></span></a></li> | ||||
| 					<li class="dock_item"><a href="conference_p" class="widget_fn wh3 hh3" id='d_conference_p' onclick="return false;"><span class="widget_icon"><img src="" alt="Conference Papers" id="conference_p_icon" width="30" height="30"/></span></a></li> | ||||
| 					<li class="dock_item"><a href="books" class="widget_fn wh3 hh3" id='d_books' onclick="return false;"><span class="widget_icon"><img src="" alt="Books" id="books_icon" width="30" height="30"/></span></a></li> | ||||
| 				</ul> | ||||
| 			</li> | ||||
|  |  | |||
|  | @ -1,6 +1,11 @@ | |||
| require  "orbit_app/summary" | ||||
| require  "orbit_app/dsl" | ||||
| require  "orbit_app/module/backend_side_bar" | ||||
| require  "orbit_app/helper/renderer" | ||||
| require  "orbit_app/helper/side_bar_renderer" | ||||
| require  "orbit_app/helper/context_link_renderer" | ||||
| require  "orbit_app/module/side_bar" | ||||
| require  "orbit_app/module/widget" | ||||
| require  "orbit_app/module/front_end" | ||||
| require  "orbit_app/plugin/summary" | ||||
| require  "orbit_app/plugin/registration" | ||||
| require  "orbit_app/module/summary" | ||||
|  |  | |||
|  | @ -0,0 +1,33 @@ | |||
| module ContextLinkRenderer | ||||
|   include Renderer | ||||
| 
 | ||||
|   def render(request,params,current_module_app,current_user,belong_module_app) | ||||
|     @current_module_app = current_module_app | ||||
|     @belong_module_app = belong_module_app | ||||
|     @request = request | ||||
|     @params = params | ||||
|     @current_user = current_user | ||||
|     if display? | ||||
|       content_tag :li, link_to((I18n.t(@label_i18n) + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, eval(@path)), :class => (active?  ? 'active' : nil)  | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| protected | ||||
|   def display? | ||||
|     @available_for.each do |available_for_in_sym|  | ||||
|       result = case available_for_in_sym | ||||
|       when :all | ||||
|         true | ||||
|       when :manager | ||||
|         @belong_module_app.is_manager? @current_user | ||||
|       when :sub_manager | ||||
|         @belong_module_app.is_sub_manager? @current_user | ||||
|       else | ||||
|         (eval(available_for_in_sym).include? @current_user rescue false) | ||||
|       end # of case  | ||||
|       return true if result || (@current_user.admin? rescue false) | ||||
|     end # of collect | ||||
|     false | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  | @ -0,0 +1,68 @@ | |||
| module Renderer | ||||
|   include Rails.application.routes.url_helpers | ||||
|   include ActionView::Helpers::UrlHelper | ||||
|   include ActionView::Helpers::TagHelper | ||||
|   include ActionView::Helpers::RenderingHelper | ||||
|   include ActionView::Context | ||||
|   include OrbitBasis::RenderAnywhere | ||||
| 
 | ||||
| protected | ||||
|   def active_for_app_auth? | ||||
|     module_app = get_module_app | ||||
|     if module_app.nil? | ||||
|       false | ||||
|     else | ||||
|       module_app.id.to_s == @params[:module_app_id] ? true : false   | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def active_for_ob_auths? | ||||
| 
 | ||||
|     if @params.has_key? :object_auth_id | ||||
|       oa = ObjectAuth.find @params[:object_auth_id] | ||||
|       check_controller = @params[:controller] == 'admin/object_auths_new_interface'  | ||||
|       check_object_class = @active_for_object_auth.include? oa.obj_authable_type | ||||
|       return (check_controller and check_object_class) | ||||
|     else | ||||
|       return false | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def current_user | ||||
|     current_or_guest_user | ||||
|   end | ||||
| 
 | ||||
|   def current_or_guest_user | ||||
|     @current_user | ||||
|   end | ||||
| 
 | ||||
|   def request | ||||
|     @request | ||||
|   end | ||||
| 
 | ||||
|   def default_url_options | ||||
|     _routes.default_url_options | ||||
|   end | ||||
| 
 | ||||
|   def _routes | ||||
|     @request.env["action_dispatch.routes"] | ||||
|   end | ||||
| 
 | ||||
|   def controller | ||||
|     @params[:controller] | ||||
|   end | ||||
| 
 | ||||
|   def action | ||||
|     @params[:action] | ||||
|   end | ||||
| 
 | ||||
|   def check_user_available_for | ||||
| 
 | ||||
|   end | ||||
| 
 | ||||
|   protected | ||||
|   def display? | ||||
|     true | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  | @ -0,0 +1,45 @@ | |||
| module SideBarRenderer | ||||
|   include Renderer | ||||
|   include AdminHelper | ||||
| 
 | ||||
|   def render(request,params,user,current_module_app) | ||||
|     @belong_module_app = get_module_app | ||||
|     @current_module_app = current_module_app | ||||
|     @request = request | ||||
|     @params = params | ||||
|     @current_user = user | ||||
|     if display? | ||||
|        content_tag :li, :class => (module_sidebar_active? ? 'active' : nil) do  | ||||
|         buf =  link_to( content_tag(:i, nil, :class => @icon_class ) + content_tag(:span, I18n.t( @head_label )), eval(@head_link)) | ||||
|         buf  << content_tag( :ul, :class => ("nav nav-list active") )do # visible_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals')||active_for_ob_auths_object("BulletinCategory"))  | ||||
|           @context_links.sort_by! {| obj | obj.priority}.collect do |link| | ||||
|             link.render(request,params,@current_module_app,@current_user,@belong_module_app) | ||||
|           end.join.html_safe | ||||
|         end  | ||||
|       end  | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   protected | ||||
| 
 | ||||
|   def display? #控制sidebar 要不要算圖 | ||||
|     if is_manager? || is_admin?  #如果是系統管理員 或 是模組管理員 | ||||
|       true | ||||
|     elsif (@current_module_app.open rescue true) # 如果app 被設定成 開放 | ||||
|       true | ||||
|      elsif is_member? #如果app 是封閉  那至少需要是 member | ||||
|       true | ||||
|     else  | ||||
|       false | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def module_sidebar_active? | ||||
|     active_for_controller? or active_for_app_auth? or active_for_ob_auths? | ||||
|   end | ||||
| 
 | ||||
|   def active_for_controller? | ||||
|     @active_for_controllers.include? controller | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  | @ -1,17 +0,0 @@ | |||
| module OrbitApp | ||||
|     module Module | ||||
|       class BackendSideBar | ||||
|         attr_reader :name | ||||
| 
 | ||||
|         def initialize(name, &block) | ||||
|           @name = name | ||||
|           block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|         end | ||||
| 
 | ||||
|         # def personal_plugin(*args) | ||||
|         #   binding.pry | ||||
|         # end     | ||||
|          | ||||
|       end | ||||
|   end | ||||
| end | ||||
|  | @ -0,0 +1,67 @@ | |||
| module OrbitApp | ||||
|     module Module | ||||
|       module FrontendUtility | ||||
|           Version = "0.1" | ||||
| 
 | ||||
|           module ClassMethods | ||||
|             @@frontend_pages = []  | ||||
|             #Record all frontend pages of orbit | ||||
| 
 | ||||
|           def add(var) #build @@frontend_pages | ||||
|             @@frontend_pages << var | ||||
|           end | ||||
| 
 | ||||
|           def all #return all frontend_pages of orbit | ||||
|             return @@frontend_pages | ||||
|           end | ||||
| 
 | ||||
|         end | ||||
|        | ||||
|         extend ClassMethods | ||||
|         def self.included( other ) | ||||
|           other.extend( ClassMethods ) | ||||
|         end | ||||
| 
 | ||||
|         class AppPageSet # From Registration | ||||
|           def initialize(&block) | ||||
|             @frontend_pages = []  | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|           end | ||||
| 
 | ||||
|           def app_page(name,&block) | ||||
|             @frontend_pages << AppPage.new(name,&block) | ||||
|           end | ||||
| 
 | ||||
|           def to_module_app_format #For ModuleApp to fetch data | ||||
|             @frontend_pages.collect{|t| [t.get_i18n,t.name]} | ||||
|           end | ||||
| 
 | ||||
|         end | ||||
| 
 | ||||
|         class AppPage | ||||
|           attr_reader :name | ||||
| 
 | ||||
|           def initialize(name,&block) | ||||
|             @name = name | ||||
|             @frontend_i18n = 'rulingcom.errors.init.app_page_noname' | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|           end | ||||
|            | ||||
|           def frontend_i18n(i18n) | ||||
|             @frontend_i18n = i18n | ||||
|           end | ||||
| 
 | ||||
|           def get_i18n | ||||
|              @frontend_i18n | ||||
|           end | ||||
| 
 | ||||
|           def finalize! | ||||
| 
 | ||||
|           end | ||||
| 
 | ||||
|           protected | ||||
|            | ||||
|         end# of AppPage | ||||
|     end # of FrontendUtility | ||||
|   end # of Module | ||||
| end # of OrbitApp | ||||
|  | @ -12,7 +12,7 @@ module OrbitApp | |||
| 
 | ||||
|           def find_by_key(key) | ||||
|             @@registrations.each{|t| | ||||
|               return t if t.name == key | ||||
|               return t if t.key == key | ||||
|             } | ||||
|             return nil | ||||
|           end | ||||
|  | @ -28,27 +28,107 @@ module OrbitApp | |||
|         end | ||||
| 
 | ||||
|         class DataSheet | ||||
|           attr_reader :name | ||||
|           attr_reader :base_path | ||||
|           attr_reader :name,:key,:base_path,:module_label | ||||
| 
 | ||||
|           def initialize(name, &block) | ||||
|             @name = name | ||||
|             @key = name.underscore.singularize | ||||
|             @side_bar = nil | ||||
|             @front_end_app_pages = nil | ||||
|             @module_label = 'rulingcom.errors.init.module_app_noname' | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|             setup_module_app | ||||
|           end | ||||
| 
 | ||||
|           def plugin | ||||
|           def get_module_app | ||||
|             ModuleApp.first(conditions: {:key=>@key,:title=>name}) | ||||
|           end | ||||
| 
 | ||||
|           def setup_module_app | ||||
|             module_app = get_module_app | ||||
|             module_app = ModuleApp.new(:key=>@key,:title=>name) if module_app.nil? | ||||
|             module_app.refetch_setting!(self) | ||||
|             begin | ||||
|               module_app.save(:validate=>false) | ||||
|             rescue | ||||
|               retry | ||||
|             end | ||||
| 
 | ||||
|           end | ||||
| 
 | ||||
|           def personal_plugin(params) | ||||
|           def get_label_i18n | ||||
|             @module_label  | ||||
|           end | ||||
| 
 | ||||
|           def get_default_widget_fields | ||||
|             return @widget_set.get_fields | ||||
|           end | ||||
| 
 | ||||
|           def get_default_widget | ||||
|             if @widget_set.nil? # Init not defining widget | ||||
|               return {} | ||||
|             elsif @widget_set.get_default_widget.nil? # Init had defining widget,but say nothing about default_widget | ||||
|               return {} | ||||
|               else | ||||
|                 @widget_set.get_default_widget.to_module_app_format | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           def get_enable_frontend | ||||
|             (@front_end_app_pages.nil? ? false : true) | ||||
|           end | ||||
| 
 | ||||
|           def get_app_pages | ||||
|             @front_end_app_pages.nil? ? [] : @front_end_app_pages.to_module_app_format | ||||
|           end | ||||
| 
 | ||||
|           def get_widget_by_path(path) | ||||
|             if @widget_set | ||||
|               @widget_set.find_by_path(path)  | ||||
|             else | ||||
|               nil | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           def get_widgets | ||||
|             @widget_set.nil? ? {} : @widget_set.to_module_app_format | ||||
|           end | ||||
| 
 | ||||
|           def get_categories | ||||
|             @widget_set.get_categories rescue [] | ||||
|           end | ||||
| 
 | ||||
|           def  get_tags | ||||
|             @widget_set.get_tags rescue [] | ||||
|           end | ||||
| 
 | ||||
|           def front_end(&block) #setter for front_end from init | ||||
|             @front_end_app_pages = FrontendUtility::AppPageSet.new(&block) | ||||
|           end | ||||
| 
 | ||||
|           def side_bar(&block) #setter for side_bar from init | ||||
|             @side_bar = SideBarRegisition::SideBar.new(@name,@key,method(:get_module_app),&block) | ||||
|           end | ||||
| 
 | ||||
|           def personal_plugin(params) #setter for personal_plugin from init | ||||
|             # TODO 這裡要看是一些檔案是不是都有 | ||||
|             Plugin::Registration.new_from_module_app(@name,@base_path,params) | ||||
|           end     | ||||
| 
 | ||||
|           def base_url(var) | ||||
|             @base_path = var | ||||
|           def widgets(&block) #setter for widget from init | ||||
|             # @widgets = WidgetRegisition::WidgetSet.new(&block) | ||||
|             @widget_set = WidgetUtility::WidgetSet.new(&block) | ||||
| 
 | ||||
|             # @widgets = widget_set.widgets | ||||
|             # @default_widget = widget_set.default_widget | ||||
|           end | ||||
|       end | ||||
| 
 | ||||
|           %w{module_label category base_url version organization author intro update_info}.each  do |field| | ||||
|               define_method(field){|var| instance_variable_set( "@" + field, var)} | ||||
|           end | ||||
| 
 | ||||
|         end # of class DataSheet | ||||
| 
 | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -0,0 +1,172 @@ | |||
| module OrbitApp | ||||
|     module Module | ||||
|       module SideBarRegisition | ||||
|           Version = "0.1" | ||||
| 
 | ||||
|           module ClassMethods | ||||
|             @@side_bars = [] | ||||
| 
 | ||||
|           def add(var) | ||||
|             @@side_bars << var | ||||
|           end | ||||
| 
 | ||||
|           def find_by_key(key) | ||||
|             @@side_bars.each{|t| | ||||
|               return t if t.name == key | ||||
|             } | ||||
|             return nil | ||||
|           end | ||||
| 
 | ||||
|           def render_all(request,params,user,current_module_app) | ||||
|             @@side_bars.collect{|t| t.render(request,params,user,current_module_app)}.join.html_safe | ||||
|           end | ||||
| 
 | ||||
|           def all | ||||
|             return @@side_bars | ||||
|           end | ||||
|         end | ||||
|        | ||||
|         extend ClassMethods | ||||
|         def self.included( other ) | ||||
|           other.extend( ClassMethods ) | ||||
|         end | ||||
| 
 | ||||
|         class SideBar | ||||
|           # include ApplicationHelper | ||||
|           # include AdminHelper | ||||
|           include SideBarRenderer | ||||
|           # def is_admin? | ||||
|           #   binding.pry | ||||
|           # end | ||||
|           # def is_manager? | ||||
|           #   binding.pry | ||||
|           # end | ||||
|           def initialize(name = '',key,get_module_app,&block)      | ||||
|             @head_label = name | ||||
|             @context_links = [] | ||||
|             @available_for = [] | ||||
|             @active_for_controllers = [] | ||||
|             @active_for_object_auth = [] | ||||
|             @active_for_app_auth = [] | ||||
|             @head_link = "" | ||||
|             @app_base_path = '' | ||||
|             @module_app_key = key | ||||
|             @get_module_app = get_module_app | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|             # setup_module_app(module_app_key) | ||||
|             finalize! | ||||
|             SideBarRegisition.add(self) | ||||
|           end | ||||
|            | ||||
|           def get_module_app | ||||
|             @get_module_app.call | ||||
|           end | ||||
| 
 | ||||
|           def head_label_i18n(var,options ={}) | ||||
|             @head_label = var | ||||
|             @icon_class = options[:icon_class] | ||||
|           end | ||||
| 
 | ||||
|           def available_for(var) | ||||
|             @available_for = var | ||||
|           end | ||||
| 
 | ||||
|           def active_for_controllers(var) | ||||
|             @active_for_controllers = var | ||||
|           end | ||||
| 
 | ||||
|           def active_for_object_auth(var) | ||||
|             @active_for_object_auth = var | ||||
|           end | ||||
| 
 | ||||
|           def head_link_path(var) | ||||
|             @head_link = var | ||||
|           end | ||||
| 
 | ||||
|           def context_link(*var) | ||||
|             var[1].merge!({:module_app_key=>@module_app_key,:get_module_app=>@get_module_app}) unless @module_app_key.nil? | ||||
|             new_context_link = ContextLink.new(*var) | ||||
|             @context_links << new_context_link | ||||
|           end | ||||
| 
 | ||||
|           def finalize! | ||||
|             set_controllers_scope | ||||
|             # set_default_active_app_auth | ||||
|             @context_links.each do |t|  | ||||
|               # t.set_module_app = @module_app | ||||
|               t.finalize! | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           protected | ||||
|           # def setup_module_app(var) | ||||
|           #   @module_app_title = var | ||||
|           #   @module_app = ModuleApp.where(:key=>var).desc(:create_date).first | ||||
|           #   @module_app_key = @module_app.key | ||||
|           # end | ||||
| 
 | ||||
|           # def set_default_active_app_auth | ||||
|           #   @active_for_app_auth = @module_app.title | ||||
|           # end | ||||
| 
 | ||||
|           def set_controllers_scope | ||||
|             var = @active_for_controllers | ||||
|             @active_for_controllers = [] | ||||
|             var[:private].each do |controller| | ||||
|               @active_for_controllers <<   "panel/#{@module_app_key}/back_end/"+controller | ||||
|             end unless var[:private].nil? | ||||
|             var[:public].each do |controller| | ||||
|               @active_for_controllers <<   controller | ||||
|             end unless var[:public].nil?  | ||||
|           end | ||||
|         end | ||||
| 
 | ||||
|         class ContextLink | ||||
|           include ContextLinkRenderer | ||||
|           attr_reader :label_i18n,:available_for,:priority,:path,:active_for_action | ||||
| 
 | ||||
|           def initialize(label_i18n="NoNameLink",options={}) | ||||
|             @label_i18n = label_i18n | ||||
|             @available_for = options[:available_for]  | ||||
|             @priority = options[:priority] || 0 | ||||
|             @path = options[:link_path] || "" | ||||
|             @active_for_action = options[:active_for_action] || [] | ||||
|             @active_for_object_auth = options[:active_for_object_auth] || [] | ||||
|             @active_for_app_auth = options[:active_for_app_auth] || [] | ||||
|             @module_app_key = options[:module_app_key] | ||||
|             @get_module_app = options[:get_module_app] | ||||
|           end | ||||
| 
 | ||||
|           def get_module_app | ||||
|             @get_module_app.call | ||||
|           end | ||||
| 
 | ||||
|           def active? | ||||
|             for_action = @active_for_action.blank? ? false : active_for_action? | ||||
|             for_app_auth = @active_for_app_auth.blank? ? false : active_for_app_auth? | ||||
|             for_ob_auth = @active_for_object_auth.blank? ? false : active_for_ob_auths? | ||||
|             for_action || for_app_auth || for_ob_auth | ||||
|           end | ||||
| 
 | ||||
|           def active_for_action? | ||||
|             @active_for_action[controller] == action | ||||
|           end | ||||
| 
 | ||||
|           # def set_module_app=(var) | ||||
|           #   @module_app = var | ||||
|           #   @module_app_key = var.key | ||||
|           # end | ||||
| 
 | ||||
|           def finalize! | ||||
|             set_active_actions | ||||
|           end | ||||
| 
 | ||||
|           protected | ||||
|           def set_active_actions | ||||
|             controller_action_hash = @active_for_action | ||||
|             @active_for_action = Hash[controller_action_hash.map{|controller,action| ["panel/#{@module_app_key}/back_end/"+controller.to_s,action.to_s]}] | ||||
|           end | ||||
|         end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -0,0 +1,172 @@ | |||
| module OrbitApp | ||||
|     module Module | ||||
|       module WidgetUtility | ||||
|           Version = "0.1" | ||||
| 
 | ||||
|           module ClassMethods | ||||
|             @@widgets = [] | ||||
| 
 | ||||
|           def add(var) | ||||
|             @@widgets << var | ||||
|           end | ||||
| 
 | ||||
|           def all | ||||
|             return @@widgets | ||||
|           end | ||||
|         end | ||||
|        | ||||
|         extend ClassMethods | ||||
|         def self.included( other ) | ||||
|           other.extend( ClassMethods ) | ||||
|         end | ||||
| 
 | ||||
|         class WidgetSet | ||||
|           attr_reader :widgets,:categories_query,:tags_query | ||||
|           def initialize(&block) | ||||
|             @widgets = [] | ||||
|             @default_widget = nil | ||||
|             @categories_query = '' | ||||
|             @tags_query = '' | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|           end | ||||
| 
 | ||||
|           %w{categories_query tags_query}.each  do |field| | ||||
|               define_method(field){|var| instance_variable_set( "@" + field, var)} | ||||
|           end | ||||
| 
 | ||||
|           def find_by_path(path) | ||||
|             @widgets.each do |widget| | ||||
|               return widget if widget.name == path | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           def get_categories | ||||
|              eval(@categories_query) rescue nil | ||||
|           end | ||||
| 
 | ||||
|           def  get_tags | ||||
|             eval(@tags_query) rescue nil | ||||
|           end | ||||
| 
 | ||||
|           def default_widget(&block) | ||||
|             @default_widget  = DefaultWidget.new(&block) | ||||
|           end | ||||
| 
 | ||||
|           def customize_widget(name,&block) | ||||
|             @widgets << Widget.new(name,&block) | ||||
|           end  | ||||
| 
 | ||||
|           # def customize_widget(name,label,options ={}) | ||||
|           #   @widgets << Widget.new(name,label,options) | ||||
|           # end | ||||
| 
 | ||||
|           # def customize_widget_options_fields_i18n(settings) | ||||
|           #   @customize_widget_options_fields_i18n = settings | ||||
|           # end | ||||
| 
 | ||||
|           def to_module_app_format             | ||||
|             hash = {} | ||||
|             @widgets.collect{|t|  hash[t.name] = t.to_hash} | ||||
|             hash["default_widget"]= DefaultWidget.get_interface_args unless @default_widget.blank? | ||||
|             hash | ||||
|           end | ||||
| 
 | ||||
|           def get_fields | ||||
|             get_default_widget.get_fields | ||||
|           end | ||||
| 
 | ||||
|           def get_default_widget | ||||
|             return @default_widget | ||||
|           end | ||||
|         end | ||||
| 
 | ||||
|         class DefaultWidget | ||||
|           STYLE = ["typeA","typeB_style2","typeB_style3","typeB_style4","typeC"] | ||||
| 
 | ||||
|           def  initialize(&block) | ||||
|             @query = nil | ||||
|             @image = nil | ||||
|             @more_link = {} | ||||
|             @fields = [] | ||||
|              block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|           end | ||||
| 
 | ||||
|           def more_link_to(label_i18n,path_method) | ||||
|             @more_link[:label_i18n] = label_i18n | ||||
|             @more_link[:path_method] = path_method | ||||
|           end | ||||
| 
 | ||||
|           def self.get_interface_args | ||||
|             #will need to work with design | ||||
|             {:name=>"default_widget",:field=>nil,:label=>'label',:style=>STYLE} | ||||
|           end | ||||
| 
 | ||||
|           def to_module_app_format | ||||
|             {:query=>@query,:image=>@image} rescue nil | ||||
|           end | ||||
| 
 | ||||
|           def link_field(field_name,setting) | ||||
|             @fields << [field_name,setting,:link] | ||||
|           end | ||||
| 
 | ||||
|           def field(field_name) | ||||
|             @fields << [field_name,nil,:field] | ||||
|           end | ||||
| 
 | ||||
|           def get_fields | ||||
|             @fields | ||||
|           end | ||||
| 
 | ||||
|           def query(var) | ||||
|             @query = var | ||||
|           end | ||||
| 
 | ||||
|           def image(var) | ||||
|             @image = var | ||||
|           end | ||||
| 
 | ||||
|         end | ||||
| 
 | ||||
|         class Widget | ||||
|           attr_reader :name,:default_template,:fields | ||||
| 
 | ||||
|           def initialize(name,&block) | ||||
|             @name = name | ||||
|             @options  = {} | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|              | ||||
|             # @fields = options[:fields]  | ||||
|             # @label = label | ||||
|             # @style= options[:style] | ||||
|           end | ||||
|            | ||||
|           def widget_i18n(str) # "gallery.widget.widget1" | ||||
|             @widget_i18n = str | ||||
|           end           | ||||
| 
 | ||||
|           def style(ary)# [] | ||||
|             @style = ary | ||||
|           end | ||||
|            | ||||
|           def get_options | ||||
|             @options | ||||
|           end | ||||
| 
 | ||||
|           def options(opt_name,*options) # "vertical", | ||||
|             option = options[0] | ||||
|             @options[opt_name] = {:label_i18n=>option[:i18n] , :opts=>option[:options_item]} | ||||
|             # options =>   :i18n => "gallery.widget_option.vertical",:options_item=>[1, 2] | ||||
|             #                        :i18n =>"gallery.widget_option.album",:options_item => {"query"=>"GalleryAlbum.all", "value"=>:id, "label"=>:name} | ||||
|           end | ||||
| 
 | ||||
| 
 | ||||
|           def to_hash | ||||
|               {:name => @name,:fields=>@fields,:label=>@label,:style=>@style,:i18n=>@widget_i18n} | ||||
|           end | ||||
| 
 | ||||
|           protected | ||||
|            | ||||
|         end# of widget | ||||
|     end # of WidgetRegisition | ||||
|   end # of Module | ||||
| end # of OrbitApp | ||||
|  | @ -0,0 +1,73 @@ | |||
| module OrbitApp | ||||
|   module ModuleAppMembershipTools | ||||
|       def is_manager?(user) | ||||
|         if user.nil? | ||||
|           return false | ||||
|         else | ||||
|           m_users = managing_users | ||||
|           if m_users.blank? | ||||
|             false | ||||
|           else | ||||
|             m_users.include?(user)   | ||||
|           end | ||||
|         end | ||||
|       end | ||||
|        | ||||
|       def is_sub_manager?(user) | ||||
|         if user.nil? | ||||
|           return false | ||||
|         else # when user is guest | ||||
|           s_m_users = sub_managing_users | ||||
|           result = false | ||||
|           if s_m_users.blank? | ||||
|             result = false | ||||
|           else | ||||
|             result = s_m_users.include?(user)  | ||||
|           end | ||||
|           result || is_manager?(user) | ||||
|         end | ||||
|       end | ||||
|        | ||||
|       def managing_users | ||||
|         self.managers.collect{ |t| t.user } | ||||
|       end | ||||
|        | ||||
|       def sub_managing_users | ||||
|         self.sub_managers.collect{ |t| t.user } | ||||
|       end | ||||
|        | ||||
|       def assign_manager(user,assigner) | ||||
|         manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil     | ||||
|         if manager.nil?  | ||||
|           manager = self.managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil)) | ||||
|         end | ||||
|         manager | ||||
|       end | ||||
|        | ||||
|       def assign_sub_manager(user,assigner) | ||||
|         submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|         if submanager.nil? && !self.managing_users.include?(user) | ||||
|           submanager = self.sub_managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil) ) | ||||
|         end | ||||
|         submanager | ||||
|       end | ||||
|        | ||||
|       def remove_manager(user) | ||||
|         manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|         if manager | ||||
|           manager.destroy | ||||
|         else | ||||
|           false | ||||
|         end | ||||
|       end | ||||
|        | ||||
|       def remove_sub_manager(user) | ||||
|         submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|         if submanager | ||||
|           submanager.destroy | ||||
|         else | ||||
|           false | ||||
|         end | ||||
|       end | ||||
|   end | ||||
| end | ||||
|  | @ -10,8 +10,8 @@ module OrbitApp | |||
|             @@registrations << DataSheet.new(name,&block) | ||||
|           end | ||||
| 
 | ||||
|           def new_from_module_app(name,base_path,arg) | ||||
|             @@registrations << DataSheet.new(name,arg,:base_path=>base_path) | ||||
|           def new_from_module_app(name,base_path,*args) | ||||
|             @@registrations << DataSheet.new(name,args,:base_path=>base_path) | ||||
|           end | ||||
| 
 | ||||
|           def find_by_key(key) | ||||
|  | @ -35,16 +35,23 @@ module OrbitApp | |||
|           attr_reader :name | ||||
|           attr_reader :base_path | ||||
| 
 | ||||
|           def name | ||||
|             if @name.is_a? Proc  | ||||
|               @name.call | ||||
|             else | ||||
|               @name | ||||
|             end | ||||
|           end | ||||
| 
 | ||||
|           def initialize(name,partial=nil,*args ,&block) | ||||
|             @base_path = args[0][:base_path] | ||||
|             @name = name | ||||
|             @name = partial[0][:i18n].nil? ? name : lambda{ I18n.t(partial[0][:i18n]) }  | ||||
|             @partial_path = '' | ||||
|             @admin_partial_path = '' | ||||
| 
 | ||||
|             unless partial.nil? | ||||
|               @partial_path = partial[:path] | ||||
|               @admin_partial_path = partial[:admin_path] | ||||
|               @partial_path = partial[0][:path] | ||||
|               @admin_partial_path = partial[0][:admin_path] | ||||
|             end | ||||
| 
 | ||||
|             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ module OrbitApp | |||
| 
 | ||||
|         def new( name ,&block) | ||||
|           @@summaries << Item.new(name,&block) | ||||
|           binding.pry | ||||
|           # binding.pry | ||||
|         end | ||||
| 
 | ||||
|         def all | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ module  OrbitCoreLib | |||
|         end | ||||
|          | ||||
|         query1 = auth_object_space.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: user.id) | ||||
|         query2 = auth_object_space.any_of({all: true},{privilege_user_ids: user.id},{role_ids: user.role.id}).excludes(blocked_user_ids: user.id) | ||||
|         query2 = auth_object_space.any_of({all: true},{privilege_user_ids: user.id},{role_ids: user.role_ids}).excludes(blocked_user_ids: user.id) | ||||
|         result = (query1 + query2).uniq | ||||
|         result.collect{|t| t.obj_authable}.delete_if{|val| val==nil} | ||||
|       end | ||||
|  | @ -128,7 +128,7 @@ module  OrbitCoreLib | |||
|     end | ||||
|      | ||||
|   end | ||||
|   module  ObjectTokenUnility | ||||
|   module  ObjectTokenUtility | ||||
|     def self.included(base) | ||||
|       base.instance_eval("field :s_token") | ||||
|       base.instance_eval("after_create :generate_token") | ||||
|  | @ -145,7 +145,7 @@ module  OrbitCoreLib | |||
|      end | ||||
|   end | ||||
|    | ||||
|   module PermissionUnility | ||||
|   module PermissionUtility | ||||
|   private | ||||
|     def check_permission(type = :use) | ||||
|       permission_grant =  current_or_guest_user.admin?? true : false | ||||
|  | @ -168,4 +168,34 @@ module  OrbitCoreLib | |||
|       ModuleApp.first(conditions: {s_token: token}) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   module AppBackendUtility | ||||
|     def setup_vars | ||||
|       @app_title ||= controller_path.split('/')[1].singularize | ||||
|       @module_app ||= ModuleApp.first(conditions: {:key => @app_title} ) | ||||
|     end | ||||
| 
 | ||||
|     private | ||||
| 
 | ||||
|     def force_order_for_visitor | ||||
|       setup_vars | ||||
|       set_current_user | ||||
|     end | ||||
| 
 | ||||
| 
 | ||||
|     def force_order_for_user | ||||
|       setup_vars | ||||
|       set_current_user     | ||||
|       authenticate_user! | ||||
|       check_user_can_use | ||||
|     end | ||||
| 
 | ||||
|     def check_user_can_use  | ||||
|       unless check_permission | ||||
|         #redirect_to polymorphic_path(['panel',@app_title,'back_end','public']) | ||||
|         redirect_to root_url | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -184,15 +184,21 @@ module ParserCommon | |||
|   # page_contents | ||||
|   def parse_contents_edit(body, page, edit=nil) | ||||
|     public_r_tags = [] | ||||
|     url = '' | ||||
|     body.css('.page_content').each do |content| | ||||
|       ret = '' | ||||
|       category = params[:category_id].blank? ? page[:category] : params[:category_id] | ||||
|       tag = params[:tag_id].blank? ? page[:tag] : params[:tag_id] | ||||
|       if (content["main"] == "true" && !page.module_app.nil?) | ||||
|         ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}" | ||||
|         ret << "/#{params[:id]}" if params[:id] && !params[:id].eql?(page.id.to_s) | ||||
|         ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}&search_query=#{params[:search_query]}&name=#{params[:name]}" | ||||
|         ret << "'></div>" | ||||
|         if page.app_frontend_url == 'default_widget' | ||||
|           url = "/panel/orbit_app/widget/#{page.frontend_style}?inner=true" | ||||
|         else | ||||
|           url = "/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}" | ||||
|         end | ||||
|           ret << "<div id='appfrontend' class='dymanic_load' path='#{url}" | ||||
|           ret << "/#{params[:id]}" if params[:id] && !params[:id].eql?(page.id.to_s) | ||||
|           ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}&search_query=#{params[:search_query]}&name=#{params[:name]}&item_type=page" | ||||
|           ret << "'></div>"         | ||||
|       else | ||||
|         part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil | ||||
|         part_title = part.title rescue nil | ||||
|  | @ -213,7 +219,7 @@ module ParserCommon | |||
|                     raise ModuleAppError,"PagePart can't find ModuleApp"   if part.module_app.nil? | ||||
|                     "/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true" | ||||
|                 end | ||||
|           options = "&part_id=#{part.id}&category_id=#{!part[:category].blank? ? part[:category].blank? : category}&tag_id=#{!part[:tag].blank? ? part[:tag] : tag}&page=#{params[:page]}&search_query=#{params[:search_query]}&part_title=#{Rack::Utils.escape(part_title).gsub("+", "%20") rescue nil}" | ||||
|           options = "&part_id=#{part.id}&category_id=#{!part[:category].blank? ? part[:category].blank? : category}&tag_id=#{!part[:tag].blank? ? part[:tag] : tag}&page=#{params[:page]}&search_query=#{params[:search_query]}&part_title=#{Rack::Utils.escape(part_title).gsub("+", "%20") rescue nil}&item_type=page_part" | ||||
|           ret << "<div class='dymanic_load widget' path='#{url + options}'></div>" | ||||
|         when 'public_r_tag' | ||||
|           ret << "<r:#{part.public_r_tag} id='#{part.public_r_tag_object_id}'/>" | ||||
|  |  | |||
|  | @ -95,11 +95,18 @@ module ParserFrontEnd | |||
|   # page_contents | ||||
|   def parse_contents(body, page, edit=nil, locale) | ||||
|     public_r_tags = [] | ||||
|     url = '' | ||||
|     body.css('.page_content').each do |content| | ||||
|       ret = '' | ||||
|       if (content["main"] == "true" && !page.module_app.nil?) | ||||
|         url = "/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}\#{(\"/\" + params[:id]) if params[:id] && !params[:id].eql?(page.id.to_s)}\#{(\"/\" + params[:controller_action]) if params[:controller_action] && params[:id]}?inner=true" | ||||
|         options = "&page_id=#{page.id}&category_id=\#{category}&tag_id=\#{tag}&preview=\#{params[:preview]}&page_main=\#{params[:page_main]}&search_query=\#{params[:search_query]}&name=\#{params[:name]}" | ||||
|         if page.app_frontend_url == 'default_widget' | ||||
|           url = "/panel/orbit_app/widget/#{page.frontend_style}?inner=true" | ||||
|         else | ||||
|            url = "/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}\#{(\"/\" + params[:id]) if params[:id] && !params[:id].eql?(page.id.to_s)}\#{(\"/\" + params[:controller_action]) if params[:controller_action] && params[:id]}?inner=true" | ||||
|         end | ||||
| 
 | ||||
|          | ||||
|         options = "&page_id=#{page.id}&category_id=\#{category}&tag_id=\#{tag}&preview=\#{params[:preview]}&page_main=\#{params[:page_main]}&search_query=\#{params[:search_query]}&name=\#{params[:name]}&item_type=page" | ||||
|         ret << "<orbit_front path='#{url + options}'></div>" | ||||
|       else | ||||
|         part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil | ||||
|  | @ -116,7 +123,9 @@ module ParserFrontEnd | |||
|                       else | ||||
|                         "/panel/\#{part.module_app.key}/widget/\#{part.widget_path}?inner=true" | ||||
|                     end | ||||
|           options = "&part_id=\#{part.id}&category_id=\#{!part[:category].blank? ? part[:category].blank? : category}&tag_id=\#{!part[:tag].blank? ? part[:tag] : tag}&page=\#{params[:page]}&search_query=\#{params[:search_query]}&part_title=\#{Rack::Utils.escape(part_title).gsub(\"\+\", \"\%20\") rescue nil}" | ||||
| 
 | ||||
|           options = "&part_id=\#{part.id}&category_id=\#{!part[:category].blank? ? part[:category].blank? : category}&tag_id=\#{!part[:tag].blank? ? part[:tag] : tag}&page=\#{params[:page]}&search_query=\#{params[:search_query]}&part_title=\#{Rack::Utils.escape(part_title).gsub(\"\+\", \"\%20\") rescue nil}&item_type=page_part" | ||||
| 
 | ||||
|           ret << "<orbit_front path='#{url + options}' part_id=#{part.id} class='dymanic_load widget'></orbit_front>" | ||||
|            | ||||
|         when 'public_r_tag' | ||||
|  |  | |||
|  | @ -351,9 +351,11 @@ namespace :migrate do | |||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   task :make_default_widget_work_config => :environment do | ||||
| 
 | ||||
|   task :make_default_widget_work_config_for_announcement => :environment do | ||||
|     a = ModuleApp.where(:key=>'announcement').first | ||||
|     a.widgets[:default_widget] = ['typeA','typeC','typeB_style2','typeB_style3','typeB_style4'] | ||||
|     a.widgets = {"index"=>["1", "2"],  "default_widget"=>["typeA", "typeC", "typeB_style2", "typeB_style3", "typeB_style4"]}  | ||||
|     a.widget_fields = [ | ||||
|       ["title","announcement.default_widget.title"], | ||||
|       ["bulletin_category_with_title","announcement.default_widget.bulletin_category_with_title"], | ||||
|  | @ -370,6 +372,24 @@ namespace :migrate do | |||
|     a.save | ||||
|   end | ||||
| 
 | ||||
|   task :make_default_widget_work_config_for_web_link => :environment do | ||||
|     a = ModuleApp.where(:key=>'web_resource').first | ||||
|     a.widgets = { "default_widget"=>["typeA", "typeC", "typeB_style2", "typeB_style3", "typeB_style4"]}  | ||||
|     a.widget_fields = [ | ||||
|       ["title","web_link.default_widget.title"], | ||||
|       ["web_link_with_title","web_link.default_widget.bulletin_category_with_title"] | ||||
|       ] | ||||
|     a.get_default_widget = {:query=>'WebLink.all'} | ||||
|     a.widget_fields_link_method = { | ||||
|         "title"=>{:method => 'panel_web_resource_front_end_web_link_path', | ||||
|                       :args=>:self}, | ||||
|         "web_link_with_title"=>{ | ||||
|                     :method => 'panel_web_resource_front_end_web_link_path', | ||||
|                     :args=>{:category_id => [:web_link_category,:id]}} | ||||
|       } | ||||
|     a.save | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   task :reorder_items => :environment do | ||||
|     reorder_children(Item.root) | ||||
|  | @ -392,17 +412,32 @@ namespace :migrate do | |||
| 
 | ||||
|   task :correct_gallery_and_web_resoure_config => :environment do | ||||
|     a = ModuleApp.where(:key=>'web_resource').first | ||||
|     a.widgets = {} | ||||
|     a.widgets[:web_links] = [] | ||||
|     a.widgets[:home_list] = [] | ||||
|     a.save | ||||
|     if a | ||||
|       a.widgets = {} | ||||
|       a.widgets[:web_links] = [] | ||||
|       a.widgets[:home_list] = [] | ||||
|       a.app_pages = ["web_links"] | ||||
|       a.save       | ||||
|     end | ||||
| 
 | ||||
|     a = ModuleApp.where(:key=>'gallery').first | ||||
|     a.widgets = {} | ||||
|     a.widgets[:widget1] = [] | ||||
|     a.widget_options_fields_i18n = {"widget1"=>{"vertical"=>"gallery.widget_option.vertical", "horizontal"=>"gallery.widget_option.horizontal", "album_id"=>"gallery.widget_option.album"}}  | ||||
|     a.widget_options = {"widget1"=>{"vertical"=>[1, 2], "horizontal"=>[1, 2, 3, 4, 5, 6], "album_id"=>{"query"=>"GalleryAlbum.all", "value"=>:id, "label"=>:name}}}  | ||||
|     a.save | ||||
|     if a | ||||
|       a.widgets = {} | ||||
|       a.widgets[:widget1] = [] | ||||
|       a.widget_options_fields_i18n = {"widget1"=>{"vertical"=>"gallery.widget_option.vertical", "horizontal"=>"gallery.widget_option.horizontal", "album_id"=>"gallery.widget_option.album"}}  | ||||
|       a.widget_options = {"widget1"=>{"vertical"=>[1, 2], "horizontal"=>[1, 2, 3, 4, 5, 6], "album_id"=>{"query"=>"GalleryAlbum.all", "value"=>:id, "label"=>:name}}}  | ||||
|       a.save   | ||||
|     end | ||||
|      | ||||
|   end | ||||
| 
 | ||||
|   task :clean_module_app_objects => :environment do | ||||
|     ModuleApp.all.each do |ma| | ||||
|       %w{intro widget_fields_link_method widgets  get_default_widget app_pages author enable_frontend get_widget_style get_widget_style organization update_info using_default_widget version widget_fields version create_date}.each  do |field|  | ||||
|         ma.unset field | ||||
|       end | ||||
|       ma.save | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -1,222 +0,0 @@ | |||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: JNDI not configured for solr (NoInitialContextEx) | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: using system property solr.solr.home: /home/nccu/stage/NCCU/solr | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader <init> | ||||
| INFO: Solr home set to '/home/nccu/stage/NCCU/solr/' | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrDispatchFilter init | ||||
| INFO: SolrDispatchFilter.init() | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: JNDI not configured for solr (NoInitialContextEx) | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: using system property solr.solr.home: /home/nccu/stage/NCCU/solr | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.CoreContainer$Initializer initialize | ||||
| INFO: looking for solr.xml: /home/nccu/stage/NCCU/solr/solr.xml | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader <init> | ||||
| INFO: Solr home set to '/home/nccu/stage/NCCU/solr/' | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrConfig initLibs | ||||
| INFO: Adding specified lib dirs to ClassLoader | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrConfig <init> | ||||
| INFO: Loaded SolrConfig: solrconfig.xml | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore <init> | ||||
| INFO: Opening new SolrCore at /home/nccu/stage/NCCU/solr/, dataDir=/home/nccu/stage/NCCU/solr/data/development/ | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.schema.IndexSchema readSchema | ||||
| INFO: Reading Solr Schema | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.schema.IndexSchema readSchema | ||||
| INFO: Schema name=sunspot | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created string: org.apache.solr.schema.StrField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created tdouble: org.apache.solr.schema.TrieDoubleField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created rand: org.apache.solr.schema.RandomSortField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created null: org.apache.solr.analysis.CJKTokenizerFactory | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created null: org.apache.solr.analysis.StandardFilterFactory | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created null: org.apache.solr.analysis.LowerCaseFilterFactory | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created text: org.apache.solr.schema.TextField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created boolean: org.apache.solr.schema.BoolField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created date: org.apache.solr.schema.DateField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created sdouble: org.apache.solr.schema.SortableDoubleField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created sfloat: org.apache.solr.schema.SortableFloatField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created sint: org.apache.solr.schema.SortableIntField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created slong: org.apache.solr.schema.SortableLongField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created tint: org.apache.solr.schema.TrieIntField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created tfloat: org.apache.solr.schema.TrieFloatField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.util.plugin.AbstractPluginLoader load | ||||
| INFO: created tdate: org.apache.solr.schema.TrieDateField | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.schema.IndexSchema readSchema | ||||
| INFO: default search field is text | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.schema.IndexSchema readSchema | ||||
| INFO: query parser default operator is AND | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.schema.IndexSchema readSchema | ||||
| INFO: unique key field: id | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.JmxMonitoredMap <init> | ||||
| INFO: No JMX servers found, not exposing Solr information with JMX. | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore initListeners | ||||
| INFO: Added SolrEventListener: org.apache.solr.core.QuerySenderListener{queries=[]} | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore initListeners | ||||
| INFO: Added SolrEventListener: org.apache.solr.core.QuerySenderListener{queries=[{q=solr rocks,start=0,rows=10}, {q=static firstSearcher warming query from solrconfig.xml}]} | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.request.XSLTResponseWriter init | ||||
| INFO: xsltCacheLifetimeSeconds=5 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created standard: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created dismax: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created partitioned: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /spell: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created tvrh: org.apache.solr.handler.component.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: adding lazy requestHandler: org.apache.solr.handler.extraction.ExtractingRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /update/extract: org.apache.solr.handler.extraction.ExtractingRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /terms: org.apache.solr.handler.component.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: adding lazy requestHandler: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /elevate: solr.SearchHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /update: solr.XmlUpdateRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /update/javabin: solr.BinaryUpdateRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /analysis/document: solr.DocumentAnalysisRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /analysis/field: solr.FieldAnalysisRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: adding lazy requestHandler: solr.CSVRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /update/csv: solr.CSVRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /admin/: org.apache.solr.handler.admin.AdminHandlers | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /admin/ping: PingRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /debug/dump: solr.DumpRequestHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.RequestHandlers initHandlersFromConfig | ||||
| INFO: created /mlt: solr.MoreLikeThisHandler | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.search.SolrIndexSearcher <init> | ||||
| INFO: Opening Searcher@6a510e39 main | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.update.DirectUpdateHandler2$CommitTracker <init> | ||||
| INFO: AutoCommit: disabled | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SpellCheckComponent inform | ||||
| INFO: Initializing spell checkers | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.spelling.AbstractLuceneSpellChecker init | ||||
| INFO: Using WhitespaceAnalzyer for dictionary: default | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SpellCheckComponent inform | ||||
| WARNING: No queryConverter defined, using default converter | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.QueryElevationComponent inform | ||||
| INFO: Loading QueryElevation from: /home/nccu/stage/NCCU/solr/conf/elevate.xml | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@3cc70b0d | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@2fa6a1a7 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@64bef361 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@345c98f3 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@2b3d9460 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@57d840cd | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@3cc70b0d | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@2fa6a1a7 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@64bef361 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@345c98f3 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@2b3d9460 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@57d840cd | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@3cc70b0d | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@2fa6a1a7 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@64bef361 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@345c98f3 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@2b3d9460 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@57d840cd | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@3cc70b0d | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@2fa6a1a7 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@64bef361 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@345c98f3 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@2b3d9460 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.SpellCheckComponent@36867fc9 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@57d840cd | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@3cc70b0d | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@2fa6a1a7 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@64bef361 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@345c98f3 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@2b3d9460 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.TermVectorComponent@382f8116 | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@57d840cd | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SearchHandler inform | ||||
| INFO: Adding  component:org.apache.solr.handler.component.TermsComponent@36c3e82b | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.QuerySenderListener newSearcher | ||||
| INFO: QuerySenderListener sending requests to Searcher@6a510e39 main | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.CoreContainer register | ||||
| INFO: registering core:  | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrDispatchFilter init | ||||
| INFO: user.dir=/home/nccu/.rvm/gems/ruby-1.9.2-p318@stage/gems/sunspot_solr-1.3.3/solr | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrDispatchFilter init | ||||
| INFO: SolrDispatchFilter.init() done | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrServlet init | ||||
| INFO: SolrServlet.init() | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: JNDI not configured for solr (NoInitialContextEx) | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: using system property solr.solr.home: /home/nccu/stage/NCCU/solr | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrServlet init | ||||
| INFO: SolrServlet.init() done | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: JNDI not configured for solr (NoInitialContextEx) | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrResourceLoader locateSolrHome | ||||
| INFO: using system property solr.solr.home: /home/nccu/stage/NCCU/solr | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.servlet.SolrUpdateServlet init | ||||
| INFO: SolrUpdateServlet.init() done | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore execute | ||||
| INFO: [] webapp=null path=null params={start=0&event=firstSearcher&q=solr+rocks&rows=10} hits=0 status=0 QTime=46  | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore execute | ||||
| INFO: [] webapp=null path=null params={event=firstSearcher&q=static+firstSearcher+warming+query+from+solrconfig.xml} hits=0 status=0 QTime=4  | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.QuerySenderListener newSearcher | ||||
| INFO: QuerySenderListener done. | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.handler.component.SpellCheckComponent$SpellCheckerListener newSearcher | ||||
| INFO: Loading spell index for spellchecker: default | ||||
| Sep 24, 2012 10:20:33 AM org.apache.solr.core.SolrCore registerSearcher | ||||
| INFO: [] Registered new searcher Searcher@6a510e39 main | ||||
|  | @ -0,0 +1,49 @@ | |||
| module AdBanner | ||||
|   OrbitApp.registration "AdBanner",:type=> 'ModuleApp' do | ||||
|     module_label 'miss_module_i18n.ad_banner' | ||||
|     base_url File.expand_path File.dirname(__FILE__)     | ||||
|     # personal_plugin :enable => true,:path=>"panel/ad_banner/plugin/profile",:i18n=>'admin.ad_banner' | ||||
|      | ||||
|     version "0.1" | ||||
|     organization "Rulingcom" | ||||
|     author "RD dep" | ||||
|     intro "I am intro" | ||||
|     update_info 'some update_info' | ||||
| 
 | ||||
|     # front_end do | ||||
|     #   app_page 'bulletins' | ||||
|     # end | ||||
| 
 | ||||
|     # category ["BulletinCategory"] | ||||
| 
 | ||||
|     # widgets do | ||||
|     #   # default_widget do | ||||
|     #   #   query 'Bulletin.all' | ||||
|     #   #   image :image | ||||
|     #   # end | ||||
| 
 | ||||
|     #   # categories_query 'BulletinCategory.all' | ||||
|     #   # tags_query 'AdBannerTag.all' | ||||
| 
 | ||||
|     #   # customize_widget "index","ad_banner.widget.index",:fields=>["title","category","postdate"],:style=>["cu_style_1","cu_style_2","cu_style_3","cu_style_4","cu_style_5"] | ||||
|     #   # customize_widget "bulletins_and_web_links","ad_banner.widget.bulletins_and_web_links" | ||||
| 
 | ||||
|     #   # item "index","ad_banner.widget.index",:default_template=>true,:fields=>["title","category","postdate"] | ||||
|     #   # item "bulletins_and_web_links","ad_banner.widget.bulletins_and_web_links" | ||||
|     # end | ||||
|      | ||||
|     side_bar do | ||||
|       head_label_i18n  'admin.ad_banner',:icon_class=>"icons-landscape" | ||||
|       available_for [:admin,:guest,:manager,:sub_manager] | ||||
|       active_for_controllers ({:public=>['admin/ad_banners', 'admin/ad_images']}) | ||||
| 
 | ||||
|       head_link_path "admin_ad_banners_path" | ||||
| 
 | ||||
|       context_link 'module_authorization', | ||||
|                             :link_path=>"admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: 'AdBanner'}))", | ||||
|                             :priority=>6, | ||||
|                             :active_for_app_auth => 'ad_banners', | ||||
|                             :available_for => [:admin] | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -1,17 +1,24 @@ | |||
| { | ||||
|   "title": "announcement", | ||||
|   "version": "0.1", | ||||
|   "organization": "Rulingcom", | ||||
|   "author": "RD dep", | ||||
|   "intro": "A simple blog……", | ||||
|   "update_info": "Some info", | ||||
|   "create_date": "11-11-2011", | ||||
|   "app_pages":  ["bulletins"], | ||||
|   "widgets": { | ||||
|     "index":["1","2","3","4","5"], | ||||
|     "bulletins_and_web_links":[] | ||||
|   }, | ||||
|   "category": ["BulletinCategory"], | ||||
|   "widget_fields":["title","category","postdate"], | ||||
|   "enable_frontend": true | ||||
| } | ||||
|  { | ||||
| "app_pages":["bulletins"], | ||||
| "author":"RD dep", | ||||
| "create_date":"11-11-2011", | ||||
| "enable_frontend":true, | ||||
| "get_default_widget":{"query":"Bulletin.all","image":"image"}, | ||||
| "intro":"A simple blog", | ||||
| "key":"announcement", | ||||
| "organization":"Rulingcom", | ||||
| "title":"Announcement", | ||||
| "update_info":"Some info", | ||||
| "version":"0.1", | ||||
| "widget_fields":[["title","announcement.default_widget.title"], | ||||
|                       ["bulletin_category_with_title","announcement.default_widget.bulletin_category_with_title"], | ||||
|                       ["postdate","announcement.default_widget.postdate"]], | ||||
|                       "widget_fields_link_method":{"title":{"method":"panel_announcement_front_end_bulletin_path","args":"self"}, | ||||
|                       "bulletin_category_with_title":{"method":"panel_announcement_front_end_bulletins_path", | ||||
|                     "args":{"category_id":["bulletin_category","id"]} | ||||
|   }}, | ||||
| "widget_options":null, | ||||
| "widget_options_fields_i18n":null, | ||||
| "widgets":{"index":["1","2"], | ||||
| "default_widget":["typeA","typeC","typeB_style2","typeB_style3","typeB_style4"] | ||||
| }} | ||||
|  | @ -1,7 +1,20 @@ | |||
| class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendController | ||||
|   include OrbitControllerLib::DivisionForDisable | ||||
|   # if someone want to use json format replace with rss, please add :get_bulletins_json to below | ||||
|   before_filter :for_app_manager,:except => [:index,:get_categorys_json] | ||||
| 
 | ||||
| # <<<<<<< HEAD | ||||
| #   before_filter :for_app_manager,:except => [:index,:get_categorys_json] | ||||
| #   before_filter :set_module_app | ||||
| 
 | ||||
| #   def set_module_app | ||||
| #     @module_app = ModuleApp.where(:title=>'Announcement').first | ||||
| #   end | ||||
| # ======= | ||||
|   before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json] | ||||
| 
 | ||||
| 
 | ||||
|   before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json,:get_bulletins_json] | ||||
|   before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json] | ||||
|   before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json] | ||||
| 
 | ||||
|   def index | ||||
|     @bulletin_categorys = get_categories_for_index("BulletinCategory") | ||||
|  |  | |||
|  | @ -70,13 +70,6 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController | |||
|      | ||||
|   end | ||||
|    | ||||
|   def bulletins_and_web_links | ||||
|     @tags = AnnouncementTag.any_in(key: ['students', 'alumni', 'employee', 'guest']).asc(:order) | ||||
|     @selected_tag = AnnouncementTag.find(params[:id]) rescue @tags[0] | ||||
|     @bulletins = @selected_tag.get_visible_bulletins(:postdate).available_for_lang(I18n.locale).can_display.page(params[:page]).per(5) rescue nil | ||||
|     @web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links(:created_at).available_for_lang(I18n.locale).page(params[:page]).per(5) rescue nil | ||||
|   end | ||||
|    | ||||
|   def reload_bulletins | ||||
|     @selected_tag = AnnouncementTag.find(params[:tag_id]) | ||||
|     @bulletins = @selected_tag.get_visible_bulletins(:postdate).available_for_lang(I18n.locale).can_display.page(params[:page]).per(5) rescue nil | ||||
|  |  | |||
|  | @ -1,23 +0,0 @@ | |||
| <div class="tag_block"> | ||||
| 	<ul id='bulletins_web_links_tags' class="tag_list"> | ||||
| 		<%= render :partial => 'tag', :collection => @tags %> | ||||
| 	</ul> | ||||
| </div> | ||||
| 
 | ||||
| <div class="news_block"> | ||||
| 	<h3 class="news_title2"><%= link_to t("announcement.bulletins"), panel_announcement_front_end_bulletins_path, :class => 'more' %></h3> | ||||
| 	<ul id='bulletins_web_links_bulletins' class="news_list"> | ||||
| 		<%= render 'bulletins' if @bulletins %> | ||||
| 	</ul> | ||||
| </div> | ||||
| 
 | ||||
| <div class="links_block"> | ||||
| 	<h3 class="links_title"><%= t(:related_links) %></h3> | ||||
| 	<ul id='bulletins_web_links_web_links' class="links_list"> | ||||
| 		<%= render 'web_links' if @web_links %> | ||||
| 	</ul> | ||||
| </div> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
| 	<%= javascript_include_tag "news_link" %> | ||||
| <% end %> | ||||
|  | @ -1,3 +0,0 @@ | |||
| $('#bulletins_web_links_tags').html("<%= j render :partial => 'tag', :collection => @tags %>") | ||||
| $('#bulletins_web_links_bulletins').html("<%= j render 'bulletins' if @bulletins %>") | ||||
| $('#bulletins_web_links_web_links').html("<%= j render 'web_links' if @web_links %>") | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue