Compare commits

..

20 Commits
master ... ntue

Author SHA1 Message Date
manson 5897503316 Fix orbit_bar_bootstrap css path 2014-08-01 14:57:56 +08:00
manson 6dedfbe7fc Fix orbitbar css 2014-06-30 17:34:58 +08:00
manson b1c6f288e8 Fix announcement preview for IE 2014-06-25 11:36:06 +08:00
rulingcom d98faba129 Update site search chinese input issue, add pagination, user feed back and performance 2014-06-25 09:29:16 +08:00
spen 47d9eeea6c Fix IE use CKeditor can not upload 2014-06-24 17:57:35 +08:00
manson 6446d370c6 Upgrade CKeditor to 4.4.1, support IE 8,9,10,11 2014-06-24 17:57:29 +08:00
manson b769da091d Fix show page not displaying content 2014-06-24 17:57:20 +08:00
manson b97019553c Fix announcement search page 2014-06-24 17:57:02 +08:00
manson 6cefd67dc6 Fix slow impressionist count 2014-06-24 17:56:33 +08:00
manson 8f551569bb Fix resque-scheduler version, 3.0.0 is not compatible 2014-06-24 17:56:24 +08:00
manson 201935b3fb Ignore compressed log files 2014-06-24 17:56:15 +08:00
manson 73fcefca97 Fix mobile page 500 error when there's no adbanner named "Home" 2014-06-24 17:55:34 +08:00
Manson Wang 7da24174db Add archive module to built-in-modules 2014-05-08 11:15:49 +08:00
spen feefc99db8 fix app authorized 2014-05-08 10:53:44 +08:00
spen 9205f47590 fix reset password 2014-05-08 10:51:49 +08:00
spen a8a35b7aa0 update facebook setting 2014-03-31 11:25:26 +08:00
spen dea2652581 Fix default widget get_filter_data 2014-03-31 11:22:39 +08:00
spen 05ad8c27dd add icon title 2014-03-10 18:18:00 +08:00
Manson Wang 4ee22611a6 Update for template page 2014-02-21 15:16:26 +08:00
Manson Wang 214d24f928 ntue 2014-02-21 15:16:26 +08:00
59 changed files with 233 additions and 965 deletions

1
.gitignore vendored
View File

@ -26,4 +26,3 @@ uploads/**/*
config/mongoid.yml
*.
sftp-config.json
.ruby-version

View File

@ -1,6 +1,8 @@
source 'http://rubygems.org'
gem 'rails', "~> 3.2.16"
gem 'savon', '~> 2.2.0'
gem "brakeman"
gem 'mime-types'
@ -35,7 +37,7 @@ eval(File.read(File.dirname(__FILE__) + '/built_in_extensions.rb'))
eval(File.read(File.dirname(__FILE__) + '/downloaded_extensions.rb'))
#form helpers
gem 'dynamic_form'
gem 'dynamic_form', :git => 'git@gitlab.tp.rulingcom.com:saurabh/dynamic-form.git'
gem 'fb_graph'
gem 'rack-gridfs'
@ -102,14 +104,14 @@ group :test, :development do
gem "rspec", "~> 2.0"
gem "rspec-rails", "~> 2.0"
gem "factory_girl_rails"
# gem "shoulda-matchers"
gem "shoulda-matchers"
gem "simplecov"
gem "delorean"
gem "watchr"
gem "spork"
gem "capybara"
#gem 'rack-mini-profiler'
gem "better_errors", "1.1.0"
gem "better_errors"
# gem 'yard'
# gem "bluecloth"
end

View File

@ -19,8 +19,8 @@ $(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
maxFileSize: 50000000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx|ppt|pptx|xls|xlsx|csv|txt|zip|rar|tar|gz|odt|tiff|key|page)$/i,
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx|ppt|pptx|xls|xlsx)$/i,
dropZone: $('#dropzone'),
headers:{
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")

View File

@ -28,8 +28,6 @@ CKEDITOR.editorConfig = function( config ) {
{ name: 'about' }
];
config.allowedContent = true;
config.skin = 'moono';
config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path(:module_app_id=>ModuleApp.where(:key=>'asset').first.id) %>";
@ -37,10 +35,6 @@ CKEDITOR.editorConfig = function( config ) {
//Font Config
config.font_names = 'Arial;Comic Sans MS;Courier New;Georgia;Helvetica;Lucida Sans Unicode;Tahoma;Times New Roman;Trebuchet MS;Verdana;微軟正黑體';
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
config.pasteFromWordPromptCleanup = true;
};
CKEDITOR.on('instanceReady',function(){

View File

@ -32,6 +32,7 @@ function preview() {
var resize = 500/bannerW
bannerW = Math.floor(bannerW*resize);
bannerH = Math.floor(bannerH*resize);
console.log(bannerW)
};
if(bannerH > 300) {
var resize = 300/bannerH

View File

@ -175,7 +175,6 @@
this._date = this.parseDate(newDate);
} else {
this._date = new Date(newDate);
this._date.setTime( this._date.getTime() - this._date.getTimezoneOffset()*60*1000 );
}
this.set();
this.viewDate = UTCDate(this._date.getUTCFullYear(), this._date.getUTCMonth(), 1, 0, 0, 0, 0);

View File

@ -7,12 +7,7 @@ $(function() {
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
var formData;
if(typeof(FormData) == "function"){
formData = new FormData( $('form.previewable')[0] );
}else{
formData = $('form.previewable').serialize()
}
var formData = new FormData( $('form.previewable')[0] );
$.ajax({
type: "post",

View File

@ -1,7 +1,7 @@
$(document).ready(function() {
$(".select_user_modal").on('click', function(){
var ids = [];
var users = $(this).siblings('.selected_users').children('span.selected_user');
var users = $('.selected_user');
users.each(function(i) {
ids.push(users.eq(i).attr('id'));
});
@ -10,20 +10,16 @@ $(document).ready(function() {
type: 'GET',
url: $(this).attr("rel"),
dataType: 'script',
data: {field: $(this).attr("field"), ids: ids},
data: {ids: ids},
success: function (msg) {
$("#member-filter").modal('show'); },
error: function(){
// TODO: i18n in javascript
alert("ERROR");
}
});
return false;
});
$(document).on('click', ".remove_user", function(){
$(this).parent().remove();
});
$("#remove_users").on('click', function(){
var ids = [];
var users = $('.selected_user input[type="checkbox"]:checked');

View File

@ -1,237 +0,0 @@
/* Member Filter */
#select_user #select_user_modal.modal {
width: 80%;
margin-left: -40%;
}
#select_user #select_user_modal .modal-body {
max-height: 425px;
}
#select_user #select_user_modal .modal-body form {
margin-bottom: 0px;
}
#select_user #select_user_modal .modal-body form fieldset {
min-height: 360px;
}
#select_user #select_user_modal .modal-body .radio.inline,
#select_user #select_user_modal .modal-body .checkbox.inline {
display: inline-block;
padding-top: 5px;
margin-bottom: 0;
vertical-align: middle;
min-width: 100px;
margin-left: 0;
}
#select_user #select_user_modal .modal-body .form-actions {
margin: 20px 0 0;
padding: 10px 0 0;
background-color: transparent;
text-align: right;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano {
width: 160px;
min-height: 425px;
float: left;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano .pane {
right: 6px;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs {
width: 140px;
float: left;
margin-bottom: 0;
margin-right: 0;
border-right: 1px solid #ddd;
border-bottom: none;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li {
float: none;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a {
min-width: 74px;
margin-right: 0;
margin-bottom: 3px;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a {
margin-right: -1px;
-webkit-border-radius: 4px 0 0 4px;
-moz-border-radius: 4px 0 0 4px;
border-radius: 4px 0 0 4px;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a:hover {
border-color: #eeeeee #dddddd #eeeeee #eeeeee;
}
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a,
#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a:hover {
border-color: #ddd transparent #ddd #ddd;
*border-right-color: #ffffff;
}
#select_user #select_user_modal .member-filter-options {
float: left;
display: inline-block;
width: 175px;
min-height: 425px;
margin-right: 10px;
padding: 0 10px 0 0;
}
#select_user #select_user_modal .member-filter-options select {
width: 165px;
}
#select_user #select_user_modal .member-filter-options .btn {
display: block;
}
#select_user #select_user_modal .member-filter-result {
padding-left: 15px;
min-height: 360px;
width: auto;
}
/* Check Box Card */
.checkbox-card {
margin: 0;
}
.checkbox-card li {
position: relative;
list-style: none;
color: #FFFFFF;
width: 180px;
height: 40px;
margin: 0 10px 10px 0;
float: left;
display: inline-block;
background-color: #cccccc;
overflow: hidden;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear;
}
.checkbox-card li.mark {
width: 0;
height: 0;
padding: 0;
margin: 0;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
opacity: 0;
visibility: hidden;
}
.checkbox-card li:hover {
background-color: #0088cc;
}
.checkbox-card li:after {
content: "";
display: block;
clear: both;
height: 0;
visibility: hidden;
}
.checkbox-card li.active:before {
-webkit-text-size-adjust : none;
font-family: FontAwesome;
font-weight: normal;
font-style: normal;
color: #FFF;
text-decoration: inherit;
content: "\f00c";
position: absolute;
right: 0px;
top: 0px;
line-height: 14px;
text-indent: 10px;
font-size: 10px;
width: 0px;
height: 0px;
border-style: solid;
border-width: 0 22px 22px 0;
border-color: transparent #51a351 transparent transparent;
}
.checkbox-card li.active label {
}
.checkbox-card li label {
margin-bottom: 0px;
overflow: hidden;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.checkbox-card li input {
opacity: 0;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
margin: 0;
z-index: 10;
}
.checkbox-card li label span {
-webkit-text-size-adjust : none;
font-size: 10px;
display: block;
width: 130px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #666666;
margin-top: -3px;
}
.checkbox-card li:hover label span,
.checkbox-card li:hover label span.user-name {
color: #FFFFFF;
}
.checkbox-card li label span.user-name {
font-size: 12px;
color: #363636;
padding: 2px 0 0;
margin-top: 0;
}
.checkbox-card li .user-pic {
float: left;
margin-right: 5px;
width: 40px;
height: 40px;
}
#selected_users .selected_user {
display: inline-block;
margin-bottom: 5px;
}
#selected_users .selected_user .remove_user {
font-size: 15px;
}
#selected_email_users .selected_user {
display: inline-block;
margin-bottom: 5px;
}
#selected_email_users .selected_user .remove_user {
font-size: 15px;
}
/*
.promoter {
border-color: #CCCCCC;
border-style: solid;
border-width: 0 1px;
padding: 0 10px 5px 10px;
}
.promoter > div {
border-bottom: 1px solid #CCCCCC;
}
.promoter > div:after {
content: "";
clear: both;
display: block;
visibility: hidden;
}
.promoter > div > span {
display: block;
margin-left: 70px;
padding-bottom: 5px;
}
.promoter p {
width: 70px;
float: left;
text-align:right;
}*/

View File

@ -4,7 +4,7 @@ class Admin::AdBannersController < OrbitBackendController
open_for_sub_manager
def index
@ad_banners = get_sorted_and_filtered("ad_banner")
@ad_banners = AdBanner.all.page(params[:page]).per(10)
end
def show

View File

@ -11,7 +11,7 @@ class Admin::AdImagesController < Admin::AdBannersController
end
def index
@ad_images = get_sorted_and_filtered("ad_image")
@ad_images = AdImage.all.page(params[:page]).per(10)
end
def edit

View File

@ -11,7 +11,7 @@ class Admin::DashboardsController < OrbitBackendController
check_backend_openness
@module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link')
@recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link')
@most_visited = get_most_visited('bulletin', 'page_context')
@most_visited = get_most_visited('bulletin', 'page_context','page')
end
def reload_all_content
@ -22,7 +22,7 @@ class Admin::DashboardsController < OrbitBackendController
end
def reload_most_visited
@most_visited = get_most_visited('bulletin', 'page_context')
@most_visited = get_most_visited('bulletin', 'page_context','page')
respond_to do |format|
format.js { render 'reload', locals: {div_id: 'most_visited'} }
end
@ -46,7 +46,8 @@ class Admin::DashboardsController < OrbitBackendController
end
def get_disk_usage
render :json => `df -m /home`.scan(/\d+%/).first.gsub('%','') rescue '0'
@usw = Usagewatch
render :json => @usw.uw_diskused_perc.to_s
end
def get_month_traffic

View File

@ -1,126 +0,0 @@
# encoding: utf-8
require "net/http"
require "uri"
require 'json'
class Admin::ImportController < OrbitBackendController
open_for_admin
def rss2_news
@url = params['url']
uri = URI.parse(@url)
@host = uri.host
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
data = response.body
data = JSON.parse(data)
@categories = data['categories']
@data = data['data']
@xxx = []
@new_category_ids = {}
l = I18n.locale
I18n.locale = :zh_tw
module_id = ModuleApp.where(:key=>"announcement").first.id
@categories.each do |category|
x = Category.where(:title => category["zh_tw"]).first
if x.nil?
@xxx << category
cat = Category.new
titles = {}
@site_valid_locales.each do |locale|
titles[locale] = category[locale]
end
cat.title_translations = titles
cat.module_app_id = module_id
cat.save!
@new_category_ids[category["id"]] = cat.id
else
@new_category_ids[category["id"]] = x.id
end
end
@user = User.where(:user_id => "rulingcom").first
@data.each do |row|
# next if row['files'].size == 0
bulletin = Bulletin.new
bulletin.title_translations = row['Title']
bulletin.subtitle_translations = row['Summary']
next if row['Title']==[] and row['Summary']==[] and row['Content']==[]
@site_valid_locales.each do |locale|
if row['Content'][locale]=="" and row['Summary'][locale]!=""
row['Content'][locale] = row['Summary'][locale]
row['Summary'][locale] = " "
end
temp = row['Content'][locale]
urls = Nokogiri::HTML(temp).css("img").map do |link|
if URI.parse(link.attr("src")).host == @host
link.attr("src")
end
end
urls.each do |url|
next if url.nil?
a = Asset.new
a.remote_data_url = url
a.assetable_type = "User"
a.assetable_id = @user.id
a.title = {"en" => a["data"], "zh_tw" => a["data"]}
a.save!
temp.sub!(url,a.data.to_s)
end
row['Content'][locale] = temp
end
bulletin.text_translations = row['Content']
bulletin.category_id = @new_category_ids[row["Category"]]
bulletin.view_count = row["Visits"].blank? ? 0 : row["Visits"]
bulletin.postdate = row["PostDate"]
bulletin.deadline = row['Deadline']
bulletin.remote_image_url = row["Pic"] if row["Pic"]
if row["URL"] && row['URL'] != ""
bl = BulletinLink.new
bl.url = row["URL"]
bl.title_translations = {"en" => "Link", "zh_tw" => "Link"}
bl.bulletin_id = bulletin.id
bl.save!
end
row['files'].each do |f|
bf = BulletinFile.new
if f['url'].split('title=').size == 1
f['url'] = f['url']+"檔案下載"
end
f['title'] = "檔案下載" if f['title'].blank?
bf.remote_file_url = f['url']
bf.title_translations = {"en" => f['title'], "zh_tw" => f['title']}
bf.bulletin_id = bulletin.id
bf.save!
# Rename uploaded file
file_ext = File.extname(f['url'].split('&')[0])
file = File.new("tmp/uploads/#{bf.title}#{file_ext}","w+b")
file.write(bf.file.read)
bf.file.cache!(file)
bf.save!
File.delete(file)
end
bulletin.tagged_ids = []
bulletin.save!
end
I18n.locale = l
redirect_to(panel_announcement_back_end_bulletins_url)
end
end

View File

@ -16,14 +16,6 @@ class Admin::MailCronLogsController < OrbitBackendController
end
end
def show
@mail_cron_log = MailCronLog.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
def destroy
@mail_cron_log = MailCronLog.find(params[:id])

View File

@ -16,13 +16,8 @@ class Admin::MailCronsController < OrbitBackendController
end
end
def show
@mail_cron = MailCron.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
def show
end
def new

View File

@ -1,6 +1,4 @@
class Admin::MemberSelectsController < OrbitBackendController
open_for_visitor :only => [:select_members, :set_roles, :set_users, :select_email_members, :set_email_roles, :set_email_users]
def index
@ -98,32 +96,4 @@ class Admin::MemberSelectsController < OrbitBackendController
render 'admin/member_selects/update_selected_users'
end
def select_email_members
selected_users = User.find(params[:ids]) rescue []
@field = params[:field]
roles = Role.all
@sorted_users = roles.inject({}) do |users, role|
# users[role] = role.users.where(:email.not => /guest|rulingcom/) - selected_users
users[role] = role.users.where(:email.not => /guest/) - selected_users
users
end
end
def set_email_roles
roles = Role.find(params[:email_role_ids]) rescue []
@field = params[:field]
@users = roles.inject([]) do |users, role|
# users += role.users.where(:email.not => /guest|rulingcom/).entries
users += role.users.where(:email.not => /guest/).entries
users
end
render 'admin/member_selects/update_selected_email_users'
end
def set_email_users
@users = User.find(params[:email_user_ids]) rescue []
@field = params[:field]
render 'admin/member_selects/update_selected_email_users'
end
end

View File

@ -2,16 +2,9 @@ class Admin::ModuleStoreController < OrbitBackendController
def index
if get_site.site_token?
if get_site.store_confirmation
@extensions = get_extensions
@store_confirmation = true
else
@extensions = []
@store_confirmation = false
end
@extensions = get_extensions
@downloaded_extensions = get_downloaded_extension
else
@store_confirmation = true
@extensions = []
@downloaded_extensions = get_downloaded_extension
end
@ -26,11 +19,11 @@ class Admin::ModuleStoreController < OrbitBackendController
extension = get_extension(params[:id]) rescue nil
extension_name = extension["key"].to_s
git_repository_url = extension["git_url"]
tag = extension["tag"]
version = extension["version"]
module_installed = File.read("downloaded_extensions.rb").include?(extension["key"])
if module_installed.eql?(false)
@download_link = "gem '#{extension_name}', :git => '#{git_repository_url}', :tag => '#{tag}'"
@download_link = "gem '#{extension_name}', '#{version}', :git => '#{git_repository_url}'"
File.open("downloaded_extensions.rb", 'a') do |file|
file.puts @download_link
end
@ -107,8 +100,8 @@ class Admin::ModuleStoreController < OrbitBackendController
if !extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}.blank?
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed']=true
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['enabled']=status
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed_version']=exist_ext[2].split(/[\'\"]/)[1]
if extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['tag'] != exist_ext[2].split(/[\'\"]/)[1]
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed_version']=exist_ext[1].split(/[\'\"]/)[1]
if extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['version'] != exist_ext[1].split(/[\'\"]/)[1]
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = false
else
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = true
@ -134,7 +127,7 @@ class Admin::ModuleStoreController < OrbitBackendController
status = !extension.start_with?("# ")
extension = extension.split(',')
downloaded_extensions << {'name' => extension[0].split(/[\'\"]/)[1], 'repo' => extension[1].split(/[\'\"]/)[1], 'tag' => extension[2].split(/[\'\"]/)[1], 'status' => status}
downloaded_extensions << {'name' => extension[0].split(/[\'\"]/)[1], 'version' => extension[1].split(/[\'\"]/)[1], 'repo' => extension[2].split(/[\'\"]/)[1], 'status' => status}
end
extensions.close

View File

@ -0,0 +1,10 @@
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def doorkeeper
oauth_data = request.env["omniauth.auth"]
@user = User.find_or_create_for_doorkeeper_oauth(oauth_data)
@user.update_doorkeeper_credentials(oauth_data)
@user.save
sign_in_and_redirect @user
end
end

View File

@ -31,7 +31,7 @@ class Admin::PagesController < Admin::ItemsController
params[:page][:tag] = []
end
end
@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 )

View File

@ -1,4 +1,6 @@
class Admin::PluginsController < OrbitMemberController
class Admin::PluginsController < ApplicationController
layout "back_end"
def index

View File

@ -3,8 +3,7 @@ class Admin::SitesController < OrbitBackendController
before_filter :authenticate_user!
before_filter :is_admin?
before_filter :get_site
before_filter :git_branch, only: [:update_manager, :get_update_history, :check_updates, :update_orbit]
before_filter :git_tags, only: [:update_manager, :get_update_history, :check_updates, :update_orbit]
before_filter :git_branch
# def index
# @site = Site.first
@ -133,10 +132,8 @@ class Admin::SitesController < OrbitBackendController
end
def check_updates
if (@current_tag.eql?(@latest_tag) == false)
%x(git fetch origin)
end
@new_updates = %x(git log "#{@current_tag}"..."#{@latest_tag}" --pretty=format:"%ad','%s" --date=short).split("\n").map{|log| log.gsub("'","").split(",")}.to_json
%x(git fetch origin)
@new_updates = %x(git log #{@branch}..origin/#{@branch} --pretty=format:"%ad','%s" --date=short).split("\n").map{|log| log.gsub("'","").split(",")}.to_json
render :json => @new_updates
end
@ -145,7 +142,7 @@ class Admin::SitesController < OrbitBackendController
need_stash = %x(git diff).blank?
%x(git stash) unless need_stash
%x(git fetch origin)
pull_result = %x(git pull -r --ff-only 2>&1 origin #{@latest_tag})
pull_result = %x(git pull -r --ff-only 2>&1 origin #{@branch})
%x(git stash pop) unless need_stash
if pull_result.include? "fatal: Not possible to fast-forward, aborting."
@ -188,10 +185,5 @@ class Admin::SitesController < OrbitBackendController
def git_branch
@branch = %x(git rev-parse --abbrev-ref HEAD).gsub("\n","")
end
def git_tags
@current_tag = %x(git describe --tags).gsub("\n","").split("-").first
@latest_tag = `git ls-remote --tags origin | awk '{print $2}'`.split(/\n/).last.gsub("refs/tags/","") rescue nil
end
end

View File

@ -8,13 +8,9 @@ class Admin::TemplateStoreController < OrbitBackendController
def index
@site = Site.first
if @site.site_token?
if @site.store_confirmation
@design_ids = Design.all.map{|d| d.template_store_id}
@templates = get_templates.parsed_response
render :layout => false
else
render :partial => "admin/site_registration/not_confirmed_store"
end
@design_ids = Design.all.map{|d| d.template_store_id}
@templates = get_templates.parsed_response
render :layout => false
else
render :partial => "admin/site_registration/site_registration"
end

View File

@ -1,87 +0,0 @@
class ApiController < ApplicationController
def index
end
def get_albums
albums = Album.all
output = Array.new
albums.each do |album|
if album.cover_path
cover_path = album.cover_path
else
cover_path = "/assets/gallery/default.jpg"
end
output << {
album_cover_file: "http://#{request.host_with_port}"+cover_path,
album_name: album.name,
album_link:"http://#{request.host_with_port}#{album_images_api_index_path(album.id)}",
}
end
render :json=>JSON.pretty_generate(output)
end
def get_images
album = Album.find(params[:id])
images = album.album_images.all
output = Array.new
images.each do |image|
if image.file.theater.present?
@image_file = image.file.theater.url
else
@image_file = image.file.url
end
output << {
image_title: image.title,
image_description: image.description,
image_file: { url: "http://#{request.host_with_port}#{@image_file}",
thumb: "http://#{request.host_with_port}#{image.file.thumb.to_s}"}}
end
render :json=>JSON.pretty_generate(output)
end
def get_location_categories
location_module = ModuleApp.where(key: "location").first
location_categories = location_module.categories.all
@data = Array.new
location_categories.each do |category|
I18n.locale = :en
name_en = category.title
I18n.locale = :zh_tw
name_zh_tw = category.title
category_id = category.id.to_s
@data << { name_en: name_en, name_zh_tw: name_zh_tw, category_id: category_id, location_link: "http://#{request.host_with_port}"+"#{get_locations_api_index_path}"+"?category_id=#{category_id}"}
end
render :json => JSON.pretty_generate(@data)
end
def get_locations
location_infos = LocationInfo.where(:category_id => params[:category_id])
@data = Array.new
location_infos.each do |location|
picurl = location.file.blank? ? '' : "http://#{request.host_with_port + location.file.url}"
thumburl = location.file.blank? ? '' : "http://#{request.host_with_port + location.file.thumb.url}"
@data << { id: location.id.to_s,
name: location.name,
pic_url: picurl,
thumb_url: thumburl,
longitude: location.longitude,
latitude: location.latitude,
description: location.description }
end
render :json => JSON.pretty_generate(@data)
end
end

View File

@ -321,8 +321,6 @@ class ApplicationController < ActionController::Base
sorted_objects.flatten!
sorted_objects.uniq!
objects = get_with_nil(objects, option, sorted_objects)
elsif option.eql?('size')
objects = objects.order_by([ [:width, params[:direction]], [:height, params[:direction]] ])
end
end
end
@ -363,12 +361,7 @@ class ApplicationController < ActionController::Base
end
if pagination
filtered_objects = filter_authorized_objects(objects)
if filtered_objects.is_a?(Array)
Kaminari.paginate_array(filtered_objects).page(params[:page]).per(10)
else
filter_authorized_objects(objects).page(params[:page]).per(10)
end
Kaminari.paginate_array(filter_authorized_objects(objects)).page(params[:page]).per(10)
else
filter_authorized_objects(objects)
end
@ -474,59 +467,15 @@ class ApplicationController < ActionController::Base
end
def prepare_for_mobile
@mobile_app_path = "/mobile/app"
@mobile_path = "/mobile"
if (@site.mobile_on.eql?(true) && @site.mobile_api_openness_on.eql?(true))
session[:mobile_param] = if request.path =~ /mobile/
'1'
elsif params[:mobile]
params[:mobile]
else
session[:mobile_param]
end
request.format = :mobile if mobile_device?
elsif (@site.mobile_on.eql?(false) && @site.mobile_api_openness_on.eql?(true))
session[:mobile_param] = if (request.path.eql?(@mobile_app_path))
if @site.mobile_on
session[:mobile_param] = if request.path =~ /mobile/
'1'
elsif request.path.eql?(@mobile_path)
redirect_to root_path(mobile: 0)
elsif params[:mobile]
params[:mobile]
else
session[:mobile_param]
end
request.format = :mobile if mobile_device?
elsif (@site.mobile_on.eql?(true) && @site.mobile_api_openness_on.eql?(false))
session[:mobile_param] = if (request.path.eql?(@mobile_path))
'1'
elsif (request.path.eql?(@mobile_app_path) && mobile_device?)
redirect_to root_path(mobile: 0)
elsif params[:mobile]
params[:mobile]
else
session[:mobile_param]
end
request.format = :mobile if mobile_device?
elsif (@site.mobile_on.eql?(false) && @site.mobile_api_openness_on.eql?(false))
session[:mobile_param] = if (request.path.eql?(@mobile_app_path))
redirect_to root_path(mobile: 0)
elsif request.path.eql?(@mobile_path)
redirect_to root_path(mobile: 0)
elsif params[:mobile]
params[:mobile]
else
session[:mobile_param]
end
request.format = :mobile if mobile_device?
end
end

View File

@ -0,0 +1,35 @@
# encoding: utf-8
class SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
require 'savon'
def create
@sys_id = params["sys_id"]
client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
client.operations
response = client.call(:chkidno, message: { sys_id: @sys_id })
@id = response.body[:chkidno_response][:return][:id]
login_uid = @id
resource = User.first(conditions:{user_id: login_uid})
if !resource.blank?
resource_name = resource.class.to_s.downcase
sign_in(resource_name, resource)
redirect_to after_sign_in_path_for(resource)
else
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
redirect_to :root
end
end
end

View File

@ -1,13 +0,0 @@
class StoreConfirmationController < ApplicationController
def confirm
if params[:site_token]
site = Site.first
site.confirm_store(params[:site_token])
render :json => {"success" => "true"}
else
render :json => {"success" => "false"}
end
end
end

View File

@ -224,7 +224,7 @@ module ApplicationHelper
end
def dislpay_view_count(object)
"#{t(:view_count)}: #{Impression.where(:impressionable_id=>object.id).count}"
"#{t(:view_count)}: #{object.view_count}"
end
def display_visitors(options={})
@ -248,24 +248,15 @@ module ApplicationHelper
end
def get_month_traffic
site = Site.first
if site.month_traffic_cache.blank? or (site.month_traffic_cache['updated_at'] < (Time.now-1.day) rescue true)
site.month_traffic_cache = {}
site.month_traffic_cache['result'] = []
(1..30).each do |i|
visits = Impression.where( created_at: {
'$gte' => Time.now.beginning_of_day-i.days,
'$lte' => Time.now.end_of_day-i.days}
).count
site.month_traffic_cache['result'].push([ Time.now.beginning_of_day-i.days, visits])
end
site.month_traffic_cache['updated_at'] = Time.now
site.save
result = []
(0..30).each do |i|
visits = Impression.where( created_at: {
'$gte' => Time.now.beginning_of_day-i.days,
'$lte' => Time.now.end_of_day-i.days}
).count
result.push([ Time.now.beginning_of_day-i.days, visits])
end
[:name=> t(:visitors_count),:data=>site.month_traffic_cache['result']]
[:name=> t(:visitors_count),:data=>result]
end
# def get_today_traffic

View File

@ -353,9 +353,9 @@ module OrbitBackendHelper
def is_authorized(object)
autorized = @module_app.authorizable_models.inject(false) do |autorized, klass|
if object.is_a?(klass.constantize)
autorized ||= object.user_can_sub_manage?(current_user)
autorized ||= (object.user_can_sub_manage?(current_user) and object.create_user_id == current_user.id)
else
autorized ||= object.send(klass.underscore).user_can_sub_manage?(current_user)
autorized ||= (object.send(klass.underscore).user_can_sub_manage?(current_user) and object.create_user_id == current_user.id)
end
autorized
end

View File

@ -37,13 +37,11 @@ class MailCronMailer < ActionMailer::Base
if @data
I18n.locale = @data.mail_content["lang"] if !@data.mail_content["lang"].blank?
@mail_from = !@data.mail_from.blank? ? @data.mail_from : @site['site_settings']['service_email']
@mail_reply_to = !@data.mail_reply_to.blank? ? @data.mail_reply_to : @site['site_settings']['reply_email']
@user = User.find(@data.create_user_id)
unit_field = User.get_member_list_attribute_field("staff","Unit")
unit = User.get_member_list_attribute_value(@data.create_user_id,unit_field.id).get_value_by_locale(I18n.locale) rescue nil
if !@data.mail_cron_files.blank?
@data.mail_cron_files.each_with_index do |mail_cron_file, i|
@ -54,35 +52,31 @@ class MailCronMailer < ActionMailer::Base
end
if !@data.mail_content["text"].blank?
mail( :from => "\"#{@site.title}\" <#{@mail_from}>", :reply_to => @mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
mail( :from => "\"#{unit}\" <#{@data.mail_from}>", :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
format.html { render :text => @data.mail_content["text"] }
end
elsif !@data.mail_content["template"].blank?
mail( :from => "\"#{@site.title}\" <#{@mail_from}>", :reply_to => @mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
mail( :from => "\"#{unit}\" <#{@data.mail_from}>", :reply_to => @data.mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
format.html { render :template => @data.mail_content["template"], :collection => @data.mail_content }
end
end
@mail_cron_log = {
:mail_subject => @data.mail_subject,
:mail_to => group_mail,
:mail_user => "#{@user.name} <#{@user.email}>",
:mail_user => "#{!unit.blank? ? unit : @user.name} <#{@data.mail_from}>",
# :mail_user => @user.name,
:mailer_count => group_mail.split(",").size,
:mail_from_app => @data.mail_from_app
}
@mail_cron_log = MailCronLog.new(@mail_cron_log)
@mail_cron_log.save
@mail_to_count = @data.mail_to.split(',') - group_mail.split(',')
if @mail_to_count.count == 0
@data.destroy
else
@data.mail_to = @mail_to_count.join(',')
@data.save
end
@data.destroy
end

View File

@ -30,30 +30,6 @@ class MailCron
end
end
def self.get_send_group_mail(send_mails, other_send_mails = '')
@group_mail = Array.new
send_mails.each do |email_user_id|
if !email_user_id.blank?
@user = User.find(email_user_id) rescue nil
@group_mail << @user.email if !@user.blank?
end
end if !send_mails.blank?
other_send_mails.split(",").collect do |oa|
@group_mail << oa
end if !other_send_mails.blank?
@group_mail.uniq
end
def self.send_mail_now(mail_cron_id)
mail_data = MailCron.find(mail_cron_id)

View File

@ -48,10 +48,6 @@ class Site
field :mobile_bar_color, :type => Array, :default=>[]
field :site_token
field :mobile_on, :type => Boolean, :default => false
field :store_confirmation, :type => Boolean, :default => false
field :meta_viewport, :type => Boolean, :default => false
field :month_traffic_cache
belongs_to :design
has_many :site_metas, :autosave => true, :dependent => :destroy
@ -59,13 +55,6 @@ class Site
index({ access_token: 1}, { unique: true })
def confirm_store(site_token)
if self.site_token.eql?(site_token)
self.store_confirmation = true
self.save
end
end
def minimum_enabled_locales
size = self.in_use_locales.length
if size < 1

View File

@ -1,31 +0,0 @@
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<h3><%= t(:email_log) %></h3>
<ul>
<li>
<%= t(:mail_from_app) %>
<%= @mail_cron_log.mail_from_app %>
</li>
<li>
<%= t(:mail_user) %>
<%= @mail_cron_log.mail_user %>
</li>
<li>
<%= t(:sent_date) %>
<%= display_date_time(@mail_cron_log.created_at) %>
</li>
<li>
<%= t(:subject) %>
<%= @mail_cron_log.mail_subject %>
</li>
<li>
<%= t(:mail_to) %>
<p><%= @mail_cron_log.mail_to.gsub(/,/, "<br />").html_safe %></p>
</li>
</ul>
<%= link_to t(:close), '#', :class=>"btn", :onclick=>"window.close();" %>

View File

@ -1,28 +0,0 @@
<% content_for :side_bar do %>
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
<% end %>
<h3><%= t(:email_queue) %></h3>
<ul>
<li>
<%= t(:mail_from_app) %>
<%= @mail_cron.mail_from_app %>
</li>
<li>
<%= t(:sent_date) %>
<%= display_date_time(@mail_cron.created_at) %>
</li>
<li>
<%= t(:subject) %>
<%= @mail_cron.mail_subject %>
</li>
<li>
<%= t(:mail_to) %>
<p><%= @mail_cron.mail_to.gsub(/,/, "<br />").html_safe %></p>
</li>
</ul>
<%= link_to t(:close), 'javascript:void(0);', :class=>"btn", :onclick=>"window.close();" %>

View File

@ -1,15 +0,0 @@
<% content_for :page_specific_javascript do -%>
<%= javascript_include_tag "lib/jquery.nanoscroller" %>
<%= javascript_include_tag "lib/checkbox.card" %>
<% end -%>
<% content_for :page_specific_css do -%>
<%= stylesheet_link_tag "member_select" %>
<% end %>
<div>
<div id="selected_email_users" class="selected_users">
<%= render partial: 'admin/member_selects/email_user', collection: users, locals: {field: field} %>
<%= hidden_field_tag field %>
</div>
<%= link_to t(:add), '#', class: 'btn btn-primary btn-small select_user_modal', rel: select_email_members_admin_member_selects_path, field: field %>
</div>

View File

@ -1,5 +0,0 @@
<span class="alert alert-info selected_user" id="<%= email_user.id %>">
<%= content_tag :span, '×', class: 'close remove_user' %>
<%= email_user.name %>
<%= hidden_field_tag field, email_user.id %>
</span>

View File

@ -28,7 +28,6 @@
<div class="form-actions">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
<% end %>
</div>
@ -54,7 +53,6 @@
<div class="form-actions condition">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
</fieldset>
<% end %>

View File

@ -1,80 +0,0 @@
<div id="member-filter" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3><%= t('list.user') %></h3>
</div>
<div class="modal-body">
<div class="tabbable tabs-left">
<div class="nano">
<div class="content">
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="#all" data-toggle="tab"><%= t('list.role') %></a></li>
<% @sorted_users.each_key do |role| %>
<li class=""><a href="#r_<%= role.id %>" data-toggle="tab"><%= role.title %></a></li>
<% end %>
</ul>
</div>
</div>
<div class="tab-content">
<div class="tab-pane fade in active" id="all">
<%= form_tag role_form_url, remote: true do %>
<fieldset>
<% @sorted_users.each_key do |role| %>
<label class="checkbox inline">
<%= check_box_tag 'email_role_ids[]', role.id , false %> <%= role.title %>
</label>
<% end %>
</fieldset>
<div class="form-actions">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
<% end %>
</div>
<% @sorted_users.each do |role, users| %>
<div class="tab-pane fade" id="r_<%= role.id %>">
<%= form_tag user_form_url, remote: true do %>
<fieldset class="clearfix">
<div class="member-filter-result nano">
<div class="content">
<ul class="checkbox-card clearfix">
<% users.each do |user| %>
<li class="check-item">
<label>
<%= image_tag (user.avatar.file ? user.avatar : "menber-pic.png"), class: "user-pic" %>
<span class="user-name"><%= user.name %></span>
</label>
<%= check_box_tag 'email_user_ids[]', user.id , false %>
</li>
<% end %>
</ul>
</div>
</div>
<div class="form-actions condition">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
</fieldset>
<% end %>
</div>
<% end %>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".modal").on("hidden", function () {
$("#select_email_user").remove();
});
$('#member-filter').on('shown', function() {
$('#member-filter').off('shown')
$(this).find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
$(this).find('.checkbox-card').cardCheck();
});
});
</script>

View File

@ -1,15 +0,0 @@
<% content_for :page_specific_javascript do -%>
<%= javascript_include_tag "lib/jquery.nanoscroller" %>
<%= javascript_include_tag "lib/checkbox.card" %>
<% end -%>
<% content_for :page_specific_css do -%>
<%= stylesheet_link_tag "member_select" %>
<% end %>
<div>
<div id="selected_users" class="selected_users">
<%= render partial: 'admin/member_selects/user', collection: users, locals: {field: field} %>
<%= hidden_field_tag field %>
</div>
<%= link_to t(:add), '#', class: 'btn btn-primary btn-small select_user_modal', rel: select_members_admin_member_selects_path, field: field %>
</div>

View File

@ -1,5 +1,5 @@
<span class="alert alert-info selected_user" id="<%= user.id %>">
<%= content_tag :span, '×', class: 'close remove_user' %>
<span class="alert alert-info selected_user" user_id="<%= user.id %>">
<%= user.name %>
<%= hidden_field_tag field, user.id %>
<%= content_tag :span, '×', class: 'close remove_user' %>
</span>

View File

@ -1,2 +0,0 @@
$("#select_user").html("<%= j render partial: 'admin/member_selects/modal_select_email', locals: {role_form_url: set_email_roles_admin_member_selects_path(field: @field), user_form_url: set_email_users_admin_member_selects_path(field: @field)} %>");
$("#member-filter").modal();

View File

@ -1,2 +0,0 @@
$("#selected_email_users").append("<%= j render partial: 'email_user', collection: @users, locals: {field: @field} %>");
$("#member-filter").modal('hide');

View File

@ -185,11 +185,7 @@
<div class="panel-heading"><i class="icon-shopping-cart"></i><span class="break"></span><%= t(:module_store) %></div>
<div class="pannel-body">
<% if @extensions.empty? %>
<% if @store_confirmation %>
<%= render :partial => "admin/site_registration/site_registration" %>
<% else %>
<%= render :partial => "admin/site_registration/not_confirmed_store" %>
<% end %>
<%= render :partial => "admin/site_registration/site_registration" %>
<% else %>
<table id="mt-list" class="table main-list">
<thead>

View File

@ -1 +0,0 @@
Admin email has not been confirmed. Please confirm your email first and try again.

View File

@ -8,13 +8,13 @@
<td><%= display_date_time(mail_cron.mail_sentdate) %></td>
<td><%= mail_cron.mail_subject %>
<div class="quick-edit">
<ul class="nav nav-pills">
<%= content_tag(:li, link_to(t(:detail), admin_mail_cron_path(mail_cron),:target => '_blank')) if at_least_module_manager %>
<ul class="nav nav-pills">
<%if at_least_module_manager %>
<li><%= link_to t(:delete_), admin_mail_cron_path(mail_cron), :class=>"text-error", :confirm => t('sure?'), :method => :delete, :remote => true %></li>
<% end -%>
</ul>
</div>
</td>
<td><%= mail_cron.mail_to.gsub(/,/, "<br />").html_safe %></td>
<td><%= mail_cron.mail_from_app %></td>
</tr>

View File

@ -9,11 +9,11 @@
<td><%= mail_cron_log.mail_subject %>
<div class="quick-edit">
<ul class="nav nav-pills">
<%= content_tag(:li, link_to(t(:detail), admin_mail_cron_log_path(mail_cron_log),:target => '_blank')) if at_least_module_manager %>
<%= content_tag(:li, link_to(t(:delete_),admin_mail_cron_log_path(mail_cron_log), :confirm => t(:sure?), :method => :delete, :class=>"text-error", :remote => true)) if at_least_module_manager %>
</ul>
</div>
</td>
<td><%= mail_cron_log.mail_to.gsub(/,/, "<br />").html_safe %> </td>
<td><%= mail_cron_log.mail_user %> </td>
<td><%= mail_cron_log.mail_from_app %> </td>
</tr>

View File

@ -56,18 +56,6 @@
<div id="system-email" class="tab-pane fade">
<div class="control-group">
<label class="control-label muted"><%= t 'mail.service_email' %></label>
<div class="controls">
<%= f.text_field :service_email, :value => (@site['site_settings']['service_email'] rescue nil), :class=>"input-large", :placeholder=>"Administrator Mail" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.reply_email' %></label>
<div class="controls">
<%= f.text_field :reply_email, :value => (@site['site_settings']['reply_email'] rescue nil), :class=>"input-large", :placeholder=>"Reply Mail" %>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t 'mail.address' %></label>
<div class="controls">

View File

@ -93,6 +93,7 @@
</th>
<th><%= t(:sent_date) %></th>
<th><%= t(:subject) %></th>
<th><%= t(:mail_to) %></th>
<th><%= t(:mail_user) %></th>
<th><%= t(:mail_from_app) %></th>
</tr>
@ -119,6 +120,7 @@
</th>
<th><%= t(:sent_date) %></th>
<th><%= t(:subject) %></th>
<th><%= t(:mail_to) %></th>
<th><%= t(:mail_from_app) %></th>
</tr>
</thead>

View File

@ -4,8 +4,6 @@
<link rel="shortcut icon" href="<%= asset_path 'favicon.ico' %>">
<% end %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<% if @site.meta_viewport %>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<% end %>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">

View File

@ -1,7 +1,7 @@
<header id="orbit-bar" class="orbit-bar navbar">
<%= render "layouts/search" %>
<div class="navbar-inner">
<%= render "layouts/left_menu" %>
<%= render "layouts/right_menu" %>
</div>
</header>
</header>

View File

@ -2,8 +2,14 @@
<!-- search -->
<li id="search" class="searchClear">
<form id="search_form" method="get" action="/site_search">
<%= text_field_tag 'q','', {:class => "search-query input-medium", :placeholder => "Search", 'x-webkit-speech' => ''} %>
<form method="get" action="http://www.google.com/custom">
<input type="hidden" name="client" value="pub-&amp" />
<input type="hidden" name="ie" id="ie" value="utf-8" />
<input type="hidden" name="oe" id="oe" value="utf-8" />
<input type="hidden" name="cof" id="cof" value="AH:center;AWFID:03de271f1940eea3;" />
<input type='hidden' name='domains' value='<%= @site.search["domains"] rescue ''%>'>
<input type='hidden' name='sitesearch' value='<%= @site.search["sitesearch"] rescue '' %>'>
<%= text_field_tag 'q','', {:class => "search-query input-medium", :placeholder => t(:search_google), 'x-webkit-speech' => ''} %>
</form>
</li>

View File

@ -1,18 +1,19 @@
#built-in-modules
gem 'archive', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-archive.git'
gem 'announcement', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-announcement.git'
gem 'gallery', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-gallery.git'
gem 'member', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-member.git'
gem 'member_staff', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-memberstaff.git'
gem 'page_content', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-pagecontent.git'
gem 'personal_book', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalbook.git'
gem 'personal_conference', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalconference.git'
gem 'personal_diploma', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personaldiploma.git'
gem 'personal_experience', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalexperience.git'
gem 'personal_honor', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalhonor.git'
gem 'personal_journal', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personaljournal.git'
gem 'personal_lab', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personallab.git'
gem 'personal_patent', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalpatent.git'
gem 'personal_project', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalproject.git'
gem 'personal_research', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-personalresearch.git'
gem 'web_resource', '0.0.1', :git => 'http://gitlab.tp.rulingcom.com/root/orbit-webresource.git'
gem 'archive', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-archive.git'
gem 'announcement', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-announcement.git', :branch => 'ntue'
gem 'er_email', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-eremail.git', :branch => 'ntue'
gem 'gallery', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-gallery.git'
gem 'member', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-member.git'
gem 'member_staff', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-memberstaff.git'
gem 'page_content', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-pagecontent.git'
gem 'personal_book', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalbook.git'
gem 'personal_conference', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalconference.git'
gem 'personal_diploma', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personaldiploma.git'
gem 'personal_experience', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalexperience.git'
gem 'personal_honor', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalhonor.git'
gem 'personal_journal', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personaljournal.git'
gem 'personal_lab', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personallab.git'
gem 'personal_patent', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalpatent.git'
gem 'personal_project', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalproject.git'
gem 'personal_research', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-personalresearch.git'
gem 'web_resource', '0.0.1', :git => 'git@gitlab.tp.rulingcom.com:root/orbit-webresource.git'

View File

@ -56,7 +56,6 @@ module Orbit
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
# config.i18n.default_locale = :de
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', 'modules', '*.{rb,yml}').to_s]
config.i18n.enforce_available_locales = false
config.i18n.default_locale = :zh_tw
# JavaScript files you want as :defaults (application.js is always included).

View File

@ -6,8 +6,6 @@ end
CarrierWave.configure do |config|
config.grid_fs_database = db_config[Rails.env]['database']
config.grid_fs_username = db_config[Rails.env]['username']
config.grid_fs_password = db_config[Rails.env]['password']
config.grid_fs_host = db_config[Rails.env]['host']
config.grid_fs_port = db_config[Rails.env]['port']
config.storage = :grid_fs

View File

@ -274,8 +274,6 @@ en:
login: Login
logout: Logout
mail:
service_email: Administrator Mail
reply_email: Reply Mail
address: Address
authentication: Authentication
domain: Domain

View File

@ -274,8 +274,6 @@ zh_tw:
login: 登入
logout: 登出
mail:
service_email: 網站管理員信箱
reply_email: 回信用信箱
address: 電子郵件地址
authentication: 電子郵件認證
domain: 電子郵件網域名稱

View File

@ -1,5 +1,5 @@
update_tag_cloud:
cron: 0 0 0,12 * * *
cron: 0 0 [0,12] * * *
class: UpdateTagCloud
args:
description: UpdateTagCloud
@ -8,10 +8,4 @@ generate_system_summary:
cron: 0 0 12 * * *
class: GenerateSystemSummary
args:
description: Generate the system status such as disk free space,package version list for showing at site tab
email_cron:
cron: 0 0 10,14,17,20 * * *
class: EmailCron
args:
description: EmailCron
description: Generate the system status such as disk free space,package version list for showing at site tab

View File

@ -1,5 +1,4 @@
Orbit::Application.routes.draw do
mount Ckeditor::Engine => '/ckeditor'
# get "robots.txt" => 'robots#index'
@ -9,6 +8,10 @@ Orbit::Application.routes.draw do
match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put
end
devise_scope :user do
get 'soap_login' => 'sessions#create'
end
mount Resque::Server, :at => "/admin/resque"
mount Rack::GridFS::Endpoint.new(:db => Mongoid.database,:lookup=>:path), :at => "gridfs"
@ -26,9 +29,6 @@ Orbit::Application.routes.draw do
get 'basic_infos/confirmation' => "basic_infos#confirmation"
post 'basic_infos/role_update' => "basic_infos#role_update"
match 'basic_infos/basic_info_update' => "basic_infos#basic_info_update"
get "site_search" => "site_search#search"
# routes for admin
namespace :admin do
match 'user_actions' => 'user_actions#index'
@ -277,9 +277,6 @@ Orbit::Application.routes.draw do
get 'select_members'
post 'set_roles'
post 'set_users'
get 'select_email_members'
post 'set_email_roles'
post 'set_email_users'
end
end
@ -299,7 +296,7 @@ Orbit::Application.routes.draw do
match 'template_store/download_theme' => "template_store#download_theme"
match 'template_store/template/:id' => 'template_store#show', :as => :template_store_template
# match 'template_store/cool_method' => "template_store#cool_method"
match "import/rss2_news" => "import#rss2_news"
end
# end admin
@ -371,7 +368,6 @@ Orbit::Application.routes.draw do
match '/desktop_orbit/gettimelinespan' => 'desktop_orbit#gettimelinespan'
match "/facebook/register_fb" => "facebook#register_fb"
match "/facebook/get_friends" => "facebook#get_friends"
match "/facebook/get_feed" => "facebook#get_feed"
match "/facebook/disconnect" => "facebook#disconnect"
@ -379,13 +375,10 @@ Orbit::Application.routes.draw do
match "/facebook/profile_import" => "facebook#profile_import"
match "/desktop/wallpaper_upload" => "desktop#wallpaper_upload"
match "/store_confirmation/confirm" => "store_confirmation#confirm"
#match '/desktop_orbit/eventajaxload' => 'desktop_publications#create_journal'
#match '/desktop_orbit/eventajaxload' => 'desktop_publications#delete_journal'
# match '/desktop_orbit/eventajaxload' => 'desktop_publications#update_journal'
def controller_paths(controller, actions, scope=nil)
actions.each do |action|
if action.eql? 'index'
@ -403,19 +396,6 @@ Orbit::Application.routes.draw do
# controller_paths :mobile, %w[index announcement announcement_content dialog_contact dialog_copyright dialog_language map page page_content]
# end
resources :api do
collection do
get 'get_albums'
get ':id/get_images', to: 'api#get_images', as: 'album_images'
get 'get_location_categories'
get 'get_locations'
end
member do
get 'images'
end
end
scope '/mobile(/:app)' do
match '/announcement' => 'mobile#announcement', :as => 'mobile_announcement'
match '/announcement_content/:id' => 'mobile#announcement_content', :as => 'mobile_announcement_content'

57
config/solr.god Normal file
View File

@ -0,0 +1,57 @@
rails_env = ENV['RAILS_ENV'] || "production"
rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/..'
user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..'
development_uid = ''
development_gid = ''
God.watch do |w|
w.dir = rails_root
w.name = "sunspot-solr"
w.group = 'rulingcom'
w.interval = 30.seconds
w.env = {"RAILS_ENV"=>rails_env}
w.start = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile sunspot:solr:start"
w.keepalive
w.uid = (rails_env == 'production' )? "root" : development_uid
w.gid = (rails_env == 'production' )? "root" : development_gid
w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid"
w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev-#{w.name}.log"
# restart if memory gets too high
w.transition(:up, :restart) do |on|
on.condition(:memory_usage) do |c|
c.above = 350.megabytes
c.times = 2
end
end
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
end
end

View File

@ -0,0 +1,26 @@
module OmniAuth
module Strategies
class Doorkeeper < OmniAuth::Strategies::OAuth2
option :name, :doorkeeper
option :client_options, {
:site => "http://localhost:8000",
:authorize_path => "/oauth/authorize"
}
uid do
raw_info["id"]
end
info do
{
:email => raw_info["email"]
}
end
def raw_info
@raw_info ||= access_token.get('/api/v1/me.json').parsed
end
end
end
end