Merge branch 'master' of github.com:Rulingcom/NCCU

This commit is contained in:
Matthew K. Fu JuYuan 2012-07-31 11:01:11 +08:00
commit af4865ceb7
22 changed files with 22 additions and 290 deletions

View File

@ -32,7 +32,7 @@ class Admin::PurchasesController < ApplicationController
public_key = OpenSSL::PKey::RSA.new(File.read(APP_CONFIG['main_public_key'])) public_key = OpenSSL::PKey::RSA.new(File.read(APP_CONFIG['main_public_key']))
encrypted_data = public_key.public_encrypt({:purchase_id => purchase.purchase_id, encrypted_data = public_key.public_encrypt({:purchase_id => purchase.purchase_id,
:purchase_type => purchase._type, :purchase_type => purchase.class.to_s,
:roaming_id => Site.find(session[:site]).roaming_id, :roaming_id => Site.find(session[:site]).roaming_id,
:url => url}.to_json) :url => url}.to_json)
@ -43,7 +43,7 @@ class Admin::PurchasesController < ApplicationController
temp_file.write response.body temp_file.write response.body
temp_file.rewind temp_file.rewind
zip_name = response['content-disposition'].split('filename=')[1].gsub(/[\\\"]|.zip/, '') rescue '' zip_name = response['content-disposition'].split('filename=')[1].gsub(/[\\\"]|.zip/, '') rescue ''
case purchase._type case purchase.class.to_s
when 'Pdesign' when 'Pdesign'
unzip_design(temp_file, zip_name) unzip_design(temp_file, zip_name)
when 'PModuleApp' when 'PModuleApp'

View File

@ -22,7 +22,7 @@ class PagesController < ApplicationController
@item = Item.first(:conditions => {:path => params[:page_name]}) @item = Item.first(:conditions => {:path => params[:page_name]})
if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s)) if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
# impressionist(@item) # impressionist(@item)
case @item._type case @item.class.to_s
when 'Page' when 'Page'
render_page render_page
when 'Link' when 'Link'

View File

@ -30,7 +30,7 @@ class SessionsController < Devise::SessionsController
render :action => "new" render :action => "new"
else else
logger.info "===ALL passed" logger.info "===ALL passed"
resource_name = resource._type.downcase resource_name = resource.class.to_s.downcase
sign_in(resource_name, resource) sign_in(resource_name, resource)
respond_with resource, :location => redirect_location(resource_name, resource) respond_with resource, :location => redirect_location(resource_name, resource)
end end
@ -48,7 +48,7 @@ class SessionsController < Devise::SessionsController
logger.info "=======Rulingcom account======" logger.info "=======Rulingcom account======"
resource = User.first(conditions:{email: login_uid}) resource = User.first(conditions:{email: login_uid})
if resource.valid_password?(login_password) if resource.valid_password?(login_password)
resource_name = resource._type.downcase resource_name = resource.class.to_s.downcase
sign_in(resource_name, resource) sign_in(resource_name, resource)
respond_with resource, :location => redirect_location(resource_name, resource) respond_with resource, :location => redirect_location(resource_name, resource)
else else

View File

@ -14,7 +14,7 @@ module Admin::DashboardHelper
end end
def get_link_to_object(object) def get_link_to_object(object)
case object._type.underscore case object.class.to_s.underscore
when 'bulletin' when 'bulletin'
panel_announcement_front_end_bulletin_path(object) panel_announcement_front_end_bulletin_path(object)
when 'news_bulletin' when 'news_bulletin'

View File

@ -3,7 +3,7 @@ module Admin::ItemHelper
def render_node_and_children(node) def render_node_and_children(node)
ret = '' ret = ''
if node if node
case node._type case node.class.to_s
when 'Page' when 'Page'
dest = admin_page_path(node) dest = admin_page_path(node)
when 'Link' when 'Link'
@ -15,10 +15,10 @@ module Admin::ItemHelper
ret << "<div class='with_action'><i class='icons-moves'></i>" ret << "<div class='with_action'><i class='icons-moves'></i>"
ret << (link_to node.title, dest, :class => 'js_history') ret << (link_to node.title, dest, :class => 'js_history')
ret << "<div class='quick-edit hide'>" ret << "<div class='quick-edit hide'>"
ret << (link_to t('admin.edit'), eval("edit_admin_#{node._type.downcase}_path(node)"), :class => 'js_history') if node._type.eql?('Page') ret << (link_to t('admin.edit'), eval("edit_admin_#{node.class.to_s.downcase}_path(node)"), :class => 'js_history') if node.class.to_s.eql?('Page')
ret << (link_to t('admin.new_page'), new_admin_page_path(:parent_id => node.id), :class => 'new_page js_history') if node._type.eql?('Page') ret << (link_to t('admin.new_page'), new_admin_page_path(:parent_id => node.id), :class => 'new_page js_history') if node.class.to_s.eql?('Page')
ret << (link_to t('admin.new_link'), new_admin_link_path(:parent_id => node.id), :class => 'new_link js_history') if node._type.eql?('Page') ret << (link_to t('admin.new_link'), new_admin_link_path(:parent_id => node.id), :class => 'new_link js_history') if node.class.to_s.eql?('Page')
ret << (link_to t(:delete), eval("delete_admin_#{node._type.downcase}_path(node, :authenticity_token => form_authenticity_token)"), :confirm => t('sure?'), :class => 'delete js_history') ret << (link_to t(:delete), eval("delete_admin_#{node.class.to_s.downcase}_path(node, :authenticity_token => form_authenticity_token)"), :confirm => t('sure?'), :class => 'delete js_history')
ret << "</div>" ret << "</div>"
ret << "</div>" ret << "</div>"
ret << render_children(node) ret << render_children(node)

View File

@ -4,7 +4,9 @@ class Tag
include Impressionist::Impressionable include Impressionist::Impressionable
is_impressionable :counter_cache => { :column_name => :view_count } is_impressionable :counter_cache => { :column_name => :view_count }
field :key field :key
field :view_count, :type => Integer, :default => 0
#field :cloud_amper,:type: Integer,:default=> 0 #field :cloud_amper,:type: Integer,:default=> 0
belongs_to :module_app belongs_to :module_app

View File

@ -515,7 +515,7 @@
<% @recent_updated.each do |object| %> <% @recent_updated.each do |object| %>
<tr> <tr>
<td><%= link_to ((object[0].title rescue nil) || (object[0].page.title rescue nil)), get_link_to_object(object[0]) %></td> <td><%= link_to ((object[0].title rescue nil) || (object[0].page.title rescue nil)), get_link_to_object(object[0]) %></td>
<td class="span2"><%= link_to t("dashboard.#{object[0]._type.underscore}"), get_link(object[0]._type.underscore) %></td> <td class="span2"><%= link_to t("dashboard.#{object[0].class.to_s.underscore}"), get_link(object[0].class.to_s.underscore) %></td>
</tr> </tr>
<% end %> <% end %>
</tbody> </tbody>
@ -553,7 +553,7 @@
<% @most_visited.each do |object| %> <% @most_visited.each do |object| %>
<tr> <tr>
<td><%= link_to ((object[0].title rescue nil) || (object[0].page.title rescue nil)), get_link_to_object(object[0]) %></td> <td><%= link_to ((object[0].title rescue nil) || (object[0].page.title rescue nil)), get_link_to_object(object[0]) %></td>
<td class="span2"><%= link_to t("dashboard.#{object[0]._type.underscore}"), get_link(object[0]._type.underscore) %></td> <td class="span2"><%= link_to t("dashboard.#{object[0].class.to_s.underscore}"), get_link(object[0].class.to_s.underscore) %></td>
<td class="span2"><%= object[1] %></td> <td class="span2"><%= object[1] %></td>
</tr> </tr>
<% end %> <% end %>

View File

@ -2,4 +2,4 @@
<%= render 'admin/items/site_map_left_bar' %> <%= render 'admin/items/site_map_left_bar' %>
<% end -%> <% end -%>
<%= render "admin/#{@item._type.downcase.pluralize}/show" %> <%= render "admin/#{@item.class.to_s.downcase.pluralize}/show" %>

View File

@ -1,5 +1,5 @@
$('#back_main').empty(); $('#back_main').empty();
<% case @item._type %> <% case @item.class.to_s %>
<% when 'Page' %> <% when 'Page' %>
$('#back_main').append("<%= escape_javascript(render(:partial => 'admin/pages/show')) %>"); $('#back_main').append("<%= escape_javascript(render(:partial => 'admin/pages/show')) %>");
<% when 'Link' %> <% when 'Link' %>

View File

@ -17,7 +17,7 @@ module ParserBackEnd
# item = Item.first(:conditions => { :path => tag.attr['name'] }) # item = Item.first(:conditions => { :path => tag.attr['name'] })
# ret = '' # ret = ''
# ret << "<a href='" # ret << "<a href='"
# ret << eval("admin_#{item._type.downcase}_path(item.id)") # ret << eval("admin_#{item.class.to_s.downcase}_path(item.id)")
# ret << "' class='nav'>" # ret << "' class='nav'>"
# ret << item.i18n_variable[I18n.locale] # ret << item.i18n_variable[I18n.locale]
# ret << "</a>" # ret << "</a>"

View File

@ -28,7 +28,7 @@ module ParserCommon
res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page)) res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page))
res << "'>" res << "'>"
root = "/" root = "/"
res << "<a href='#{edit ? root + admin_page_path(page.id) : (page._type.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>" res << "<a href='#{edit ? root + admin_page_path(page.id) : (page.class.to_s.eql?('Page') ? root + page.path : page.url)}'><span>#{page.title}</span></a>"
if page.visible_children.size > 0 && current < menu.levels if page.visible_children.size > 0 && current < menu.levels
res << "<span class='dot'></span>" res << "<span class='dot'></span>"
res << menu_level(page, current_page, current + 1, menu, edit) res << menu_level(page, current_page, current + 1, menu, edit)
@ -121,7 +121,7 @@ module ParserCommon
menu_page.visible_children.each do |child| menu_page.visible_children.each do |child|
res << "<li class='#{page.id.eql?(child.id) ? 'active' : nil}'>" res << "<li class='#{page.id.eql?(child.id) ? 'active' : nil}'>"
root = "/" root = "/"
res << "<a href='#{edit ? root + admin_page_path(child.id) : (child._type.eql?('Page') ? root + child.path : child.url)}'>#{child.title}</a>" res << "<a href='#{edit ? root + admin_page_path(child.id) : (child.class.to_s.eql?('Page') ? root + child.path : child.url)}'>#{child.title}</a>"
res << "</li>" res << "</li>"
end end
res << "</ul>" res << "</ul>"

View File

@ -14,7 +14,7 @@ class Bulletin
#scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false) #scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false)
# is_impressionable :counter_cache => { :column_name => :view_count } is_impressionable :counter_cache => { :column_name => :view_count }
field :title, localize: true field :title, localize: true
field :subtitle, localize: true field :subtitle, localize: true

View File

@ -17,7 +17,7 @@ class NewsBulletin
#scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false) #scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false)
# is_impressionable :counter_cache => { :column_name => :view_count } is_impressionable :counter_cache => { :column_name => :view_count }
field :title, localize: true field :title, localize: true
field :subtitle, localize: true field :subtitle, localize: true

View File

@ -1,13 +0,0 @@
source 'https://rubygems.org'
platforms :jruby do
gem 'activerecord-jdbcsqlite3-adapter'
gem 'jdbc-sqlite3'
gem 'jruby-openssl'
end
platforms :ruby, :mswin, :mingw do
gem 'sqlite3'
end
gemspec

View File

@ -1,62 +0,0 @@
module Impressionist
module Impressionable
extend ActiveSupport::Concern
module ClassMethods
attr_accessor :impressionist_cache_options
@impressionist_cache_options = nil
def impressionist_counter_cache_options
if @impressionist_cache_options
options = { :column_name => :impressions_count, :unique => false }
options.merge!(@impressionist_cache_options) if @impressionist_cache_options.is_a?(Hash)
options
end
end
def impressionist_counter_caching?
impressionist_counter_cache_options.present?
end
def counter_caching?
::ActiveSupport::Deprecation.warn("#counter_caching? is deprecated; please use #impressionist_counter_caching? instead")
impressionist_counter_caching?
end
end
def impressionable?
true
end
def impressionist_count(options={})
options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now)
imps = options[:start_date].blank? ? impressions : impressions.where("created_at>=? and created_at<=?",options[:start_date],options[:end_date])
options[:filter] == :all ? imps.count : imps.count(options[:filter], :distinct => true)
end
def update_impressionist_counter_cache
cache_options = self.class.impressionist_counter_cache_options
column_name = cache_options[:column_name].to_sym
count = cache_options[:unique] ? impressionist_count(:filter => :ip_address) : impressionist_count
old_count = send(column_name) || 0
self.class.update_counters(id, column_name => (count - old_count))
end
# OLD METHODS - DEPRECATE IN V0.5
def impression_count(start_date=nil,end_date=Time.now)
impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=>:all})
end
def unique_impression_count(start_date=nil,end_date=Time.now)
impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :request_hash})
end
def unique_impression_count_ip(start_date=nil,end_date=Time.now)
impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :ip_address})
end
def unique_impression_count_session(start_date=nil,end_date=Time.now)
impressionist_count({:start_date=>start_date, :end_date=>end_date, :filter=> :session_hash})
end
end
end

View File

@ -1,13 +0,0 @@
module Impressionist
module Generators
class ImpressionistGenerator < Rails::Generators::Base
hook_for :orm
source_root File.expand_path('../templates', __FILE__)
def copy_config_file
template 'impression.rb', 'config/initializers/impression.rb'
end
end
end
end

View File

@ -1,5 +0,0 @@
# Use this hook to configure impressionist parameters
Impressionist.setup do |config|
# Define ORM. Could be :active_record (default), :mongo_mapper or :mongoid
# config.orm = :active_record
end

View File

@ -1,10 +0,0 @@
ImpressionistController::InstanceMethods.send(:define_method, :direct_create_statement) do |query_params={}|
# creates a statment hash that contains default values for creating an impression.
# if :impressionable_id is a valid ObjectId then convert it into one
base = (defined? Moped) ? Moped::BSON : BSON
query_params.reverse_merge!(
:impressionable_type => controller_name.singularize.camelize,
:impressionable_id=> !base::ObjectId.legal?(params[:id]) ? params[:id] : base::ObjectId.from_string(params[:id])
)
associative_create_statement(query_params)
end

View File

@ -1,33 +0,0 @@
require "impressionist"
require "rails"
module Impressionist
class Engine < Rails::Engine
initializer 'impressionist.model' do |app|
require "#{root}/app/models/impressionist/impressionable.rb"
if Impressionist.orm == :active_record && defined? ActiveRecord
require "impressionist/models/active_record/impression.rb"
require "impressionist/models/active_record/impressionist/impressionable.rb"
ActiveRecord::Base.send(:include, Impressionist::Impressionable)
elsif Impressionist.orm == :mongo_mapper
require "impressionist/models/mongo_mapper/impression.rb"
require "impressionist/models/mongo_mapper/impressionist/impressionable.rb"
MongoMapper::Document.plugin Impressionist::Impressionable
elsif Impressionist.orm == :mongoid
require 'impressionist/models/mongoid/impression.rb'
require 'impressionist/models/mongoid/impressionist/impressionable.rb'
Mongoid::Document.send(:include, Impressionist::Impressionable)
end
end
initializer 'impressionist.controller' do
if Impressionist.orm == :mongoid
require 'impressionist/controllers/mongoid/impressionist_controller.rb'
end
ActiveSupport.on_load(:action_controller) do
include ImpressionistController::InstanceMethods
extend ImpressionistController::ClassMethods
end
end
end
end

View File

@ -1,32 +0,0 @@
class Impression
include Mongoid::Document
include Mongoid::Timestamps
attr_accessible :impressionable_type, :impressionable_field, :impressionable_id, :user_id,
:controller_name, :action_name, :view_name, :request_hash, :ip_address,
:session_hash, :message, :referrer
belongs_to :impressionable, polymorphic: true
field :user_id
field :controller_name
field :action_name
field :view_name
field :request_hash
field :ip_address
field :session_hash
field :message
field :referrer
set_callback(:create, :after) do |doc|
unless impressionable_id.nil?
impressionable_class = doc.impressionable_type.constantize
if impressionable_class.impressionist_counter_cache_options
resource = impressionable_class.find(doc.impressionable_id)
resource.try(:update_impressionist_counter_cache)
end
end
end
end

View File

@ -1,52 +0,0 @@
module Impressionist
module Impressionable
extend ActiveSupport::Concern
module ClassMethods
def is_impressionable(options={})
has_many :impressions, as: :impressionable, dependent: :destroy
@impressionist_cache_options = options[:counter_cache]
if !@impressionist_cache_options.nil?
opts = impressionist_counter_cache_options
field opts[:column_name], type: Integer
end
end
def impressionist_counter_cache_options
if @impressionist_cache_options
options = { :column_name => :impressions_count, :unique => false }
options.merge!(@impressionist_cache_options) if @impressionist_cache_options.is_a?(Hash)
options
end
end
def impressionist_counter_caching?
impressionist_counter_cache_options.present?
end
def counter_caching?
::ActiveSupport::Deprecation.warn("#counter_caching? is deprecated; please use #impressionist_counter_caching? instead")
impressionist_counter_caching?
end
end
def impressionable?
true
end
def impressionist_count(options={})
options.reverse_merge!(:filter=>:request_hash, :start_date=>nil, :end_date=>Time.now)
imps = options[:start_date].blank? ? impressions : impressions.between(created_at: options[:start_date]..options[:end_date])
options[:filter] == :all ? imps.count : imps.where(options[:filter].ne => nil).count
end
def update_impressionist_counter_cache
cache_options = self.class.impressionist_counter_cache_options
column_name = cache_options[:column_name].to_sym
count = cache_options[:unique] ? impressionist_count(:filter => :ip_address) : impressionist_count
old_count = send(column_name) || 0
self.inc(column_name, (count - old_count))
end
end
end

View File

@ -1,50 +0,0 @@
require 'spec_helper'
describe Impression do
fixtures :widgets
before(:each) do
@widget = Widget.find(1)
Impression.destroy_all
end
describe "self#impressionist_counter_caching?" do
it "should know when counter caching is enabled" do
Widget.should be_impressionist_counter_caching
end
it "should know when counter caching is disabled" do
Article.should_not be_impressionist_counter_caching
end
end
describe "self#counter_caching?" do
it "should know when counter caching is enabled" do
ActiveSupport::Deprecation.should_receive(:warn)
Widget.should be_counter_caching
end
it "should know when counter caching is disabled" do
ActiveSupport::Deprecation.should_receive(:warn)
Article.should_not be_counter_caching
end
end
describe "#update_impressionist_counter_cache" do
it "should update the counter cache column to reflect the correct number of impressions" do
lambda {
@widget.impressions.create(:request_hash => 'abcd1234')
@widget.reload
}.should change(@widget, :impressions_count).from(0).to(1)
end
it "should not update the timestamp on the impressable" do
lambda {
@widget.impressions.create(:request_hash => 'abcd1234')
@widget.reload
}.should_not change(@widget, :updated_at)
end
end
end