Merge branch 'development' of gitlab.tp.rulingcom.com:saurabh/orbit4-5

This commit is contained in:
Harry Bomrah 2014-12-26 16:56:15 +08:00
commit f687a8f9ad
10 changed files with 113 additions and 54 deletions

View File

@ -34,7 +34,7 @@ gem 'mongoid', github: "mongoid/mongoid"
gem "mini_magick", "3.5.0" gem "mini_magick", "3.5.0"
gem 'carrierwave' gem 'carrierwave'
gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid' gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'zip-zip'
gem 'kaminari' gem 'kaminari'
gem "impressionist" gem "impressionist"
gem "chartkick" gem "chartkick"

View File

@ -25,7 +25,10 @@ var FormValidator = function(form){
nospace : function(value){ nospace : function(value){
return (/\s/.test(value) ? false : true); return (/\s/.test(value) ? false : true);
}, },
email : function(value){ lowercase : function(value){
return (value == value.toLowerCase() ? true : false);
},
email : function(){
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(value); return re.test(value);
} }
@ -40,35 +43,39 @@ var FormValidator = function(form){
var _attachSubmitHandler = function(){ var _attachSubmitHandler = function(){
fv.form.on("submit",function(){ fv.form.on("submit",function(){
failed_elements = []; return fv.isFormValidated();
$.each(elements_data,function(key,element){ })
var validators = element.validators, }
messages = element.messages,
el = fv.form.find("#" + key); this.isFormValidated = function(){
for(i = 0; i < validators.length; i++){ failed_elements = [];
var error_span = (fv.form.find("div[for=" + key + "]").length ? $("div[for=" + key + "]") : $("<div class='validator_error_class text-error' for='" + key + "'></div>")); $.each(elements_data,function(key,element){
if(typeof fv.validate_functions[validators[i]] == "function"){ var validators = element.validators,
if(!fv.validate_functions[validators[i]](el.val(),el)){ messages = element.messages,
error_span.text(messages[i]); el = fv.form.find("#" + key);
el.after(error_span); for(i = 0; i < validators.length; i++){
failed_elements.push(el); var error_span = (fv.form.find("div[for=" + key + "]").length ? $("div[for=" + key + "]") : $("<div class='validator_error_class text-error' for='" + key + "'></div>"));
break; if(typeof fv.validate_functions[validators[i]] == "function"){
}else{ if(!fv.validate_functions[validators[i]](el.val(),el)){
error_span.remove(); error_span.text(messages[i]);
} el.after(error_span);
failed_elements.push(el);
break;
}else{ }else{
console.info("Not validating for " + validators[i] + ". Skipping."); error_span.remove();
} }
}else{
console.info("Not validating for " + validators[i] + ". Skipping.");
} }
})
if(failed_elements.length){
var offset = failed_elements[0].offset().top - fv.form.offset().top + fv.form.scrollTop();
fv.form.parent().animate({scrollTop:offset-50}, '300', 'swing');
return false;
}else{
return true;
} }
}) })
if(failed_elements.length){
var offset = failed_elements[0].offset().top - fv.form.offset().top + fv.form.scrollTop();
fv.form.parent().animate({scrollTop:offset-50}, '300', 'swing');
return false;
}else{
return true;
}
} }
var _putFieldsValidatorAndMessage = function(){ var _putFieldsValidatorAndMessage = function(){

View File

@ -106,7 +106,9 @@ class Admin::SitesController < OrbitAdminController
else else
result = "success" result = "success"
# Bundler.with_clean_env { `cd #{Rails.root} && bundle update` } # Bundler.with_clean_env { `cd #{Rails.root} && bundle update` }
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=built_in_extensions.rb bundle update && bundle` } Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=built_in_extensions.rb bundle update && bundle` }
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=downloaded_extensions.rb bundle update && bundle` }
end end
render :text => result render :text => result

View File

@ -190,7 +190,6 @@ class MembersController < ApplicationController
def member_data(member, fields_to_show) def member_data(member, fields_to_show)
profile_data = [] profile_data = []
fields_to_show.each do |field| fields_to_show.each do |field|
# debugger
case field['type'] case field['type']
when 'profile' when 'profile'
field_data = member.get_attribute_data(field) rescue {} field_data = member.get_attribute_data(field) rescue {}

View File

@ -11,7 +11,7 @@ class PagesController < ApplicationController
before_filter :set_edit_mode before_filter :set_edit_mode
def index def index
@pages = Page.all @pages = Page.all
# render json: @pages # render json: @pages
end end
@ -75,26 +75,13 @@ class PagesController < ApplicationController
end end
params[:url] = page.url params[:url] = page.url
categories = [] categories = []
if page.module == "member" page.categories.each do |c|
if page.categories.first == "all" category = Category.find(c) rescue nil
categories = ["all"] if !category.nil? && !category.disable
else categories << c
page.categories.each do |c|
category = Role.find(c) rescue nil
if !category.nil? && !category.disabled
categories << c
end
end
end end
else
page.categories.each do |c|
category = Category.find(c) rescue nil
if !category.nil? && !category.disable
categories << c
end
end
categories = ["all"] if categories.blank?
end end
categories = ["all"] if categories.blank?
@manifest = @key @manifest = @key
OrbitHelper.set_params params,current_user OrbitHelper.set_params params,current_user
OrbitHelper.set_site_locale locale OrbitHelper.set_site_locale locale
@ -190,30 +177,38 @@ class PagesController < ApplicationController
"id" => cat.id.to_s "id" => cat.id.to_s
} }
end end
tags = module_app.tags.collect do |t|
{
"name" => t.name,
"id" => t.id.to_s
}
end
else else
categories = [] categories = []
tags = []
end end
end end
roles = roles.nil? ? [] : roles roles = roles.nil? ? [] : roles
categories = categories.nil? ? [] : categories categories = categories.nil? ? [] : categories
tags = tags.nil? ? [] : tags
if module_app.data_count.nil? if module_app.data_count.nil?
render :json => {"categories" => categories, "tags" => module_app.tags,"roles" => roles,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>false}, "locale" => I18n.locale.to_s}.to_json render :json => {"categories" => categories, "tags" => tags,"roles" => roles,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>false}, "locale" => I18n.locale.to_s}.to_json
else else
render :json => {"categories" => categories, "tags" => module_app.tags,"roles" => roles,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>true,"start"=>module_app.data_count.begin, "end" => module_app.data_count.end}, "locale" => I18n.locale.to_s}.to_json render :json => {"categories" => categories, "tags" => tags,"roles" => roles,"layouts" => (get_layouts module_app.key),"data_count" => {"present"=>true,"start"=>module_app.data_count.begin, "end" => module_app.data_count.end}, "locale" => I18n.locale.to_s}.to_json
end end
end end
def new def new
@page = Page.new( @page = Page.new(
:enabled_for_mobile=>true, :enabled_for_mobile=>true,
:menu_enabled_for=>["en", "zh_tw"], :menu_enabled_for=>["en", "zh_tw"],
:enabled_for=>["en", "zh_tw"], :enabled_for=>["en", "zh_tw"],
:enabled_for_sitemap=>["en", "zh_tw"] :enabled_for_sitemap=>["en", "zh_tw"]
) )
@pages = Page.where(:page_id.ne => "" , :page_id.exists => true) @pages = Page.where(:page_id.ne => "" , :page_id.exists => true)
@modules = ModuleApp.all.frontend_enabled.order_by(:key=>'asc') @modules = ModuleApp.all.frontend_enabled.order_by(:key=>'asc')
end end
@ -264,7 +259,7 @@ class PagesController < ApplicationController
end end
end end
private private
def get_layouts(module_app) def get_layouts(module_app)
layout_types = [] layout_types = []
@ -436,6 +431,7 @@ class PagesController < ApplicationController
p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, :member_sort_position, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: valid_locales, external_url_translations: valid_locales) p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, :member_sort_position, enabled_for_sitemap: [], enabled_for: [],menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: valid_locales, external_url_translations: valid_locales)
p["role_status"] = p["role_status"] || [] p["role_status"] = p["role_status"] || []
p["categories"] = p["categories"] || [] p["categories"] = p["categories"] || []
p["tags"] = p["tags"] || []
p["enabled_for"] = p["enabled_for"] || [] p["enabled_for"] = p["enabled_for"] || []
p["menu_enabled_for"] = p["menu_enabled_for"] || [] p["menu_enabled_for"] = p["menu_enabled_for"] || []
p["enabled_for_sitemap"] = p["enabled_for_sitemap"] || [] p["enabled_for_sitemap"] = p["enabled_for_sitemap"] || []

View File

@ -1,3 +1,6 @@
require "net/http"
require 'open-uri'
require 'zip/zip'
class StoreApiController < ApplicationController class StoreApiController < ApplicationController
def confirmation def confirmation
site_token = params[:site_token] site_token = params[:site_token]
@ -11,4 +14,49 @@ class StoreApiController < ApplicationController
render :json => {"success" => false}.to_json render :json => {"success" => false}.to_json
end end
end end
def install_module
file = File.join(Rails.root,"downloaded_extensions.rb")
g = "gem '#{params[:module_key]}', git: '#{params[:git_path]}'"
File.open(file,"a+") { |f| f.puts(g) }
if !directory_exists?(File.join(Rails.root,"app","templates","#{Site.first.template}","modules","#{params[:module_key]}"))
download_template(params[:template],params[:template_filename])
end
bundle_install
render :json => {"success" => true} .to_json
end
private
def bundle_install
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=downloaded_extensions.rb bundle update && bundle` }
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
sleep 5
end
def download_template(url,name)
dir = File.join(Rails.root,"public","template_cache")
destination = File.join(Rails.root,"app","templates","#{Site.first.template}","modules")
if !directory_exists?(dir)
Dir.mkdir dir
end
zipfile = File.join(Rails.root, "public" , "template_cache", name)
open(zipfile, 'wb') do |fo|
fo.print open(url).read
end
unzip_file(zipfile,destination)
end
def directory_exists?(directory)
File.directory?(directory)
end
def unzip_file (file, destination)
Zip::ZipFile.open(file) { |zip_file|
zip_file.each { |f|
f_path=File.join(destination, f.name)
FileUtils.mkdir_p(File.dirname(f_path))
zip_file.extract(f, f_path) unless File.exist?(f_path)
}
}
end
end end

View File

@ -64,6 +64,8 @@ module ApplicationHelper
end end
site_footer = site_footer.nil? ? "" : site_footer site_footer = site_footer.nil? ? "" : site_footer
html = html.gsub("{{footer-data}}",site_footer) html = html.gsub("{{footer-data}}",site_footer)
counter = Page.root.view_count.to_s rescue ""
html = html.gsub("{{site-counter}}",counter)
html.html_safe html.html_safe
end end

View File

@ -1,5 +1,6 @@
<footer class="layout-footer"> <footer class="layout-footer">
<div class="container layout-footer-inner"> <div class="container layout-footer-inner">
<div class="layout-footer-content">{{footer-data}}</div> <div class="layout-footer-content">{{footer-data}}</div>
<div>{{site-counter}}</div>
</div> </div>
</footer> </footer>

View File

@ -19,8 +19,11 @@
<div class="tab-content" data-list="plugins" data-level="0"> <div class="tab-content" data-list="plugins" data-level="0">
<div class="tab-pane {{plugin_class}}" id="{{plugin_name}}"> <div class="tab-pane {{plugin_class}}" id="{{plugin_name}}">
<table class="table table-hover table-striped"> <table class="table table-hover table-striped">
<tbody data-list="plugin_data_intro" data-level="1">
<tr class="{{brief_display}}"><td>{{data_intro_title}}</td></tr>
</tbody>
<tbody data-list="plugin_data" data-level="1"> <tbody data-list="plugin_data" data-level="1">
<tr><td><a href="{{link_to_show}}">{{data_title}}</a></td></tr> <tr><td class="{{complete_display}}"><a href="{{link_to_show}}">{{data_title}}</a></td></tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -27,6 +27,7 @@ Orbit::Application.routes.draw do
get "/module/:name" => "home#index" get "/module/:name" => "home#index"
get "/module/:name/show" => "home#show" get "/module/:name/show" => "home#show"
post "/store/confirmation" => "store_api#confirmation" post "/store/confirmation" => "store_api#confirmation"
post "/store/install_module" => "store_api#install_module"
# The priority is based upon order of creation: first created -> highest priority. # The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes". # See how all your routes lay out with "rake routes".