Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Harry Bomrah | 8b8357af87 | |
Harry Bomrah | 8d9892f73d | |
spen | adfa7cab83 | |
spen | 0c03ba8439 | |
spen | cc82387efb | |
manson | 51d8577774 | |
manson | 8aa5a4f7d6 | |
manson | 93337c1019 | |
manson | 13f63d4c2a | |
manson | 8d0c326bbc | |
manson | fe2c1a9235 |
4
Gemfile
4
Gemfile
|
@ -1,7 +1,7 @@
|
|||
source 'http://rubygems.org'
|
||||
gem 'rails', "~> 3.2.16"
|
||||
|
||||
# gem "brakeman"
|
||||
gem "brakeman"
|
||||
gem 'mime-types'
|
||||
|
||||
gem 'bson_ext'
|
||||
|
@ -109,7 +109,7 @@ group :test, :development do
|
|||
gem "spork"
|
||||
gem "capybara"
|
||||
#gem 'rack-mini-profiler'
|
||||
gem "better_errors"
|
||||
gem "better_errors", "1.1.0"
|
||||
# gem 'yard'
|
||||
# gem "bluecloth"
|
||||
end
|
||||
|
|
|
@ -19,8 +19,8 @@ $(function () {
|
|||
'use strict';
|
||||
// Initialize the jQuery File Upload widget:
|
||||
$('#fileupload').fileupload({
|
||||
maxFileSize: 5000000,
|
||||
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf|doc|docx|ppt|pptx|xls|xlsx)$/i,
|
||||
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,
|
||||
dropZone: $('#dropzone'),
|
||||
headers:{
|
||||
'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content")
|
||||
|
|
|
@ -28,6 +28,8 @@ 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) %>";
|
||||
|
@ -35,6 +37,10 @@ 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(){
|
||||
|
|
|
@ -32,7 +32,6 @@ 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
|
||||
|
|
|
@ -7,7 +7,12 @@ $(function() {
|
|||
for ( instance in CKEDITOR.instances )
|
||||
CKEDITOR.instances[instance].updateElement();
|
||||
|
||||
var formData = new FormData( $('form.previewable')[0] );
|
||||
var formData;
|
||||
if(typeof(FormData) == "function"){
|
||||
formData = new FormData( $('form.previewable')[0] );
|
||||
}else{
|
||||
formData = $('form.previewable').serialize()
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
|
|
|
@ -7,19 +7,11 @@
|
|||
position: fixed;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#orbit-bar *,
|
||||
#orbit-bar *:before,
|
||||
#orbit-bar *:after {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#orbit-bar .orbitlogo {
|
||||
width: 50px;
|
||||
height: 40px;
|
||||
padding: 0!important;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-size: 70%;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(<%= asset_path 'orbit-logo.svg' %>);
|
||||
|
@ -27,23 +19,8 @@
|
|||
/* For Suck IE */
|
||||
background-image: url(<%= asset_path 'orbit-logo.png' %>)\9;
|
||||
}
|
||||
#orbit-bar .dropdown-menu li > a {
|
||||
padding: 0 20px;
|
||||
display: block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
#orbit-bar .dropdown-menu li i {
|
||||
float: left;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
line-height: 30px;
|
||||
height: 100%;
|
||||
}
|
||||
#orbit-bar.navbar .nav > li > a {
|
||||
color: #EEE;
|
||||
padding: 0 15px;
|
||||
display: block;
|
||||
text-shadow: 0 -1px 0 #000;
|
||||
border-right: 1px solid #363636;
|
||||
box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.3);
|
||||
|
@ -57,11 +34,6 @@
|
|||
background-color: #0095CF;
|
||||
text-shadow: 0 -1px 0 #014380;
|
||||
}
|
||||
#orbit-bar.navbar .nav > li > a > [class^="icon"],
|
||||
#orbit-bar.navbar .nav > li > a > [class*=" icon"] {
|
||||
line-height: 40px;
|
||||
display: block;
|
||||
}
|
||||
#orbit-bar.navbar .nav li.dropdown.open > .dropdown-toggle,
|
||||
#orbit-bar.navbar .nav li.dropdown.active > .dropdown-toggle,
|
||||
#orbit-bar.navbar .nav li.dropdown.open.active > .dropdown-toggle {
|
||||
|
@ -94,10 +66,6 @@
|
|||
right: auto;
|
||||
bottom: auto;
|
||||
}
|
||||
#orbit-bar .nav > li {
|
||||
display: block;
|
||||
line-height: 40px;
|
||||
}
|
||||
#orbit-bar .nav [class^="icon"],
|
||||
#orbit-bar .nav [class*=" icon"] {
|
||||
font-size: 1.5em;
|
||||
|
@ -124,53 +92,24 @@
|
|||
#orbit-bar .modal .input-prepend {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
#orbit-bar .modal .other-sign-in {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 1px solid #EDEDED;
|
||||
}
|
||||
#orbit-bar .modal .other-sign-in .btn {
|
||||
padding: 4px 0;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
width: 100%;
|
||||
}
|
||||
#orbit-bar .modal .other-sign-in p {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background-color: #FFF;
|
||||
padding: 0 10px;
|
||||
margin-bottom: 0;
|
||||
margin-left: -25px;
|
||||
line-height: 30px;
|
||||
left: 50%;
|
||||
bottom: -15px;
|
||||
font-size: 1.3em;
|
||||
color: #B1B1B1;
|
||||
}
|
||||
|
||||
/*Search*/
|
||||
#orbit-bar #search {
|
||||
margin-bottom: 0;
|
||||
position: relative;
|
||||
padding: 0 10px;
|
||||
padding: 8px 10px 0;
|
||||
border-right: 1px solid #363636;
|
||||
box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
#orbit-bar #search form {
|
||||
margin: 8px 0;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
#orbit-bar #search input[type="text"] {
|
||||
height: 23px;
|
||||
height: 14px;
|
||||
line-height: 15px;
|
||||
font-size: 13px;
|
||||
padding-left: 25px;
|
||||
padding-right: 25px;
|
||||
display: block;
|
||||
-webkit-border-radius: 12px;
|
||||
-moz-border-radius: 12px;
|
||||
-o-border-radius: 12px;
|
||||
|
@ -183,17 +122,15 @@
|
|||
#orbit-bar #search .search-clear {
|
||||
position: absolute;
|
||||
color: #A3A3A3;
|
||||
top: 16px;
|
||||
top: 14px;
|
||||
}
|
||||
#orbit-bar #search .icon-search {
|
||||
left: 15px;
|
||||
left: 20px;
|
||||
top: 12px;
|
||||
font-size: 1.2em;
|
||||
width: 1.25em;
|
||||
margin-top: 0;
|
||||
}
|
||||
#orbit-bar #search .search-clear {
|
||||
right: 13px;
|
||||
right: 14px;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
#orbit-bar #search .search-clear:hover {
|
||||
|
@ -308,7 +245,7 @@
|
|||
#orbit-bar #orbit-user .user-pic {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin: -12px 10px -10px -15px;
|
||||
margin: -13px 10px -10px -15px;
|
||||
}
|
||||
|
||||
/*Language & flag*/
|
||||
|
|
|
@ -4,7 +4,7 @@ class Admin::AdBannersController < OrbitBackendController
|
|||
open_for_sub_manager
|
||||
|
||||
def index
|
||||
@ad_banners = AdBanner.all.page(params[:page]).per(10)
|
||||
@ad_banners = get_sorted_and_filtered("ad_banner")
|
||||
end
|
||||
|
||||
def show
|
||||
|
|
|
@ -11,7 +11,7 @@ class Admin::AdImagesController < Admin::AdBannersController
|
|||
end
|
||||
|
||||
def index
|
||||
@ad_images = AdImage.all.page(params[:page]).per(10)
|
||||
@ad_images = get_sorted_and_filtered("ad_image")
|
||||
end
|
||||
|
||||
def edit
|
||||
|
|
|
@ -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','page')
|
||||
@most_visited = get_most_visited('bulletin', 'page_context')
|
||||
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','page')
|
||||
@most_visited = get_most_visited('bulletin', 'page_context')
|
||||
respond_to do |format|
|
||||
format.js { render 'reload', locals: {div_id: 'most_visited'} }
|
||||
end
|
||||
|
|
|
@ -321,6 +321,8 @@ 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
|
||||
|
@ -361,7 +363,12 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
if pagination
|
||||
Kaminari.paginate_array(filter_authorized_objects(objects)).page(params[:page]).per(10)
|
||||
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
|
||||
else
|
||||
filter_authorized_objects(objects)
|
||||
end
|
||||
|
|
|
@ -248,15 +248,24 @@ module ApplicationHelper
|
|||
end
|
||||
|
||||
def get_month_traffic
|
||||
result = []
|
||||
(0..30).each do |i|
|
||||
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
|
||||
result.push([ Time.now.beginning_of_day-i.days, visits])
|
||||
site.month_traffic_cache['result'].push([ Time.now.beginning_of_day-i.days, visits])
|
||||
end
|
||||
[:name=> t(:visitors_count),:data=>result]
|
||||
|
||||
site.month_traffic_cache['updated_at'] = Time.now
|
||||
site.save
|
||||
end
|
||||
|
||||
[:name=> t(:visitors_count),:data=>site.month_traffic_cache['result']]
|
||||
end
|
||||
|
||||
# def get_today_traffic
|
||||
|
|
|
@ -63,7 +63,6 @@ class MailCronMailer < ActionMailer::Base
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
@mail_cron_log = {
|
||||
:mail_subject => @data.mail_subject,
|
||||
:mail_to => group_mail,
|
||||
|
@ -74,10 +73,16 @@ class MailCronMailer < ActionMailer::Base
|
|||
|
||||
@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
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ class MailCron
|
|||
|
||||
if !email_user_id.blank?
|
||||
|
||||
@user = User.find(email_user_id)
|
||||
@user = User.find(email_user_id) rescue nil
|
||||
|
||||
@group_mail << @user.email if !@user.blank?
|
||||
|
||||
|
|
|
@ -51,6 +51,8 @@ class Site
|
|||
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
|
||||
validate :in_use_locales, :minimum_enabled_locales
|
||||
|
|
|
@ -1,58 +1,32 @@
|
|||
<div>
|
||||
<div
|
||||
id='slideshow-<%= @ad_banner.title.dehumanize %>'
|
||||
class="orbit-cycle-slideshow"
|
||||
data-cycle-timeout="<%= @ad_banner.timeout_millisecond %>"
|
||||
data-cycle-fx="<%= @ad_banner.ad_fx %>"
|
||||
|
||||
data-cycle-pager-active-class="activeSlide"
|
||||
data-cycle-random='true'
|
||||
|
||||
data-cycle-slides=".slide-img"
|
||||
data-overlay=".adBanner-overlay .caption"
|
||||
data-pager=".<%= @ad_banner.title.dehumanize %> .navigation"
|
||||
data-cycle-pager-template="<li class='dot'></li>"
|
||||
style="z-index: 0">
|
||||
|
||||
<div style='position:relative'>
|
||||
<div id='slideshow-<%= @ad_banner.title.dehumanize %>' class="orbit-cycle-slideshow" data-cycle-timeout="<%= @ad_banner.timeout_millisecond %>" data-cycle-fx="<%= @ad_banner.ad_fx %>" data-cycle-pager=".banner_nav_<%= @ad_banner.title.dehumanize %>" data-cycle-pager-template="<li class='needed'><a href='#'></a></li>" data-cycle-pager-active-class="activeSlide" data-cycle-random='true' style="z-index: 0">
|
||||
<% @ad_banner.ad_images.can_display.each do |ad_image| %>
|
||||
<div
|
||||
class="slide-img"
|
||||
data-cycle-title="<%= ad_image.title %>"
|
||||
data-cycle-desc="<%= ad_image.context %>"
|
||||
data-overlay-template="<h2><%= ad_image.title %></h2><%= ad_image.context %>">
|
||||
<% link = ad_image_link(ad_image) %>
|
||||
<%= image_tag ad_image.file, alt: ad_image.title, title: ad_image.title, width: @ad_banner.width, height: @ad_banner.height, link_open: ad_image.link_open, link_url: link, style: "#{'cursor:pointer;' if link.present?}" %>
|
||||
<%= %>
|
||||
</div>
|
||||
<%= image_tag ad_image.file, alt: ad_image.title, title: ad_image.title, width: @ad_banner.width, height: @ad_banner.height, link_open: ad_image.link_open, link_url: link, style: "display:none; #{'cursor:pointer;' if link.present?}" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="<%= @ad_banner.title.dehumanize %> adBanner-overlay">
|
||||
<div class="caption"></div>
|
||||
<ul class="navigation"></ul>
|
||||
</div>
|
||||
<!-- <ul class='clear banner_nav banner_nav_<%#= @ad_banner.title.dehumanize %>'></ul> -->
|
||||
<ul class='clear banner_nav banner_nav_<%= @ad_banner.title.dehumanize %>'></ul>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
// if($("#slideshow-<%= @ad_banner.title.dehumanize %> img").length > 1){
|
||||
// var a = [];
|
||||
// <% @ad_banner.ad_images.can_display.each do |image| %>
|
||||
// a.push("<%= image.file.url %>");
|
||||
// <% end %>
|
||||
// $.preload(a, 2, function(){
|
||||
// $('.orbit-cycle-slideshow').cycle();
|
||||
// var lis = $("ul.banner_nav_<%= @ad_banner.title.dehumanize %> li");
|
||||
// if( lis.length > a.length ){
|
||||
// for( i = lis.length - 1; i > a.length - 1; i-- ){
|
||||
// lis[i].remove();
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// else{
|
||||
// $("#slideshow-<%= @ad_banner.title.dehumanize %> img").show()
|
||||
// }
|
||||
if($("#slideshow-<%= @ad_banner.title.dehumanize %> img").length > 1){
|
||||
var a = [];
|
||||
<% @ad_banner.ad_images.can_display.each do |image| %>
|
||||
a.push("<%= image.file.url %>");
|
||||
<% end %>
|
||||
$.preload(a, 2, function(){
|
||||
$('.orbit-cycle-slideshow').cycle();
|
||||
var lis = $("ul.banner_nav_<%= @ad_banner.title.dehumanize %> li");
|
||||
if( lis.length > a.length ){
|
||||
for( i = lis.length - 1; i > a.length - 1; i-- ){
|
||||
lis[i].remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
$("#slideshow-<%= @ad_banner.title.dehumanize %> img").show()
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -56,6 +56,7 @@ 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).
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
defaults: &defaults
|
||||
host: 127.0.0.1
|
||||
host: localhost
|
||||
# slaves:
|
||||
# - host: slave1.local
|
||||
port: 27017
|
||||
|
@ -8,13 +8,13 @@ defaults: &defaults
|
|||
|
||||
development:
|
||||
<<: *defaults
|
||||
database: thu_orbit
|
||||
database: orbit_site_new
|
||||
|
||||
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
database: thu_orbit
|
||||
database: orbit_site_new
|
||||
|
||||
# set these environment variables on your prod server
|
||||
production:
|
||||
|
@ -24,4 +24,4 @@ production:
|
|||
# password: <%= ENV['MONGOID_PASSWORD'] %>
|
||||
# database: <%= ENV['MONGOID_DATABASE'] %>
|
||||
<<: *defaults
|
||||
database: thu_orbit
|
||||
database: orbit_site_new
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# encoding: utf-8
|
||||
require 'fileutils'
|
||||
# require 'shell'
|
||||
require 'shell'
|
||||
require 'open-uri'
|
||||
require 'net/http/post/multipart'
|
||||
|
||||
|
|
Loading…
Reference in New Issue