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 << ""
+ 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 @@
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');