page rendering almost done ..

This commit is contained in:
Harry Bomrah 2014-04-01 15:10:21 +08:00
parent 8d94fed6f3
commit a54e19ea18
64 changed files with 2085 additions and 199 deletions

View File

@ -1,19 +1,20 @@
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.3'
gem 'rails', '4.1.0.rc2'
gem 'mongoid', github: 'mongoid/mongoid'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
gem 'nokogiri'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'
gem 'announcement', path: '/Volumes/MyData/github/orbit4.5/announcement'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
@ -25,7 +26,7 @@ gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'
gem "active_model_serializers"
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.

View File

@ -1,148 +0,0 @@
GIT
remote: git://github.com/mongoid/mongoid.git
revision: c8af8d0836b086cebc4a609037a97747e9f3359b
specs:
mongoid (4.0.0.beta1)
activemodel (>= 4.0.0)
moped (~> 2.0.beta6)
origin (~> 2.1)
tzinfo (>= 0.3.37)
GEM
remote: https://rubygems.org/
specs:
actionmailer (4.0.3)
actionpack (= 4.0.3)
mail (~> 2.5.4)
actionpack (4.0.3)
activesupport (= 4.0.3)
builder (~> 3.1.0)
erubis (~> 2.7.0)
rack (~> 1.5.2)
rack-test (~> 0.6.2)
activemodel (4.0.3)
activesupport (= 4.0.3)
builder (~> 3.1.0)
activerecord (4.0.3)
activemodel (= 4.0.3)
activerecord-deprecated_finders (~> 1.0.2)
activesupport (= 4.0.3)
arel (~> 4.0.0)
activerecord-deprecated_finders (1.0.3)
activesupport (4.0.3)
i18n (~> 0.6, >= 0.6.4)
minitest (~> 4.2)
multi_json (~> 1.3)
thread_safe (~> 0.1)
tzinfo (~> 0.3.37)
arel (4.0.2)
atomic (1.1.15)
bson (2.2.1)
builder (3.1.4)
coffee-rails (4.0.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.7.0)
columnize (0.3.6)
connection_pool (1.2.0)
debugger (1.6.5)
columnize (>= 0.3.1)
debugger-linecache (~> 1.2.0)
debugger-ruby_core_source (~> 1.3.1)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.3.1)
erubis (2.7.0)
execjs (2.0.2)
hike (1.2.3)
i18n (0.6.9)
jbuilder (1.5.3)
activesupport (>= 3.0.0)
multi_json (>= 1.2.0)
jquery-rails (3.1.0)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.1)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.25.1)
mini_portile (0.5.2)
minitest (4.7.5)
moped (2.0.0.beta6)
bson (~> 2.2)
connection_pool (~> 1.2)
optionable (~> 0.2.0)
multi_json (1.8.4)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
optionable (0.2.0)
origin (2.1.0)
polyglot (0.3.4)
rack (1.5.2)
rack-test (0.6.2)
rack (>= 1.0)
rails (4.0.3)
actionmailer (= 4.0.3)
actionpack (= 4.0.3)
activerecord (= 4.0.3)
activesupport (= 4.0.3)
bundler (>= 1.3.0, < 2.0)
railties (= 4.0.3)
sprockets-rails (~> 2.0.0)
railties (4.0.3)
actionpack (= 4.0.3)
activesupport (= 4.0.3)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (10.1.1)
rdoc (4.1.1)
json (~> 1.4)
sass (3.2.14)
sass-rails (4.0.1)
railties (>= 4.0.0, < 5.0)
sass (>= 3.1.10)
sprockets-rails (~> 2.0.0)
sdoc (0.4.0)
json (~> 1.8)
rdoc (~> 4.0, < 5.0)
sprockets (2.11.0)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.0.1)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (~> 2.8)
thor (0.18.1)
thread_safe (0.2.0)
atomic (>= 1.1.7, < 2)
tilt (1.4.1)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
turbolinks (2.2.1)
coffee-rails
tzinfo (0.3.38)
uglifier (2.4.0)
execjs (>= 0.3.0)
json (>= 1.8.0)
PLATFORMS
ruby
DEPENDENCIES
coffee-rails (~> 4.0.0)
debugger
jbuilder (~> 1.2)
jquery-rails
mongoid!
nokogiri
rails (= 4.0.3)
sass-rails (~> 4.0.0)
sdoc
turbolinks
uglifier (>= 1.3.0)

View File

@ -0,0 +1,48 @@
(function(){
var getUrlVars = function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++){
hash = hashes[i].split('=');
vars.push(decodeURIComponent(hash[0]));
vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
}
if(vars[0] == window.location.href){
vars =[];
}
return vars;
}
var page_params = getUrlVars();
$(document).ready(function(){
$("head").append("<link href='/assets/pp-add-edit.css?body=1' media='screen' rel='stylesheet' /> ");
$.ajax({
url : "/page_parts/info",
dataType : "json",
type : "get",
data : {"page_id" : page_params["id"]}
}).done(function(data){
$.each(data.parts,function(i,part){
var page_part = $("*[" + part.name + "]");
$.each(part.subparts,function(x,subpart){
var newsub = $("<div data-ps='" + x + "'>" + subpart.module + "/" + subpart.widget + "</div>");
page_part.prepend(newsub);
})
})
})
$("*[data-pp]").each(function(){
var add_btn = $("<p class='add-ps'></p>"),
part = $(this);
add_btn.click(function(){
if(part.find("*[data-ps]").length){
window.location.href = "/page_parts/" + part.data("pp") + "/edit?page_id=" + page_params["id"];
}else{
window.location.href = "/page_parts/new?part=" + part.data("pp") + "&page_id=" + page_params["id"];
}
})
$(this).append(add_btn);
})
})
})();

View File

@ -0,0 +1,15 @@
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require loadjquery
//= require edit-main

View File

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@ -1,3 +1,3 @@
// Place all the styles related to the home controller here.
// Place all the styles related to the announcements controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@ -0,0 +1,70 @@
/*
<div data-pp="3">
<div data-ps="1"></div>
<p class="add-ps"></p>
</div>
*/
*[data-pp] {
margin: 0 auto;
position: relative;
}
*[data-pp] > *[data-ps] {
padding: 3px;
height: 50px;
outline: thin dotted #EBB666;
cursor: pointer;
position: relative;
}
*[data-pp] > *[data-ps]:before {
content: "";
line-height: 100%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: #a1a1a1;
opacity: 0.6;
filter: alpha(opacity=60);
}
*[data-pp] > *[data-ps]:after {
font-size: 1rem;
font-weight: 300;
content: "Edit";
text-align: center;
margin-top: -0.7rem;
position: absolute;
top: 50%;
right: 0;
left: 0;
}
*[data-pp] > *[data-ps]:hover:before {
opacity: 0.8;
filter: alpha(opacity=80);
}
*[data-pp] > *[data-ps]:hover:after {
font-weight: 400;
}
*[data-pp] > .add-ps {
text-align: center;
position: relative;
width: 100%;
min-height: 2rem;
line-height: 2rem;
cursor: pointer;
}
*[data-pp] > .add-ps:after {
font-size: 1rem;
font-weight: 300;
content: "Add";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: #e0dbcb;
}
*[data-pp] > .add-ps:hover:after {
font-weight: 400;
background-color: #923132;
}

View File

@ -1,3 +0,0 @@
// Place all the styles related to the users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@ -2,4 +2,21 @@ class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_action :set_locale
def default_url_options(options={})
{ locale: I18n.locale }
end
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def get_layout
f = File.join("../../templates/", "#{@key}", '/home/page.html.erb')
end
def get_key
@key = Template::KEY
end
end

View File

@ -29,15 +29,11 @@ class HomeController < ApplicationController
private
def get_key
@key = Template::KEY
end
def get_layout
if params[:name]
File.join("../../templates", "#{@key}", '/home/page.html.erb')
File.join("../../templates/", "#{@key}", '/home/page.html.erb')
else
false
false
end
end
end

View File

@ -0,0 +1,72 @@
class PagePartsController < ApplicationController
before_action :get_key
def new
@part = PagePart.new
@part.sub_parts.build
@modules = []
@part_number = params[:part]
@page_id = params[:page_id]
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/*").each do |m|
@modules << m.gsub("#{Rails.root}/app/templates/#{@key}/modules/","")
end
end
def edit
page = Page.find(params[:page_id])
@part = page.page_parts.where(:part_id => params[:id]).first
@part.sub_parts.build
@modules = []
@page_id = params[:page_id]
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/*").each do |m|
@modules << m.gsub("#{Rails.root}/app/templates/#{@key}/modules/","")
end
end
def getwidgets
module_name = params[:module]
@select_number = params[:number_of_select]
@widgets = []
Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name}/*").each do |w|
w = File.basename(w, ".*")
w = File.basename(w, ".*")
@widgets << w.gsub("_","") if w != "index" && w != "show"
end
render :layout => false
end
def info
page = Page.find(params[:page_id])
parts = page.page_parts
data = []
parts.each do |part|
partid = "data-pp=" + part.part_id.to_s
subparts = part.sub_parts
subpart = []
subparts.each do |p|
subpart << {"module" => p.module, "widget" => p.widget}
end
data << {"name" => partid, "subparts" => subpart}
end
render :json => {"parts" => data}.to_json
end
def create
@part = PagePart.new(part_params)
@part.save!
redirect_to pages_edit_view_path(:id => params[:page_part][:page_id])
end
def update
@part = PagePart.find(params[:page_part][:page_part_id])
@part.update_attributes(part_params)
redirect_to pages_edit_view_path(:id => params[:page_part][:page_id])
end
private
def part_params
params.require(:page_part).permit(:part_id, :page_id, sub_parts_attributes: [:module, :widget, :id])
end
end

View File

@ -0,0 +1,153 @@
class PagesController < ApplicationController
before_action :get_key
layout :get_layout
include PagesHelper
def index
@pages = Page.all
# render json: @pages
end
def edit_view
@manifest = @key
@dataApi = "edit"
# @qq = render_to_string(:partial => @p, :layout => false)
render get_view
end
def show
page = Page.find_by_param(params[:page_id]) rescue nil
module_app = page.module.downcase.pluralize
params[:target_controller] = "#{module_app}"
@manifest = @key
@dataApi = nil
OrbitHelper.set_params params
OrbitHelper.set_site_locale locale
params[:target_action] = "index"
params[:url] = page.url
render render_final_page("#{module_app}/show",page)
end
def moduleShow
page = Page.find_by_param(params[:page_id])
params[:target_action] = "show"
params[:uid] = params[:uid]
module_app = page.module.downcase.pluralize
params[:target_controller] = "#{module_app}"
@manifest = @key
@dataApi = nil
OrbitHelper.set_params params
OrbitHelper.set_site_locale locale
render render_final_page("#{module_app}/show",page)
end
def preview
render render_final_page
end
def new
@page = Page.new
@pages = Page.where(:page_id.ne => "" , :page_id.exists => true)
@modules = ModuleApp.all
end
def create
@page = Page.new(page_params)
@page.save!
redirect_to pages_path
end
private
def render_final_page(original_view=get_view,page)
parts = page.page_parts
@part_partials = {}
parts.each do |part|
subparts = part.sub_parts
partials = []
subparts.each do |subpart|
# partials << render_to_string(:partial => get_widget_path(widget_path))
partials << render_widget_for_frontend(params[:target_controller],"widget",subpart.widget)
end
@part_partials["data-pp='#{part.part_id}'"] = partials
end
@file = nil
@layout_html = nil
@file = File.join('../templates', "#{@key}", '/home/page.html.erb')
@layout_html = render_to_string(@file)
doc = Nokogiri::HTML(@layout_html)
@part_partials.each do |key, partial|
html_string = ""
partial.each do |p|
html_string = html_string + p
end
pp = doc.css("*[#{key}]")
pp = pp[0]
pp.inner_html = html_string
end
viewarea = doc.css("*[data-content='true']")
viewarea = viewarea[0]
viewarea.inner_html = render_to_string(original_view)
newlayout = "#{page.name}_layout.html.erb"
file_path = File.join(Rails.root, 'app', 'views', 'frontend', newlayout)
f = File.open(file_path,"w")
f.write(doc.to_html)
f.close
view_to_render = "frontend/#{newlayout}"
view_to_render
end
def get_widget_path(widget)
file = File.join('../templates', "#{@key}", "modules/#{widget}")
end
def get_view
page = Page.find(params[:id])
if page.page_id == "home"
@view = File.join(Rails.root, 'app', 'templates', "#{@key}", '/home/index.html.erb')
else
module_name = page.module.downcase.pluralize
@view = File.join(Rails.root, 'app', 'templates', "#{@key}", "modules/#{module_name}/index.html.erb")
end
end
def page_params
if params[:page][:parent_page] == ""
params[:page][:parent_page] = nil
@url = "/#{params[:page][:page_id]}"
else
page = Page.find(params[:page][:parent_page])
@url = page.url + "/#{params[:page][:page_id]}"
end
p = params.require(:page).permit(:number, :page_id, :module, :parent_page, name_translations: [:en, :zh_tw])
p["url"] = @url
p
end
def get_layout
if request[:action] == "edit_view"
page = Page.find(params[:id])
if page.page_id == "home"
false
else
File.join("../../templates", "#{@key}", '/home/page.html.erb')
end
# elsif request[:action] == "show" || request[:action] == "moduleShow"
# File.join("../../templates", "themes", "#{@key}", '/home/page.html.erb')
else
false
end
end
end

View File

@ -2,7 +2,7 @@ require "json"
module ApplicationHelper
def render_widget(widget)
key = Template::KEY
file = File.join('../templates', "#{key}", "modules/#{widget}")
file = File.join("../templates", "#{key}", "modules/#{widget}")
render :partial => file
end
@ -10,11 +10,28 @@ module ApplicationHelper
"/module/#{module_name}/show"
end
def render_menu
json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
@items = JSON.parse(json_file)
# json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
# @items = JSON.parse(json_file)
@pages = Page.where(:parent_page_id.ne => "" , :parent_page_id.exists => false, :page_id.ne => "", :page_id.exists => true)
def create_json(pages)
item = {}
pages.each do |page|
if page.child_page.size > 0
item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.child_page)}
else
item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url}
end
end
item
end
@items = create_json(@pages)
key = Template::KEY
menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{key}", '/home/menu.html.erb'))
menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{key}", '/home/menu.html.erb'))
doc = Nokogiri::HTML(menu_file)
menu_file.close
@ -63,4 +80,48 @@ module ApplicationHelper
h.html_safe
end
def render_view
if params[:target_action] == "index"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb"))
doc = Nokogiri::HTML(file)
file.close
wrap_elements = doc.css("*[data-module]")
controller = "#{params[:target_controller].capitalize}Controller".classify.constantize.new
data = controller.send("#{params[:target_action]}")
wrap_elements.each do |wrap_element|
html_to_render = ""
data.each do |item|
el = wrap_element.inner_html
item.each do |key,value|
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
html_to_render = html_to_render + el
end
wrap_element.inner_html = html_to_render
end
doc.to_s.html_safe
elsif params[:target_action] == "show"
file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb"))
doc = Nokogiri::HTML(file)
file.close
wrap_element_html = doc.to_s
html_to_render = ""
controller = "#{params[:target_controller].capitalize}Controller".classify.constantize.new
data = controller.send("#{params[:target_action]}")
el = wrap_element_html
data.each do |key,value|
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
el.html_safe
end
end
def action_data
controller = "#{params[:target_controller].capitalize}Controller".constantize.new
data = controller.send("#{params[:target_action]}")
data
end
end

View File

@ -0,0 +1,21 @@
module OrbitHelper
def self.set_params(params)
@params = params
end
def self.get_params
@params
end
def self.url_to_show(uid,title)
"/#{self.get_site_locale.to_s}#{@params[:url]}/#{uid}/#{title.parameterize}"
end
def self.set_site_locale(locale)
@site_locale = locale
end
def self.get_site_locale
@site_locale
end
end

View File

@ -0,0 +1,36 @@
module PagesHelper
def parse_pp_tags(file)
opened_file = File.open(file)
doc = Nokogiri::HTML(opened_file)
opened_file.close
pps = doc.css("*[data-pp]")
pps.each do |pp|
pp.content = "<p class='add-ps'></p>"
end
doc.to_html
end
def render_widget_for_frontend(controller_name, widget_method, widget_file)
file = File.open(File.join(Rails.root, 'app', 'templates', "#{Template::KEY}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb"))
doc = Nokogiri::HTML(file)
file.close
wrap_elements = doc.css("*[data-repeat]")
controller = "#{controller_name.capitalize}Controller".classify.constantize.new
data = controller.send("#{widget_method}")
wrap_elements.each do |wrap_element|
html_to_render = ""
data.each do |item|
el = wrap_element.inner_html
item.each do |key,value|
el = el.gsub("{{#{key}}}",value)
el = el.gsub("%7B%7B#{key}%7D%7D",value)
end
html_to_render = html_to_render + el
end
wrap_element.inner_html = html_to_render
end
doc.to_s.html_safe
end
end

View File

@ -0,0 +1,16 @@
module Slug
extend ActiveSupport::Concern
def slug
if not respond_to? :title or title.empty?
id
else
I18n.locale
title.parameterize
end
end
def to_param
slug
end
end

5
app/models/module_app.rb Normal file
View File

@ -0,0 +1,5 @@
class ModuleApp
include Mongoid::Document
field :title, type: String
field :key, type: String
end

23
app/models/page.rb Normal file
View File

@ -0,0 +1,23 @@
class Page
include Mongoid::Document
include Mongoid::Timestamps
field :name, localize: true
field :number, type: Integer
field :module
field :url
field :page_id
has_many :page_parts, :autosave => true, :dependent => :destroy
has_many :child_page, :class_name => 'Page', :inverse_of => :parent_page
belongs_to :parent_page, :class_name => 'Page', :inverse_of => :child_page
def to_param
page_id.parameterize
end
def self.find_by_param(input)
self.find_by(page_id: input) rescue nil
end
end

12
app/models/page_part.rb Normal file
View File

@ -0,0 +1,12 @@
class PagePart
include Mongoid::Document
include Mongoid::Timestamps
field :part_id, type: Integer
belongs_to :page
has_many :sub_parts, :dependent => :destroy
accepts_nested_attributes_for :sub_parts, :allow_destroy => true
end

View File

@ -0,0 +1,10 @@
class PageRelationship
include Mongoid::Document
include Mongoid::Timestamps
field :page_id, type: String
field :child_id, type: String
belongs_to :parent, :class_name => "Page"
belongs_to :child, :class_name => "Page"
end

9
app/models/sub_part.rb Normal file
View File

@ -0,0 +1,9 @@
class SubPart
include Mongoid::Document
include Mongoid::Timestamps
field :module
field :widget
belongs_to :page_part
end

View File

@ -0,0 +1,4 @@
class PageSerializer < ActiveModel::Serializer
attributes :url, :name
has_many :child_page
end

View File

@ -1,5 +1,4 @@
<!doctype html>
<html lang="en">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
@ -7,8 +6,7 @@
<title>Orbit Classic</title>
<%= stylesheet_link_tag "#{@manifest}"%>
<%= javascript_include_tag "#{@manifest}"%>
<%= javascript_include_tag "#{@dataApi}"%>
<%= javascript_include_tag "#{@dataApi}" if @dataApi != nil%>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
@ -20,7 +18,7 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/module/home">Project name</a>
<a class="navbar-brand" href="/module/home">Orbit</a>
</div>
<div class="collapse navbar-collapse" data-menu="true">
<%= render_menu %>
@ -31,13 +29,16 @@
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1">
<%= render_widget "faq/widget" %>
</header>
<div class="row" data-pp="2">
<%= render_widget "announcement/widget" %>
</div>
</div><!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="3"></div>
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="3">
<!-- <div data-ps="1"></div>
<div data-ps="1"></div>
<div data-ps="1"></div>
<p class="add-ps"></p> -->
</div>
</div><!--/row-->
<hr>
<footer>

View File

@ -1,5 +1,4 @@
<!doctype html>
<html lang="en">
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
@ -7,7 +6,7 @@
<title>Orbit Classic</title>
<%= stylesheet_link_tag "#{@manifest}"%>
<%= javascript_include_tag "#{@manifest}"%>
<%= javascript_include_tag "#{@dataApi}"%>
<%= javascript_include_tag "#{@dataApi}" if @dataApi != nil%>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">

View File

@ -1,8 +0,0 @@
<article>
<h1>{{title}}</h1>
<p>{{subtitle}}</p>
<section>
<span>{{postdate}}</span>
<div>{{text}}</div>
</section>
</article>

View File

@ -1,4 +1,4 @@
<div data-repeat="3" data-module="announcement">
<div data-repeat="3" data-module="announcement" data-ps=''>
<div >
<div class="thumbnail">
<img src="http://placehold.it/150x150">
@ -9,5 +9,5 @@
</div>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="{{link_to_index}}">More</a></p>
</div>

View File

@ -1,7 +1,7 @@
<div data-repeat="8" data-module="announcement">
<div class="col-6 col-sm-6 col-lg-4" >
<h2>{{title}}</h2>
<p>{{subtitle}}</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="{{link_to_show}}">More</a></p>
<p>{{body}}</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="{{link_to_show}}">{{more}}</a></p>
</div>
</div>

View File

@ -0,0 +1,6 @@
<article>
<h1>{{title}}</h1>
<section>
<div>{{body}}</div>
</section>
</article>

View File

@ -1,4 +1,4 @@
<div class="banner">
<div class="banner" data-ps=''>
<ul>
<li data-repeat="0"><img src="http://placehold.it/150x150"></li>
</ul>

View File

@ -1,4 +1,4 @@
<div data-sp="" data-repeat="3" data-module="faq">
<div data-ps="" data-repeat="3" data-module="faq">
<div >
<div class="thumbnail">
<img src="http://placehold.it/150x150">

View File

@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/en/news" data-menu-link="true">
News
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1"><li>
<a href="/en/news/focusnews" data-menu-link="true">
Focus News
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/en/news/focusnews/admission" data-menu-link="true">
Admissions
</a>
</li></ul>
</li></ul>
</li>
<li>
<a href="/en/faqs" data-menu-link="true">
Faqs
<b class="caret"></b>
</a>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"></header><main class="row" data-content="true">
<article><h1>This is test title</h1>
<section><div>This is test body</div>
</section></article></main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2"></div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,198 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/module/announcement" data-menu-link="true">
Announcement
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
</ul>
</li>
<li>
<a href="/module/faq" data-menu-link="true">
Faq
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="/module/gallery" data-menu-link="true">
Gallery
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/gallery/show" data-menu-link="true">
Gallery1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.3
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"><div data-repeat="3" data-module="announcement" data-ps="">
<div>
<h1>Harry</h1>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>{{title}}</h3>
<p>{{subtitle}}</p>
<p><a data-href="detail" class="btn btn-primary" href="%7B%7Blink_to_show%7D%7D" role="button">Read more</a></p>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="%7B%7Blink_to_index%7D%7D">More</a></p>
</div></header><main class="row" data-content="true"><div class="list-group" data-repeat="0" data-module="faq">
<a data-href="detail" class="list-group-item" href="%7B%7Blink_to_show%7D%7D">{{title}} »</a>
</div></main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2"></div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,94 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/en/news" data-menu-link="true">
News
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1"><li>
<a href="/en/news/focusnews" data-menu-link="true">
Focus News
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/en/news/focusnews/admission" data-menu-link="true">
Admissions
</a>
</li></ul>
</li></ul>
</li>
<li>
<a href="/en/faqs" data-menu-link="true">
Faqs
<b class="caret"></b>
</a>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"></header><main class="row" data-content="true">
<div data-repeat="8" data-module="announcement">
<div class="col-6 col-sm-6 col-lg-4">
<h2>This is test title</h2>
<p>This is test body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/faqs/1vq8m73s/this-is-test-title">More</a></p>
</div>
<div class="col-6 col-sm-6 col-lg-4">
<h2>Test 2</h2>
<p>Test 2 body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/faqs/qvr4bp3z/test-2">More</a></p>
</div>
</div>
</main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2"></div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/en/news" data-menu-link="true">
News
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1"><li>
<a href="/en/news/focusnews" data-menu-link="true">
Focus News
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/en/news/focusnews/admission" data-menu-link="true">
Admissions
</a>
</li></ul>
</li></ul>
</li>
<li>
<a href="/en/faqs" data-menu-link="true">
Faqs
<b class="caret"></b>
</a>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"></header><main class="row" data-content="true">
<div data-repeat="8" data-module="announcement">
<div class="col-6 col-sm-6 col-lg-4">
<h2>This is test title</h2>
<p>This is test body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/news/focusnews/1vq8m73s/this-is-test-title">More</a></p>
</div>
<div class="col-6 col-sm-6 col-lg-4">
<h2>Test 2</h2>
<p>Test 2 body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/news/focusnews/qvr4bp3z/test-2">More</a></p>
</div>
</div>
</main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2">
<div data-repeat="3" data-module="announcement" data-ps="">
<div>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>This is test title</h3>
<p>This is test body</p>
<p><a data-href="detail" class="btn btn-primary" href="/en/news/focusnews/1vq8m73s/this-is-test-title" role="button">Read more</a></p>
</div>
</div>
</div>
<div>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>Test 2</h3>
<p>Test 2 body</p>
<p><a data-href="detail" class="btn btn-primary" href="/en/news/focusnews/qvr4bp3z/test-2" role="button">Read more</a></p>
</div>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="%7B%7Blink_to_index%7D%7D">More</a></p>
</div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/en/news" data-menu-link="true">
News
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1"><li>
<a href="/en/news/focusnews" data-menu-link="true">
Focus News
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/en/news/focusnews/admission" data-menu-link="true">
Admissions
</a>
</li></ul>
</li></ul>
</li>
<li>
<a href="/en/faqs" data-menu-link="true">
Faqs
<b class="caret"></b>
</a>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1">
<div data-repeat="3" data-module="announcement" data-ps="">
<div>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>This is test title</h3>
<p>This is test body</p>
<p><a data-href="detail" class="btn btn-primary" href="/en/news/1vq8m73s/this-is-test-title" role="button">Read more</a></p>
</div>
</div>
</div>
<div>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>Test 2</h3>
<p>Test 2 body</p>
<p><a data-href="detail" class="btn btn-primary" href="/en/news/qvr4bp3z/test-2" role="button">Read more</a></p>
</div>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="%7B%7Blink_to_index%7D%7D">More</a></p>
</header><main class="row" data-content="true">
<div data-repeat="8" data-module="announcement">
<div class="col-6 col-sm-6 col-lg-4">
<h2>This is test title</h2>
<p>This is test body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/news/1vq8m73s/this-is-test-title">More</a></p>
</div>
<div class="col-6 col-sm-6 col-lg-4">
<h2>Test 2</h2>
<p>Test 2 body</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="/en/news/qvr4bp3z/test-2">More</a></p>
</div>
</div>
</main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2"></div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,207 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/module/announcement" data-menu-link="true">
Announcement
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
</ul>
</li>
<li>
<a href="/module/faq" data-menu-link="true">
Faq
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="/module/gallery" data-menu-link="true">
Gallery
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/gallery/show" data-menu-link="true">
Gallery1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.3
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"><div class="banner" data-ps="">
<ul>
<li data-repeat="0"><img src="http://placehold.it/150x150"></li>
</ul>
</div></header><main class="row" data-content="true"><div class="list-group" data-repeat="0" data-module="faq">
<a data-href="detail" class="list-group-item" href="%7B%7Blink_to_show%7D%7D">{{title}} »</a>
</div></main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2">
<div class="banner" data-ps="">
<ul>
<li data-repeat="0"><img src="http://placehold.it/150x150"></li>
</ul>
</div>
<div data-ps="" data-repeat="3" data-module="faq">
<div>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>{{title}}</h3>
<p><a data-href="detail" class="btn btn-primary" role="button" href="%7B%7Blink_to_show%7D%7D">Read</a></p>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" href="%7B%7Blink_to_index%7D%7D" class="btn btn-primary" role="button">More</a></p>
</div>
</div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,202 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/module/announcement" data-menu-link="true">
Announcement
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
</ul>
</li>
<li>
<a href="/module/faq" data-menu-link="true">
Faq
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="/module/gallery" data-menu-link="true">
Gallery
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/gallery/show" data-menu-link="true">
Gallery1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.3
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"></header><main class="row" data-content="true"><div data-repeat="8" data-module="announcement">
<div class="col-6 col-sm-6 col-lg-4">
<h2>{{title}}</h2>
<p>{{subtitle}}</p>
<p><a class="btn btn-default" data-href="detail" role="button" href="%7B%7Blink_to_show%7D%7D">More</a></p>
</div>
</div></main><!--/row-->
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="2"><div data-repeat="3" data-module="announcement" data-ps="">
<div>
<h1>Harry</h1>
<div class="thumbnail">
<img src="http://placehold.it/150x150"><div class="caption">
<h3>{{title}}</h3>
<p>{{subtitle}}</p>
<p><a data-href="detail" class="btn btn-primary" href="%7B%7Blink_to_show%7D%7D" role="button">Read more</a></p>
</div>
</div>
</div>
<p class="text-center"><a data-href="more" class="btn btn-primary" role="button" href="%7B%7Blink_to_index%7D%7D">More</a></p>
</div></div>
<!--/span-->
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -0,0 +1,188 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/assets/images/favicon.ico">
<title>Orbit Classic</title>
<link href="/assets/orbit_classic.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/bootstrap.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/font-awesome.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon-ie7.min.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/icon.css?body=1" media="screen" rel="stylesheet">
<link href="/assets/main.css?body=1" media="screen" rel="stylesheet">
<script src="/assets/lib/jquery-1.11.0.min.js?body=1"></script><script src="/assets/plugin/bootstrap.js?body=1"></script><script src="/assets/plugin/html5shiv.js?body=1"></script><script src="/assets/plugin/jquery.lite.image.resize.js?body=1"></script><script src="/assets/plugin/response.min.js?body=1"></script><script src="/assets/orbit_classic.js?body=1"></script>
</head>
<body>
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/module/home">Orbit</a>
</div>
<div class="collapse navbar-collapse" data-menu="true">
<ul class="nav navbar-nav menu-level-0" data-menu-level="0">
<li>
<a href="/module/announcement" data-menu-link="true">
Announcement
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
<li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2"><li>
<a href="/module/announcement/show" data-menu-link="true">
Announcement2
</a>
</li></ul>
</li>
</ul>
</li>
<li>
<a href="/module/faq" data-menu-link="true">
Faq
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2
</a>
</li>
<li>
<a href="/module/faq/show" data-menu-link="true">
Faq2.1
</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="/module/gallery" data-menu-link="true">
Gallery
<b class="caret"></b>
</a>
<ul class="nav navbar-nav dropdown-menu menu-level-1" data-menu-level="1">
<li>
<a href="/module/gallery/show" data-menu-link="true">
Gallery1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
</ul>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery1.1
<b class="caret"></b>
</a>
<ul class="dropdown-menu menu-level-2" data-menu-level="2">
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.1
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.2
</a>
</li>
<li>
<a href="/module/gallery/show" data-menu-link="true">
gallery2.3
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<header data-pp="1"><div class="banner" data-ps="">
<ul>
<li data-repeat="0"><img src="http://placehold.it/150x150"></li>
</ul>
</div></header><div class="row" data-pp="2">
</div>
</div>
<!--/span-->
<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar" role="navigation" data-pp="3"><div class="banner" data-ps="">
<ul>
<li data-repeat="0"><img src="http://placehold.it/150x150"></li>
</ul>
</div></div>
</div>
<!--/row-->
<hr>
<footer><p>© Company 2014</p>
</footer>
</div>
</body>
</html>

View File

@ -3,11 +3,10 @@
<head>
<title>OrbitStore</title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= javascript_include_tag "jquery11" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>

View File

@ -0,0 +1,14 @@
<% i = 0 %>
<%= f.hidden_field :page_id, value: @page_id %>
<%= f.fields_for :sub_parts do |sub| %>
Module :
<%= sub.select(:module, @modules,{:include_blank => true}, "data-number"=> "pp_#{i}", "class" => "module_name") %>
<span for="pp_<%= i.to_s %>">
<%= sub.label(:widget,@part.sub_parts[i].widget) rescue nil %>
<%= sub.hidden_field(:widget) if i < @part.sub_parts.count %>
</span>
<% i = i + 1 %>
<br />
<% end %>
<%= f.submit %>

View File

@ -0,0 +1,21 @@
<%= form_for @part, url: {action: "update"} do |f| %>
<%= f.hidden_field :page_part_id, value: @part.id.to_s %>
<%= render :partial => "form", :locals => { :f => f } %>
<% end %>
<script type="text/javascript">
$("select.module_name").on("change",function(){
var select = $(this);
if(select.val()){
$.ajax({
url : "/page_parts/getwidgets",
dataType : "html",
data : {"module" : select.val(),"number_of_select" : select.data("number").replace("pp_","")},
type : "get"
}).done(function(html){
$("span[for=" + select.data("number") + "]").html(html);
})
}
})
</script>

View File

@ -0,0 +1,2 @@
Select Widget
<%= select_tag("page_part[sub_parts_attributes][#{@select_number}][widget]",options_for_select(@widgets),{:include_blank => true}) %>

View File

@ -0,0 +1,21 @@
<%= form_for @part, url: {action: "create"} do |f| %>
<%= f.hidden_field :part_id, value: @part_number %>
<%= render :partial => "form", :locals => { :f => f } %>
<% end %>
<script type="text/javascript">
$("select.module_name").on("change",function(){
var select = $(this);
if(select.val()){
$.ajax({
url : "/page_parts/getwidgets",
dataType : "html",
data : {"module" : select.val(),"number_of_select" : select.data("number").replace("pp_","")},
type : "get"
}).done(function(html){
$("span[for=" + select.data("number") + "]").html(html);
})
}
})
</script>

View File

@ -0,0 +1,10 @@
<ul>
<% @pages.each do |page| %>
<li>
<%= page.name %>
<a href="<%= pages_edit_view_path(:id=>page.id) %>" >Edit View</a>
<a href="<%= pages_preview_path(:id=>page.id) %>" >Preview</a>
<%= page.url %>
</li>
<% end %>
</ul>

View File

@ -0,0 +1,17 @@
<%= form_for @page, url: {action: "create"} do |f| %>
<% I18n.available_locales.each do |locale| %>
Page name <%= locale.to_s %>:
<%= f.fields_for :name_translations do |n| %>
<%= n.text_field locale %>
<% end %>
<% end %>
Page id:
<%= f.text_field :page_id %>
Module :
<%= f.select(:module, @modules.map{|m| [m.title,m.key]},{:include_blank => true}) %>
Parent page :
<%= f.select(:parent_page, @pages.map{|page| [page.name, page.id]},{:include_blank => true}) %>
Page number:
<%= f.text_field :number %>
<%= f.submit "Create Page" %>
<% end %>

View File

@ -6,6 +6,7 @@ require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
require "mongoid/railtie"
# Require the gems listed in Gemfile, including any gems
@ -29,7 +30,16 @@ module OrbitStore
Dir.glob("#{Rails.root}/app/templates/*").each do |path|
config.assets.paths << "#{path}/assets/images"
end
end
# tell the I18n library where to find your translations
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
# set default locale to something other than :en
I18n.default_locale = :en
I18n.available_locales = [:en, :zh_tw]
config.autoload_paths += %W(#{config.root}/lib)
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.

View File

@ -20,4 +20,4 @@
# available at http://guides.rubyonrails.org/i18n.html.
en:
hello: "Hello world"
more: "More"

2
config/locales/zh_tw.yml Normal file
View File

@ -0,0 +1,2 @@
zh_tw:
more: "更多"

View File

@ -11,6 +11,7 @@ development:
hosts:
- localhost:27017
options:
# Change the default write concern. (default = { w: 1 })
# write:
# w: 1
@ -29,6 +30,7 @@ development:
# retry_interval: 1
# Configure Mongoid specific options. (optional)
options:
# Includes the root model name in json serialization. (default: false)
# include_root_in_json: false

View File

@ -1,6 +1,15 @@
OrbitStore::Application.routes.draw do
resources :users
get "/pages/edit_view" => "pages#edit_view"
get "/pages/preview" => "pages#preview"
get "/page_parts/getwidgets" => "page_parts#getwidgets"
get "/page_parts/info" => "page_parts#info"
resources :pages
resources :page_parts
get "/module/:name" => "home#index"
get "/module/:name/show" => "home#show"
# The priority is based upon order of creation: first created -> highest priority.
@ -8,7 +17,14 @@ OrbitStore::Application.routes.draw do
# You can have the root of your site routed with "root"
root 'home#index'
scope "(:locale)", locale: /en|zh_tw/ do
get ':page_id(/:page_id(/:page_id))', to: 'pages#show'
get ':page_id(/:uid(/:slug))', to: 'pages#moduleShow'
get ':page_id(/:page_id(/:uid(/:slug)))', to: 'pages#moduleShow'
get ':page_id(/:page_id(/:page_id(/:uid(/:slug))))', to: 'pages#moduleShow'
resources :pages
end
# Example of regular route:
# get 'products/:id' => 'catalog#view'

6
lib/orbit_app.rb Normal file
View File

@ -0,0 +1,6 @@
require 'orbit_app/register_module'
require 'orbit_app/module/registration'
module OrbitApp
extend RegisterModule
end

View File

@ -0,0 +1,54 @@
#This is a core class of Orbit Kernel. This class will register a module and set the properties defined in the module's initializer
#file.
module OrbitApp
module Module
module Registration
module ClassMethods
@@registrations = []
def new(name,&block)
@@registrations << RegisteredModule.new(name,&block)
end
def find_by_key(key)
@@registrations.each{|t|
return t if t.key.eql?(key)
}
return nil
end
def all
return @@registrations
end
end
extend ClassMethods
def self.included(other)
other.extend( ClassMethods )
end
class RegisteredModule
attr_reader :name,:key,:module_label
def initialize(name,&block)
@name = name
@key = @name.underscore.singularize
# @module_label = 'rulingcom.errors.init.module_app_noname'
setup_module_app
end
def get_module_app
ModuleApp.find_by(key: @key, title: name) rescue nil
end
def setup_module_app
module_app = get_module_app
module_app = ModuleApp.new(:key=>@key,:title=>name) if module_app.nil?
module_app.save(:validate=>false)
end
end
end
end
end

View File

@ -0,0 +1,10 @@
#This module will initialize the registration process for a ModuleApp
module OrbitApp
module RegisterModule
def registration(name,type ={:type=> "ModuleApp"} ,&block)
if type[:type].eql?("ModuleApp")
Module::Registration.new(name,&block)
end
end
end
end

View File

@ -0,0 +1,14 @@
require 'test_helper'
class AnnouncementsControllerTest < ActionController::TestCase
test "should get index" do
get :index
assert_response :success
end
test "should get show" do
get :show
assert_response :success
end
end

View File

@ -0,0 +1,9 @@
require 'test_helper'
class BackendControllerTest < ActionController::TestCase
test "should get index" do
get :index
assert_response :success
end
end

9
test/fixtures/announcements.yml vendored Normal file
View File

@ -0,0 +1,9 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
body: MyString
two:
title: MyString
body: MyString

9
test/fixtures/module_apps.yml vendored Normal file
View File

@ -0,0 +1,9 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
key: MyString
two:
title: MyString
key: MyString

9
test/fixtures/page_relationships.yml vendored Normal file
View File

@ -0,0 +1,9 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
page_id: MyString
child_id: MyString
two:
page_id: MyString
child_id: MyString

View File

@ -0,0 +1,4 @@
require 'test_helper'
class AnnouncementsHelperTest < ActionView::TestCase
end

View File

@ -0,0 +1,4 @@
require 'test_helper'
class BackendHelperTest < ActionView::TestCase
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class AnnouncementTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class ModuleAppTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@ -0,0 +1,7 @@
require 'test_helper'
class PageRelationshipTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end