diff --git a/app/controllers/olympiamanagements_controller.rb b/app/controllers/olympiamanagements_controller.rb index d7f2438..52326ff 100644 --- a/app/controllers/olympiamanagements_controller.rb +++ b/app/controllers/olympiamanagements_controller.rb @@ -1,13 +1,45 @@ -class OlympiamanagementsController < PagesController +class OlympiamanagementsController < ApplicationController include ActionView::Context #vary important (only add this can access @@session from view) - include ApplicationHelper before_action :set_sign_up_setting + prepend_view_path "app/templates" #for_render_pages + layout :get_layout #for_render_pages + before_action :check_login, except: :login #include "#{Rails.root}/app/helpers/application_helper.rb" + def check_login + begin + @@error + rescue + @@error = nil + end + if request.session[:olympia_login_id].to_s.blank? + render_contents_in_index_page(render_to_string(:formats=> [:html] ,:partial=>'login',:locals=>{:@error=>@@error})) and return + end + end + def login + @@error = nil + if !params[:login_id].to_s.blank? + if OlympiaSchoolDataFields.where(:account_number=>params[:login_id]).length == 0 + @@error = "no_account" + else + if OlympiaSchoolDataFields.where(:account_number=>params[:login_id]).first.password != params[:login_pw] + @@error = "password_error" + else + session[:olympia_login_id] = params[:login_id] + end + end + end + if params[:PreviousPage].to_s.blank? + redirect_to :back + else + redirect_to params[:PreviousPage].to_s + end + end def initialize super @app_title = "olympiamanagement" end def set_sign_up_setting + @key = Site.first.template rescue "" #for_render_pages @sign_up_setting = SignUpSetting.last data_arr = [{:url=>'/olympiamanagements/school_connection_data',:name=>t('olympiamanagement.school_connection_data')}, {:url=>'/olympiamanagements/add_sign_up_student_data',:name=>t('olympiamanagement.add_sign_up_student_data')}, @@ -72,7 +104,7 @@ class OlympiamanagementsController < PagesController @newpage.name_translations = @instructions_name @newpage.save end - @error = nil + @error = @@error rescue nil @page_content if !(time_now_str <= end_time_str && time_now_str >= start_time_str) if @instructions_pages.empty? @@ -83,22 +115,22 @@ class OlympiamanagementsController < PagesController elsif @instructions_pages.length != 1 @instructions_pages.slice(1,@instructions_pages.length).each{|page| page.destroy} end - if !OrbitHelper.params[:login_id].to_s.blank? - if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).length == 0 + if !(OrbitHelper.params || params)[:login_id].to_s.blank? && @@session[:olympia_login_id].to_s.blank? + if OlympiaSchoolDataFields.where(:account_number=>(OrbitHelper.params || params)[:login_id]).length == 0 @error = "no_account" else - if OlympiaSchoolDataFields.where(:account_number=>OrbitHelper.params[:login_id]).first.password != OrbitHelper.params[:login_pw] + if OlympiaSchoolDataFields.where(:account_number=>(OrbitHelper.params || params)[:login_id]).first.password != (OrbitHelper.params || params)[:login_pw] @error = "password_error" else - @@session[:olympia_login_id] = OrbitHelper.params[:login_id] + @@session[:olympia_login_id] = (OrbitHelper.params || params)[:login_id] end end end if @@session[:olympia_login_id].to_s.blank? - @page_content = render_to_string(:formats=> [:html] ,:partial=>'login') + @page_content = render_to_string(:formats=> [:html] ,:partial=>'login',:locals=>{:@error=>@error}) else + @@error = nil @page_content = @breadcumb - end else if !@instructions_pages.empty? @@ -144,6 +176,9 @@ class OlympiamanagementsController < PagesController start_time_str = @time_arr.map{|t| @sign_up_setting["start_"+t]}.join(' ') end_time_str = @time_arr.map{|t| @sign_up_setting["end_"+t]}.join(' ') time_now_str = Time.now.strftime("%Y %m %d %H %M") + #@request = Rack::Request.new((OrbitHelper.request.env rescue nil) || (request.env rescue env)) + #@session = @request.session + #render :html => session.to_hash and return if !(!(time_now_str <= end_time_str && time_now_str >= start_time_str) || session[:olympia_login_id].to_s.blank?) redirect_to :back else @@ -236,6 +271,243 @@ class OlympiamanagementsController < PagesController viewarea.inner_html = contents render :html => doc.to_html.html_safe end + def change_to_language(final_html) #for_render_pages + if session[:zh_cn] + final_html = ZhConv.convert("zh-cn", final_html,false) + final_html.gsub!('/zh_tw/','/zh_cn/') + final_html.sub!('繁体中文','繁体中文') + end + final_html + end + def get_layout #for_render_pages + if request[:action] == "edit_view" + page = Page.find(params[:id]) + if page.page_id == "" || page.page_id == nil + false + else + File.join("../../templates", "#{@key}", "/home/page.html.erb") + end + # elsif request[:action] == "show" || request[:action] == "moduleShow" + # File.join("../../templates", "themes", "#{@key}", '/home/page.html.erb') + else + false + end + end + def render_final_page(original_view=get_view,page,layout) #for_render_pages + final_html_for_render = "" + OrbitHelper.set_css_to_render_to_empty + if layout + parts = $mobile.blank? ? (page.page_parts rescue []) : (page.mobile_page_parts rescue []) + @part_partials = {} + parts.each do |part| + subparts = part.sub_parts.asc(:created_at) + partials = [] + subparts.each do |subpart| + if subpart.kind == "module_widget" + OrbitHelper.set_current_widget subpart + OrbitHelper.set_widget_data_count subpart.data_count + OrbitHelper.set_widget_module_app subpart.module + OrbitHelper.set_widget_item_url subpart + OrbitHelper.render_meta_tags [] + OrbitHelper.set_widget_title subpart.title + OrbitHelper.set_widget_categories subpart.categories || ["all"] + OrbitHelper.set_widget_tags subpart.tags || ["all"] + custom_value = subpart.custom_string_field || subpart.custom_array_field rescue nil + if !custom_value.nil? + OrbitHelper.set_widget_custom_value custom_value + end + if @editmode + partials << "
" + render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s) + "
" + else + # widget_html = Rails.cache.fetch("subpart_#{subpart.module}_#{subpart.id.to_s}_"+I18n.locale.to_s,{ race_condition_ttl: 2, expires_in: 5.minutes}) do + # render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s) + # end + widget_html = render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s) + partials << widget_html + end + elsif subpart.kind == "text" + if @editmode + partials << "
" + subpart.content + "
" + else + # change from px and pt and cm to em #start + have_change = false + if Site.all.first.page_sets.last.auto_convert_flag + if subpart.content.include? 'px' + have_change = true + inner_text = subpart.content + get_px = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+px[;\" ]/).map{Regexp.last_match.to_s} + get_px = get_px.uniq.sort_by(&:length).reverse! + get_px.each do |child_px| + convert_em = child_px.enum_for(:scan,/[+-]?(\d*[.])?\d+px/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])/16}em"} + cp_child = child_px + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_px,cp_child) + end + subpart.content = inner_text + end + if subpart.content.include? 'pt' + have_change = true + inner_text = subpart.content + get_pt = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+pt[;\" ]/).map{Regexp.last_match.to_s} + get_pt = get_pt.uniq.sort_by(&:length).reverse! + get_pt.each do |child_pt| + convert_em = child_pt.enum_for(:scan,/[+-]?(\d*[.])?\d+pt/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])/12}em"} + cp_child = child_pt + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_pt,cp_child) + end + subpart.content = inner_text + end + if subpart.content.include? 'cm' + have_change = true + inner_text = subpart.content + get_cm = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+cm[;\" ]/).map{Regexp.last_match.to_s} + get_cm = get_cm.uniq.sort_by(&:length).reverse! + get_cm.each do |child_cm| + convert_em = child_cm.enum_for(:scan,/[+-]?(\d*[.])?\d+cm/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])*6/2.54}em"} + cp_child = child_cm + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_cm,cp_child) + end + subpart.content = inner_text + end + # change from px and pt and cm to em #end + if have_change + subpart.save + end + end + partials << subpart.content + end + end + end + @part_partials["data-pp='#{part.part_id}'"] = partials + end + @file = nil + @layout_html = nil + if original_view == "home" + @file = File.join("#{@key}", "/home/index.html.erb") + else + @file = File.join("#{@key}", "/home/page.html.erb") + end + @layout_html = render_to_string(@file , :formats => :html) + doc = Nokogiri::HTML(@layout_html, nil, "UTF-8") + head = doc.css("head") + @part_partials.each do |key, partial| + html_string = "" + partial.each do |p| + if !p.nil? + html_string = html_string + p + end + end + pp = doc.css("*[#{key}]") + if !pp.blank? + pp = pp[0] + pp.inner_html = html_string + end + end + if @editmode + pps = doc.css("*[data-pp]") + pps.each do |pp| + number = pp.attributes["data-pp"].value + if pp.inner_html.strip == "" + pp.inner_html = " " + else + inner_html = pp.inner_html + pp.inner_html = inner_html + " " + end + end + end + if original_view != "home" + viewarea = doc.css("*[data-content='true']")[0] + if params["target_controller"].to_s == "page_contents" + viewarea_id = Page.where("page_id"=>params["page_id"].to_s).first.id.to_s + @page_contents = PageContext.where("page_id" => viewarea_id).last + viewarea.inner_html = @page_contents.content.to_s rescue "" + # change from px and pt and cm to em #start + have_change = false + if Site.all.first.page_sets.last.auto_convert_flag + if viewarea.inner_html.include? 'px' + have_change = true + inner_text = viewarea.inner_html + get_px = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+px[;\" ]/).map{Regexp.last_match.to_s} + get_px = get_px.uniq.sort_by(&:length).reverse! + get_px.each do |child_px| + convert_em = child_px.enum_for(:scan,/[+-]?(\d*[.])?\d+px/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])/16}em"} + cp_child = child_px + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_px,cp_child) + end + viewarea.inner_html = inner_text + end + if viewarea.inner_html.include? 'pt' + have_change = true + inner_text = viewarea.inner_html + get_pt = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+pt[;\" ]/).map{Regexp.last_match.to_s} + get_pt = get_pt.uniq.sort_by(&:length).reverse! + get_pt.each do |child_pt| + convert_em = child_pt.enum_for(:scan,/[+-]?(\d*[.])?\d+pt/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])/12}em"} + cp_child = child_pt + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_pt,cp_child) + end + viewarea.inner_html = inner_text + end + if viewarea.inner_html.include? 'cm' + have_change = true + inner_text = viewarea.inner_html + get_cm = inner_text.enum_for(:scan,/:.*[+-]?(\d*[.])?\d+cm[;\" ]/).map{Regexp.last_match.to_s} + get_cm = get_cm.uniq.sort_by(&:length).reverse! + get_cm.each do |child_cm| + convert_em = child_cm.enum_for(:scan,/[+-]?(\d*[.])?\d+cm/).map{Regexp.last_match.to_s}.sort_by(&:length).reverse! + calc_em = convert_em.collect{|v| "#{Float(v[0...v.length-2])*6/2.54}em"} + cp_child = child_cm + (0...convert_em.length).each do |i| + cp_child = cp_child.gsub(convert_em[i],calc_em[i]) + end + inner_text = inner_text.gsub(child_cm,cp_child) + end + viewarea.inner_html = inner_text + end + # change from px and pt and cm to em #end + if have_change && (viewarea.inner_html != "") + @page_contents.content = viewarea.inner_html + @page_contents.save + end + end + viewarea.inner_html = render_to_string(original_view) rescue "
" + else + viewarea.inner_html = render_to_string(original_view) rescue "
" + end + head[0].inner_html = OrbitHelper.meta_tags_html + head.inner_html + end + head[0].inner_html = head.inner_html + OrbitHelper.get_css_to_render_in_head + link = doc.css("link")[0] + link.attributes["href"].value = current_site.favicon.url.nil? ? "/assets/favicon.ico" : current_site.favicon.url + final_html_for_render = doc.to_html + else + final_html_for_render = render_to_string(original_view) rescue "
" + end + final_html_for_render = change_to_language(final_html_for_render) + if @editmode + session[:mobile] = $temp_mobile + end + format_date(final_html_for_render,(original_view == "home" ? "home" : page.module)) rescue final_html_for_render + end def updata_school_data @readonly_fields = ['account_number','password','school_name','school_code','school_address','class_number','enrollment_limited'] @olympia_school_data_field = OlympiaSchoolDataFields.where(:account_number=>params[:olympia_user_name]).first diff --git a/app/views/olympiamanagements/_login.html.erb b/app/views/olympiamanagements/_login.html.erb index 1954d3c..0da2969 100644 --- a/app/views/olympiamanagements/_login.html.erb +++ b/app/views/olympiamanagements/_login.html.erb @@ -1,5 +1,5 @@
-
+


@@ -8,7 +8,9 @@

- "> + "> + +

diff --git a/auto_create_Class_Setting.js b/auto_create_Class_Setting.js index abf90ac..1c12a1d 100644 --- a/auto_create_Class_Setting.js +++ b/auto_create_Class_Setting.js @@ -1,12 +1,12 @@ for(var i=1;i<=133;i+=4){ var class_number_range = [i,i+3]; var enrollment_available = (i+3)/4; - var params_to_send = {'type':'add_school_data','class_number_range':class_number_range,'enrollment_available':enrollment_available}; + var params_to_send = {'type':'class_setting','class_number_range':class_number_range,'enrollment_available':enrollment_available}; var post_data = $.post('/admin/olympiamanagements/update_school_data',params_to_send); } var class_number_range = [137,200]; var enrollment_available = 35; -var params_to_send = {'type':'add_school_data','class_number_range':class_number_range,'enrollment_available':enrollment_available}; +var params_to_send = {'type':'class_setting','class_number_range':class_number_range,'enrollment_available':enrollment_available}; var post_data = $.post('/admin/olympiamanagements/update_school_data',params_to_send); post_data.done(function(){ console.log('done');