tmatt_cms 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/tmatt_cms/install_generator.rb +316 -0
  3. data/lib/generators/tmatt_cms/templates/.keep +0 -0
  4. data/lib/generators/tmatt_cms/templates/concerns/db_init.rb +12 -0
  5. data/lib/generators/tmatt_cms/templates/concerns/pretty_url.rb +38 -0
  6. data/lib/generators/tmatt_cms/templates/concerns/string_addition.rb +8 -0
  7. data/lib/generators/tmatt_cms/templates/concerns/translatable.rb +43 -0
  8. data/lib/generators/tmatt_cms/templates/config/application.rb +41 -0
  9. data/lib/generators/tmatt_cms/templates/config/application.yml +12 -0
  10. data/lib/generators/tmatt_cms/templates/config/initializers/active_job.rb +3 -0
  11. data/lib/generators/tmatt_cms/templates/config/locales/views/dashboard/en.yml +11 -0
  12. data/lib/generators/tmatt_cms/templates/config/locales/views/dashboard/zh.yml +11 -0
  13. data/lib/generators/tmatt_cms/templates/config/locales/views/global/en.yml +2 -0
  14. data/lib/generators/tmatt_cms/templates/config/locales/views/global/zh.yml +2 -0
  15. data/lib/generators/tmatt_cms/templates/css/application/application.css +18 -0
  16. data/lib/generators/tmatt_cms/templates/css/application/ckeditor.css.scss +4 -0
  17. data/lib/generators/tmatt_cms/templates/css/application/index.css.scss +40 -0
  18. data/lib/generators/tmatt_cms/templates/css/application/magnific_popup_rails.css.scss +45 -0
  19. data/lib/generators/tmatt_cms/templates/css/application/main.css.scss +0 -0
  20. data/lib/generators/tmatt_cms/templates/css/application/mixin.css.scss +43 -0
  21. data/lib/generators/tmatt_cms/templates/css/application/variables.css.scss +55 -0
  22. data/lib/generators/tmatt_cms/templates/css/application/z_index.css.scss +2 -0
  23. data/lib/generators/tmatt_cms/templates/css/layouts/footer.css.scss +3 -0
  24. data/lib/generators/tmatt_cms/templates/css/layouts/form.css.scss +3 -0
  25. data/lib/generators/tmatt_cms/templates/css/layouts/header.css.scss +0 -0
  26. data/lib/generators/tmatt_cms/templates/css/style.css.scss +242 -0
  27. data/lib/generators/tmatt_cms/templates/css/utils/jasny-bootstrap.min.css +7 -0
  28. data/lib/generators/tmatt_cms/templates/gemfile/Gemfile +128 -0
  29. data/lib/generators/tmatt_cms/templates/git_ignore/gitignore +29 -0
  30. data/lib/generators/tmatt_cms/templates/inputs/ckeditor_translation_input.rb +11 -0
  31. data/lib/generators/tmatt_cms/templates/inputs/concerns/translation_hint.rb +12 -0
  32. data/lib/generators/tmatt_cms/templates/inputs/translation_input.rb +11 -0
  33. data/lib/generators/tmatt_cms/templates/js/application.js +23 -0
  34. data/lib/generators/tmatt_cms/templates/js/utils/jasny-bootstrap.min.js +6 -0
  35. data/lib/generators/tmatt_cms/templates/js/utils/magnificPopup.js +16 -0
  36. data/lib/generators/tmatt_cms/templates/seed_bank/all.seeds.rb +0 -0
  37. data/lib/generators/tmatt_cms/templates/views/dashboard/partial/_sidebar.html.haml +29 -0
  38. data/lib/generators/tmatt_cms/templates/views/layouts/dashboard.html.haml +19 -0
  39. data/lib/generators/tmatt_cms/templates/views/utils/_image_cover.html.haml +2 -0
  40. data/lib/tmatt_cms.rb +1 -5
  41. data/lib/tmatt_cms/version.rb +1 -1
  42. data/spec/spec_helper.rb +2 -0
  43. data/spec/tmatt_cms_spec.rb +11 -0
  44. data/tmatt_cms.gemspec +6 -7
  45. metadata +57 -30
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)
3
+ * Copyright 2012-2014 Arnold Daniels
4
+ * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ .container-smooth{max-width:1170px}@media (min-width:1px){.container-smooth{width:auto}}.btn-labeled{padding-top:0;padding-bottom:0}.btn-label{position:relative;background:0 0;background:rgba(0,0,0,.15);display:inline-block;padding:6px 12px;left:-12px;border-radius:3px 0 0 3px}.btn-label.btn-label-right{left:auto;right:-12px;border-radius:0 3px 3px 0}.btn-lg .btn-label{padding:10px 16px;left:-16px;border-radius:5px 0 0 5px}.btn-lg .btn-label.btn-label-right{left:auto;right:-16px;border-radius:0 5px 5px 0}.btn-sm .btn-label{padding:5px 10px;left:-10px;border-radius:2px 0 0 2px}.btn-sm .btn-label.btn-label-right{left:auto;right:-10px;border-radius:0 2px 2px 0}.btn-xs .btn-label{padding:1px 5px;left:-5px;border-radius:2px 0 0 2px}.btn-xs .btn-label.btn-label-right{left:auto;right:-5px;border-radius:0 2px 2px 0}.nav-tabs-bottom{border-bottom:0;border-top:1px solid #ddd}.nav-tabs-bottom>li{margin-bottom:0;margin-top:-1px}.nav-tabs-bottom>li>a{border-radius:0 0 4px 4px}.nav-tabs-bottom>li>a:hover,.nav-tabs-bottom>li>a:focus,.nav-tabs-bottom>li.active>a,.nav-tabs-bottom>li.active>a:hover,.nav-tabs-bottom>li.active>a:focus{border:1px solid #ddd;border-top-color:transparent}.nav-tabs-left{border-bottom:0;border-right:1px solid #ddd}.nav-tabs-left>li{margin-bottom:0;margin-right:-1px;float:none}.nav-tabs-left>li>a{border-radius:4px 0 0 4px;margin-right:0;margin-bottom:2px}.nav-tabs-left>li>a:hover,.nav-tabs-left>li>a:focus,.nav-tabs-left>li.active>a,.nav-tabs-left>li.active>a:hover,.nav-tabs-left>li.active>a:focus{border:1px solid #ddd;border-right-color:transparent}.row>.nav-tabs-left{padding-right:0;padding-left:15px;margin-right:-1px;position:relative;z-index:1}.row>.nav-tabs-left+.tab-content{border-left:1px solid #ddd}.nav-tabs-right{border-bottom:0;border-left:1px solid #ddd}.nav-tabs-right>li{margin-bottom:0;margin-left:-1px;float:none}.nav-tabs-right>li>a{border-radius:0 4px 4px 0;margin-left:0;margin-bottom:2px}.nav-tabs-right>li>a:hover,.nav-tabs-right>li>a:focus,.nav-tabs-right>li.active>a,.nav-tabs-right>li.active>a:hover,.nav-tabs-right>li.active>a:focus{border:1px solid #ddd;border-left-color:transparent}.row>.nav-tabs-right{padding-left:0;padding-right:15px}.navmenu,.navbar-offcanvas{width:300px;height:auto;border-width:1px;border-style:solid;border-radius:4px}.navmenu-fixed-left,.navmenu-fixed-right,.navbar-offcanvas{position:fixed;z-index:1030;top:0;bottom:0;overflow-y:auto;border-radius:0}.navmenu-fixed-left,.navbar-offcanvas.navmenu-fixed-left{left:0;right:auto;border-width:0 1px 0 0}.navmenu-fixed-right,.navbar-offcanvas{left:auto;right:0;border-width:0 0 0 1px}.navmenu-nav{margin-bottom:10px}.navmenu-nav.dropdown-menu{position:static;margin:0;padding-top:0;float:none;border:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.navbar-offcanvas .navbar-nav{margin:0}@media (min-width:768px){.navbar-offcanvas{width:auto;border-top:0;box-shadow:none}.navbar-offcanvas.offcanvas{position:static;display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-offcanvas .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-offcanvas .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-offcanvas .navmenu-brand{display:none}}.navmenu-brand{display:block;font-size:18px;line-height:20px;padding:10px 15px;margin:10px 0}.navmenu-brand:hover,.navmenu-brand:focus{text-decoration:none}.navmenu-default,.navbar-default .navbar-offcanvas{background-color:#f8f8f8;border-color:#e7e7e7}.navmenu-default .navmenu-brand,.navbar-default .navbar-offcanvas .navmenu-brand{color:#777}.navmenu-default .navmenu-brand:hover,.navbar-default .navbar-offcanvas .navmenu-brand:hover,.navmenu-default .navmenu-brand:focus,.navbar-default .navbar-offcanvas .navmenu-brand:focus{color:#5e5e5e;background-color:transparent}.navmenu-default .navmenu-text,.navbar-default .navbar-offcanvas .navmenu-text{color:#777}.navmenu-default .navmenu-nav>.dropdown>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-default .navmenu-nav>.dropdown>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navmenu-default .navmenu-nav>.open>a,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-default .navmenu-nav>.open>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-default .navmenu-nav>.open>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.navmenu-default .navmenu-nav>.open>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-default .navmenu-nav>.open>a:hover .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-default .navmenu-nav>.open>a:focus .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navmenu-default .navmenu-nav>.dropdown>a .caret,.navbar-default .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}.navmenu-default .navmenu-nav.dropdown-menu,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#e7e7e7}.navmenu-default .navmenu-nav.dropdown-menu>.divider,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#f8f8f8}.navmenu-default .navmenu-nav.dropdown-menu>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-default .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#d7d7d7}.navmenu-default .navmenu-nav>li>a,.navbar-default .navbar-offcanvas .navmenu-nav>li>a{color:#777}.navmenu-default .navmenu-nav>li>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-default .navmenu-nav>li>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>li>a:focus{color:#333;background-color:transparent}.navmenu-default .navmenu-nav>.active>a,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-default .navmenu-nav>.active>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-default .navmenu-nav>.active>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navmenu-default .navmenu-nav>.disabled>a,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-default .navmenu-nav>.disabled>a:hover,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-default .navmenu-nav>.disabled>a:focus,.navbar-default .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navmenu-inverse,.navbar-inverse .navbar-offcanvas{background-color:#222;border-color:#080808}.navmenu-inverse .navmenu-brand,.navbar-inverse .navbar-offcanvas .navmenu-brand{color:#999}.navmenu-inverse .navmenu-brand:hover,.navbar-inverse .navbar-offcanvas .navmenu-brand:hover,.navmenu-inverse .navmenu-brand:focus,.navbar-inverse .navbar-offcanvas .navmenu-brand:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-text,.navbar-inverse .navbar-offcanvas .navmenu-text{color:#999}.navmenu-inverse .navmenu-nav>.dropdown>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:hover .caret,.navmenu-inverse .navmenu-nav>.dropdown>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.open>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a,.navmenu-inverse .navmenu-nav>.open>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover,.navmenu-inverse .navmenu-nav>.open>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus{background-color:#080808;color:#fff}.navmenu-inverse .navmenu-nav>.open>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a .caret,.navmenu-inverse .navmenu-nav>.open>a:hover .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:hover .caret,.navmenu-inverse .navmenu-nav>.open>a:focus .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navmenu-inverse .navmenu-nav>.dropdown>a .caret,.navbar-inverse .navbar-offcanvas .navmenu-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navmenu-inverse .navmenu-nav.dropdown-menu,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu{background-color:#080808}.navmenu-inverse .navmenu-nav.dropdown-menu>.divider,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.divider{background-color:#222}.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:hover,.navmenu-inverse .navmenu-nav.dropdown-menu>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav.dropdown-menu>.active>a:focus{background-color:#000}.navmenu-inverse .navmenu-nav>li>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a{color:#999}.navmenu-inverse .navmenu-nav>li>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:hover,.navmenu-inverse .navmenu-nav>li>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>li>a:focus{color:#fff;background-color:transparent}.navmenu-inverse .navmenu-nav>.active>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a,.navmenu-inverse .navmenu-nav>.active>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:hover,.navmenu-inverse .navmenu-nav>.active>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.active>a:focus{color:#fff;background-color:#080808}.navmenu-inverse .navmenu-nav>.disabled>a,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a,.navmenu-inverse .navmenu-nav>.disabled>a:hover,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:hover,.navmenu-inverse .navmenu-nav>.disabled>a:focus,.navbar-inverse .navbar-offcanvas .navmenu-nav>.disabled>a:focus{color:#444;background-color:transparent}.alert-fixed-top,.alert-fixed-bottom{position:fixed;width:100%;z-index:1035;border-radius:0;margin:0;left:0}@media (min-width:992px){.alert-fixed-top,.alert-fixed-bottom{width:992px;left:50%;margin-left:-496px}}.alert-fixed-top{top:0;border-width:0 0 1px}@media (min-width:992px){.alert-fixed-top{border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-width:0 1px 1px}}.alert-fixed-bottom{bottom:0;border-width:1px 0 0}@media (min-width:992px){.alert-fixed-bottom{border-top-right-radius:4px;border-top-left-radius:4px;border-width:1px 1px 0}}.offcanvas{display:none}.offcanvas.in{display:block}@media (max-width:767px){.offcanvas-xs{display:none}.offcanvas-xs.in{display:block}}@media (max-width:991px){.offcanvas-sm{display:none}.offcanvas-sm.in{display:block}}@media (max-width:1199px){.offcanvas-md{display:none}.offcanvas-md.in{display:block}}.offcanvas-lg{display:none}.offcanvas-lg.in{display:block}.canvas-sliding{-webkit-transition:top .35s,left .35s,bottom .35s,right .35s;transition:top .35s,left .35s,bottom .35s,right .35s}.offcanvas-clone{height:0!important;width:0!important;overflow:hidden!important;border:none!important;margin:0!important;padding:0!important;position:absolute!important;top:auto!important;left:auto!important;bottom:0!important;right:0!important;opacity:0!important}.table.rowlink td:not(.rowlink-skip),.table .rowlink td:not(.rowlink-skip){cursor:pointer}.table.rowlink td:not(.rowlink-skip) a,.table .rowlink td:not(.rowlink-skip) a{color:inherit;font:inherit;text-decoration:inherit}.table-hover.rowlink tr:hover td,.table-hover .rowlink tr:hover td{background-color:#cfcfcf}.btn-file{overflow:hidden;position:relative;vertical-align:middle}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);font-size:23px;height:100%;width:100%;direction:ltr;cursor:pointer}.fileinput{margin-bottom:9px;display:inline-block}.fileinput .form-control{padding-top:7px;padding-bottom:5px;display:inline-block;margin-bottom:0;vertical-align:middle;cursor:text}.fileinput .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center}.fileinput .thumbnail>img{max-height:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{vertical-align:middle;display:inline-block;overflow:hidden}.form-control .fileinput-filename{vertical-align:bottom}.fileinput.input-group{display:table}.fileinput.input-group>*{position:relative;z-index:2}.fileinput.input-group>.btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 4px 4px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 3px 3px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 6px 6px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#8a6d3b}.form-group.has-warning .fileinput .thumbnail{border-color:#faebcc}.form-group.has-error .fileinput .fileinput-preview{color:#a94442}.form-group.has-error .fileinput .thumbnail{border-color:#ebccd1}.form-group.has-success .fileinput .fileinput-preview{color:#3c763d}.form-group.has-success .fileinput .thumbnail{border-color:#d6e9c6}.input-group-addon:not(:first-child){border-left:0}
@@ -0,0 +1,128 @@
1
+ source 'https://rubygems.org'
2
+
3
+
4
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
+ gem 'rails', '4.2.6'
6
+
7
+ gem 'pg'
8
+
9
+ # SEO pack
10
+ gem 'sitemap_generator'
11
+ gem 'meta-tags', require: 'meta_tags'
12
+
13
+ # nest form
14
+ gem 'nested_form', git: 'git://github.com/BenZhang/nested_form.git'
15
+
16
+ gem 'haml-rails'
17
+
18
+ # 18n
19
+ gem 'globalize', '~> 5.0.0'
20
+ gem 'globalize-accessors'
21
+
22
+ gem 'font-awesome-rails'
23
+ gem 'html5-rails'
24
+ gem 'fancybox2-rails'
25
+
26
+ gem 'sass-rails', '~> 5.0'
27
+ gem 'compass-rails'
28
+ gem 'compass-h5bp'
29
+
30
+ # Use Uglifier as compressor for JavaScript assets
31
+ gem 'uglifier', '>= 1.3.0'
32
+
33
+ # Use CoffeeScript for .js.coffee assets and views
34
+ gem 'coffee-rails', '~> 4.0.0'
35
+
36
+ gem "stringex"
37
+
38
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
39
+ gem 'therubyracer', platforms: :ruby
40
+ gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
41
+ gem 'bootstrap-sass', '~> 3.0.3.0'
42
+
43
+ # Use jquery as the JavaScript library
44
+ gem 'jquery-rails'
45
+ gem 'jquery-ui-rails'
46
+
47
+ gem 'devise', '~> 3.4.1'
48
+ gem 'omniauth-facebook'
49
+
50
+
51
+ gem 'paperclip'
52
+ gem 'cancan'
53
+ gem 'exception_notification', '~> 4.0.1'
54
+ gem 'simple_token_authentication', '~> 1.0'
55
+ gem 'activeadmin', github: 'activeadmin'
56
+
57
+ #pagination
58
+ gem 'kaminari'
59
+ gem 'bootstrap-kaminari-views'
60
+ gem 'simple_form'
61
+ gem 'au_state_select', '~> 1.1'
62
+
63
+ #ancestry
64
+ gem 'ancestry'
65
+
66
+
67
+ # App API
68
+ gem 'grape'
69
+ gem 'grape-rabl'
70
+ gem "hashie-forbidden_attributes"
71
+
72
+ group :development, :test do
73
+ # gem 'rspec'
74
+ gem 'rspec-rails', '~> 3.0'
75
+ gem 'simplecov'
76
+ gem "factory_girl_rails", "~> 4.0"
77
+ end
78
+
79
+ gem 'ckeditor'
80
+
81
+ # keep track of views count
82
+ gem 'views_count', '0.0.3'
83
+
84
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
85
+
86
+ # Use ActiveModel has_secure_password
87
+ gem 'bcrypt', '~> 3.1.7'
88
+
89
+ # Use unicorn as the app server
90
+ gem 'unicorn'
91
+
92
+ gem 'bootstrap3-datetimepicker-rails', '~> 4.17.42'
93
+
94
+ # SeedBank
95
+ gem 'seedbank'
96
+
97
+ # Sidekiq
98
+ gem 'sidekiq'
99
+ gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq'
100
+
101
+
102
+ # Magnific popup
103
+ gem 'magnific-popup-rails', '~> 1.1.0'
104
+
105
+ group :development do
106
+ gem 'spring'
107
+ gem 'rvm-capistrano'
108
+ gem 'capistrano', '2.15.5'
109
+ gem 'capistrano-ext'
110
+ gem "capistrano-db-tasks", require: false, github: 'gkopylov/capistrano-db-tasks', ref: 'f3949cd'
111
+ gem 'quiet_assets'
112
+ gem "better_errors"
113
+ gem "binding_of_caller"
114
+ gem 'pixelforce_cms', '~> 2.4'
115
+ gem 'tmatt_cms', :git => '/Users/Charlie/Tmatt/Projects/TmattCms/Projects/tmatt_cms', :branch => 'development'
116
+ end
117
+
118
+ # Use debugger
119
+ # gem 'debugger', group: [:development, :test]
120
+
121
+
122
+ gem 'nokogiri'
123
+
124
+ # Geocoder
125
+ gem 'geocoder'
126
+
127
+ # Owl Carousel
128
+ gem 'owlcarousel-rails'
@@ -0,0 +1,29 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+ /db/*.sqlite3-journal
13
+
14
+ # Ignore all logfiles and tempfiles.
15
+ /log/*.log
16
+ /tmp
17
+
18
+ /config/database.yml
19
+ /config/secrets.yml
20
+ /config/application.yml
21
+ .idea/*
22
+ /spec/public/system/
23
+ /public/system/
24
+ /public/ckeditor_assets/
25
+ config/settings.local.yml
26
+ config/settings/*.local.yml
27
+ config/environments/*.local.yml
28
+
29
+ dump.rdb
@@ -0,0 +1,11 @@
1
+ class CkeditorTranslationInput < Ckeditor::Hooks::SimpleForm::CkeditorInput
2
+ include Concerns::TranslationHint
3
+
4
+ def input(wrapper_options = nil)
5
+ format(
6
+ '%s%s',
7
+ super,
8
+ translation_hint
9
+ ).html_safe
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module Concerns::TranslationHint
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ def translation_hint
6
+ attribute_value_trans = @builder.object.send("#{attribute_name}_trans")
7
+ prefix = I18n.locale == :en ? '中文' : 'English'
8
+
9
+ "<span class='font-italic font-grey'>#{prefix}: #{attribute_value_trans}</span>"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ class TranslationInput < SimpleForm::Inputs::StringInput
2
+ include Concerns::TranslationHint
3
+
4
+ def input(wrapper_options = nil)
5
+ format(
6
+ '%s%s',
7
+ super,
8
+ translation_hint
9
+ ).html_safe
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // the compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+
14
+ //= require h5bp
15
+ //= require respond
16
+ //= require jquery
17
+ //= require jquery_ujs
18
+ //= require jquery-ui
19
+ //= require bootstrap
20
+ //= require layout
21
+ //= require owl.carousel
22
+ //= require magnific-popup
23
+ //= require ckeditor/init
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)
3
+ * Copyright 2012-2014 Arnold Daniels
4
+ * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
5
+ */
6
+ if("undefined"==typeof jQuery)throw new Error("Jasny Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}void 0===a.support.transition&&(a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()}))}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.state=null,this.placement=null,this.options.recalc&&(this.calcClone(),a(window).on("resize",a.proxy(this.recalc,this))),this.options.autohide&&a(document).on("click",a.proxy(this.autohide,this)),this.options.toggle&&this.toggle(),this.options.disablescrolling&&(this.options.disableScrolling=this.options.disablescrolling,delete this.options.disablescrolling)};b.DEFAULTS={toggle:!0,placement:"auto",autohide:!0,recalc:!0,disableScrolling:!0},b.prototype.offset=function(){switch(this.placement){case"left":case"right":return this.$element.outerWidth();case"top":case"bottom":return this.$element.outerHeight()}},b.prototype.calcPlacement=function(){function b(a,b){if("auto"===e.css(b))return a;if("auto"===e.css(a))return b;var c=parseInt(e.css(a),10),d=parseInt(e.css(b),10);return c>d?b:a}if("auto"!==this.options.placement)return void(this.placement=this.options.placement);this.$element.hasClass("in")||this.$element.css("visiblity","hidden !important").addClass("in");var c=a(window).width()/this.$element.width(),d=a(window).height()/this.$element.height(),e=this.$element;this.placement=c>=d?b("left","right"):b("top","bottom"),"hidden !important"===this.$element.css("visibility")&&this.$element.removeClass("in").css("visiblity","")},b.prototype.opposite=function(a){switch(a){case"top":return"bottom";case"left":return"right";case"bottom":return"top";case"right":return"left"}},b.prototype.getCanvasElements=function(){var b=this.options.canvas?a(this.options.canvas):this.$element,c=b.find("*").filter(function(){return"fixed"===a(this).css("position")}).not(this.options.exclude);return b.add(c)},b.prototype.slide=function(b,c,d){if(!a.support.transition){var e={};return e[this.placement]="+="+c,b.animate(e,350,d)}var f=this.placement,g=this.opposite(f);b.each(function(){"auto"!==a(this).css(f)&&a(this).css(f,(parseInt(a(this).css(f),10)||0)+c),"auto"!==a(this).css(g)&&a(this).css(g,(parseInt(a(this).css(g),10)||0)-c)}),this.$element.one(a.support.transition.end,d).emulateTransitionEnd(350)},b.prototype.disableScrolling=function(){var b=a("body").width(),c="padding-"+this.opposite(this.placement);if(void 0===a("body").data("offcanvas-style")&&a("body").data("offcanvas-style",a("body").attr("style")||""),a("body").css("overflow","hidden"),a("body").width()>b){var d=parseInt(a("body").css(c),10)+a("body").width()-b;setTimeout(function(){a("body").css(c,d)},1)}},b.prototype.show=function(){if(!this.state){var b=a.Event("show.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-in",this.calcPlacement();var c=this.getCanvasElements(),d=this.placement,e=this.opposite(d),f=this.offset();-1!==c.index(this.$element)&&(a(this.$element).data("offcanvas-style",a(this.$element).attr("style")||""),this.$element.css(d,-1*f),this.$element.css(d)),c.addClass("canvas-sliding").each(function(){void 0===a(this).data("offcanvas-style")&&a(this).data("offcanvas-style",a(this).attr("style")||""),"static"===a(this).css("position")&&a(this).css("position","relative"),"auto"!==a(this).css(d)&&"0px"!==a(this).css(d)||"auto"!==a(this).css(e)&&"0px"!==a(this).css(e)||a(this).css(d,0)}),this.options.disableScrolling&&this.disableScrolling();var g=function(){"slide-in"==this.state&&(this.state="slid",c.removeClass("canvas-sliding").addClass("canvas-slid"),this.$element.trigger("shown.bs.offcanvas"))};setTimeout(a.proxy(function(){this.$element.addClass("in"),this.slide(c,f,a.proxy(g,this))},this),1)}}},b.prototype.hide=function(){if("slid"===this.state){var b=a.Event("hide.bs.offcanvas");if(this.$element.trigger(b),!b.isDefaultPrevented()){this.state="slide-out";var c=a(".canvas-slid"),d=(this.placement,-1*this.offset()),e=function(){"slide-out"==this.state&&(this.state=null,this.placement=null,this.$element.removeClass("in"),c.removeClass("canvas-sliding"),c.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")}),this.$element.trigger("hidden.bs.offcanvas"))};c.removeClass("canvas-slid").addClass("canvas-sliding"),setTimeout(a.proxy(function(){this.slide(c,d,a.proxy(e,this))},this),1)}}},b.prototype.toggle=function(){"slide-in"!==this.state&&"slide-out"!==this.state&&this["slid"===this.state?"hide":"show"]()},b.prototype.calcClone=function(){this.$calcClone=this.$element.clone().html("").addClass("offcanvas-clone").removeClass("in").appendTo(a("body"))},b.prototype.recalc=function(){if("none"!==this.$calcClone.css("display")&&("slid"===this.state||"slide-in"===this.state)){this.state=null,this.placement=null;var b=this.getCanvasElements();this.$element.removeClass("in"),b.removeClass("canvas-slid"),b.add(this.$element).add("body").each(function(){a(this).attr("style",a(this).data("offcanvas-style")).removeData("offcanvas-style")})}},b.prototype.autohide=function(b){0===a(b.target).closest(this.$element).length&&this.hide()};var c=a.fn.offcanvas;a.fn.offcanvas=function(c){return this.each(function(){var d=a(this),e=d.data("bs.offcanvas"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.offcanvas",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.offcanvas.Constructor=b,a.fn.offcanvas.noConflict=function(){return a.fn.offcanvas=c,this},a(document).on("click.bs.offcanvas.data-api","[data-toggle=offcanvas]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.offcanvas"),h=g?"toggle":d.data();b.stopPropagation(),g?g.toggle():f.offcanvas(h)})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.$element.on("click.bs.rowlink","td:not(.rowlink-skip)",a.proxy(this.click,this))};b.DEFAULTS={target:"a"},b.prototype.click=function(b){var c=a(b.currentTarget).closest("tr").find(this.options.target)[0];if(a(b.target)[0]!==c)if(b.preventDefault(),c.click)c.click();else if(document.createEvent){var d=document.createEvent("MouseEvents");d.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),c.dispatchEvent(d)}};var c=a.fn.rowlink;a.fn.rowlink=function(c){return this.each(function(){var d=a(this),e=d.data("bs.rowlink");e||d.data("bs.rowlink",e=new b(this,c))})},a.fn.rowlink.Constructor=b,a.fn.rowlink.noConflict=function(){return a.fn.rowlink=c,this},a(document).on("click.bs.rowlink.data-api",'[data-link="row"]',function(b){if(0===a(b.target).closest(".rowlink-skip").length){var c=a(this);c.data("bs.rowlink")||(c.rowlink(c.data()),a(b.target).trigger("click.bs.rowlink"))}})}(window.jQuery),+function(a){"use strict";var b=void 0!==window.orientation,c=navigator.userAgent.toLowerCase().indexOf("android")>-1,d="Microsoft Internet Explorer"==window.navigator.appName,e=function(b,d){c||(this.$element=a(b),this.options=a.extend({},e.DEFAULTS,d),this.mask=String(this.options.mask),this.init(),this.listen(),this.checkVal())};e.DEFAULTS={mask:"",placeholder:"_",definitions:{9:"[0-9]",a:"[A-Za-z]",w:"[A-Za-z0-9]","*":"."}},e.prototype.init=function(){var b=this.options.definitions,c=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,a.each(this.mask.split(""),a.proxy(function(a,d){"?"==d?(c--,this.partialPosition=a):b[d]?(this.tests.push(new RegExp(b[d])),null===this.firstNonMaskPos&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=a.map(this.mask.split(""),a.proxy(function(a){return"?"!=a?b[a]?this.options.placeholder:a:void 0},this)),this.focusText=this.$element.val(),this.$element.data("rawMaskFn",a.proxy(function(){return a.map(this.buffer,function(a,b){return this.tests[b]&&a!=this.options.placeholder?a:null}).join("")},this))},e.prototype.listen=function(){if(!this.$element.attr("readonly")){var b=(d?"paste":"input")+".mask";this.$element.on("unmask.bs.inputmask",a.proxy(this.unmask,this)).on("focus.bs.inputmask",a.proxy(this.focusEvent,this)).on("blur.bs.inputmask",a.proxy(this.blurEvent,this)).on("keydown.bs.inputmask",a.proxy(this.keydownEvent,this)).on("keypress.bs.inputmask",a.proxy(this.keypressEvent,this)).on(b,a.proxy(this.pasteEvent,this))}},e.prototype.caret=function(a,b){if(0!==this.$element.length){if("number"==typeof a)return b="number"==typeof b?b:a,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}});if(this.$element[0].setSelectionRange)a=this.$element[0].selectionStart,b=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var c=document.selection.createRange();a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length}return{begin:a,end:b}}},e.prototype.seekNext=function(a){for(var b=this.mask.length;++a<=b&&!this.tests[a];);return a},e.prototype.seekPrev=function(a){for(;--a>=0&&!this.tests[a];);return a},e.prototype.shiftL=function(a,b){var c=this.mask.length;if(!(0>a)){for(var d=a,e=this.seekNext(b);c>d;d++)if(this.tests[d]){if(!(c>e&&this.tests[d].test(this.buffer[e])))break;this.buffer[d]=this.buffer[e],this.buffer[e]=this.options.placeholder,e=this.seekNext(e)}this.writeBuffer(),this.caret(Math.max(this.firstNonMaskPos,a))}},e.prototype.shiftR=function(a){for(var b=this.mask.length,c=a,d=this.options.placeholder;b>c;c++)if(this.tests[c]){var e=this.seekNext(c),f=this.buffer[c];if(this.buffer[c]=d,!(b>e&&this.tests[e].test(f)))break;d=f}},e.prototype.unmask=function(){this.$element.unbind(".mask").removeData("inputmask")},e.prototype.focusEvent=function(){this.focusText=this.$element.val();var a=this.mask.length,b=this.checkVal();this.writeBuffer();var c=this,d=function(){b==a?c.caret(0,b):c.caret(b)};d(),setTimeout(d,50)},e.prototype.blurEvent=function(){this.checkVal(),this.$element.val()!==this.focusText&&this.$element.trigger("change")},e.prototype.keydownEvent=function(a){var c=a.which;if(8==c||46==c||b&&127==c){var d=this.caret(),e=d.begin,f=d.end;return f-e===0&&(e=46!=c?this.seekPrev(e):f=this.seekNext(e-1),f=46==c?this.seekNext(f):f),this.clearBuffer(e,f),this.shiftL(e,f-1),!1}return 27==c?(this.$element.val(this.focusText),this.caret(0,this.checkVal()),!1):void 0},e.prototype.keypressEvent=function(a){var b=this.mask.length,c=a.which,d=this.caret();if(a.ctrlKey||a.altKey||a.metaKey||32>c)return!0;if(c){d.end-d.begin!==0&&(this.clearBuffer(d.begin,d.end),this.shiftL(d.begin,d.end-1));var e=this.seekNext(d.begin-1);if(b>e){var f=String.fromCharCode(c);if(this.tests[e].test(f)){this.shiftR(e),this.buffer[e]=f,this.writeBuffer();var g=this.seekNext(e);this.caret(g)}}return!1}},e.prototype.pasteEvent=function(){var a=this;setTimeout(function(){a.caret(a.checkVal(!0))},0)},e.prototype.clearBuffer=function(a,b){for(var c=this.mask.length,d=a;b>d&&c>d;d++)this.tests[d]&&(this.buffer[d]=this.options.placeholder)},e.prototype.writeBuffer=function(){return this.$element.val(this.buffer.join("")).val()},e.prototype.checkVal=function(a){for(var b=this.mask.length,c=this.$element.val(),d=-1,e=0,f=0;b>e;e++)if(this.tests[e]){for(this.buffer[e]=this.options.placeholder;f++<c.length;){var g=c.charAt(f-1);if(this.tests[e].test(g)){this.buffer[e]=g,d=e;break}}if(f>c.length)break}else this.buffer[e]==c.charAt(f)&&e!=this.partialPosition&&(f++,d=e);return!a&&d+1<this.partialPosition?(this.$element.val(""),this.clearBuffer(0,b)):(a||d+1>=this.partialPosition)&&(this.writeBuffer(),a||this.$element.val(this.$element.val().substring(0,d+1))),this.partialPosition?e:this.firstNonMaskPos};var f=a.fn.inputmask;a.fn.inputmask=function(b){return this.each(function(){var c=a(this),d=c.data("bs.inputmask");d||c.data("bs.inputmask",d=new e(this,b))})},a.fn.inputmask.Constructor=e,a.fn.inputmask.noConflict=function(){return a.fn.inputmask=f,this},a(document).on("focus.bs.inputmask.data-api","[data-mask]",function(){var b=a(this);b.data("bs.inputmask")||b.inputmask(b.data())})}(window.jQuery),+function(a){"use strict";var b="Microsoft Internet Explorer"==window.navigator.appName,c=function(b,c){if(this.$element=a(b),this.$input=this.$element.find(":file"),0!==this.$input.length){this.name=this.$input.attr("name")||c.name,this.$hidden=this.$element.find('input[type=hidden][name="'+this.name+'"]'),0===this.$hidden.length&&(this.$hidden=a('<input type="hidden">').insertBefore(this.$input)),this.$preview=this.$element.find(".fileinput-preview");var d=this.$preview.css("height");"inline"!==this.$preview.css("display")&&"0px"!==d&&"none"!==d&&this.$preview.css("line-height",d),this.original={exists:this.$element.hasClass("fileinput-exists"),preview:this.$preview.html(),hiddenVal:this.$hidden.val()},this.listen()}};c.prototype.listen=function(){this.$input.on("change.bs.fileinput",a.proxy(this.change,this)),a(this.$input[0].form).on("reset.bs.fileinput",a.proxy(this.reset,this)),this.$element.find('[data-trigger="fileinput"]').on("click.bs.fileinput",a.proxy(this.trigger,this)),this.$element.find('[data-dismiss="fileinput"]').on("click.bs.fileinput",a.proxy(this.clear,this))},c.prototype.change=function(b){var c=void 0===b.target.files?b.target&&b.target.value?[{name:b.target.value.replace(/^.+\\/,"")}]:[]:b.target.files;if(b.stopPropagation(),0===c.length)return void this.clear();this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);var d=c[0];if(this.$preview.length>0&&("undefined"!=typeof d.type?d.type.match(/^image\/(gif|png|jpeg)$/):d.name.match(/\.(gif|png|jpe?g)$/i))&&"undefined"!=typeof FileReader){var e=new FileReader,f=this.$preview,g=this.$element;e.onload=function(b){var e=a("<img>");e[0].src=b.target.result,c[0].result=b.target.result,g.find(".fileinput-filename").text(d.name),"none"!=f.css("max-height")&&e.css("max-height",parseInt(f.css("max-height"),10)-parseInt(f.css("padding-top"),10)-parseInt(f.css("padding-bottom"),10)-parseInt(f.css("border-top"),10)-parseInt(f.css("border-bottom"),10)),f.html(e),g.addClass("fileinput-exists").removeClass("fileinput-new"),g.trigger("change.bs.fileinput",c)},e.readAsDataURL(d)}else this.$element.find(".fileinput-filename").text(d.name),this.$preview.text(d.name),this.$element.addClass("fileinput-exists").removeClass("fileinput-new"),this.$element.trigger("change.bs.fileinput")},c.prototype.clear=function(a){if(a&&a.preventDefault(),this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name",""),b){var c=this.$input.clone(!0);this.$input.after(c),this.$input.remove(),this.$input=c}else this.$input.val("");this.$preview.html(""),this.$element.find(".fileinput-filename").text(""),this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),void 0!==a&&(this.$input.trigger("change"),this.$element.trigger("clear.bs.fileinput"))},c.prototype.reset=function(){this.clear(),this.$hidden.val(this.original.hiddenVal),this.$preview.html(this.original.preview),this.$element.find(".fileinput-filename").text(""),this.original.exists?this.$element.addClass("fileinput-exists").removeClass("fileinput-new"):this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),this.$element.trigger("reset.bs.fileinput")},c.prototype.trigger=function(a){this.$input.trigger("click"),a.preventDefault()};var d=a.fn.fileinput;a.fn.fileinput=function(b){return this.each(function(){var d=a(this),e=d.data("bs.fileinput");e||d.data("bs.fileinput",e=new c(this,b)),"string"==typeof b&&e[b]()})},a.fn.fileinput.Constructor=c,a.fn.fileinput.noConflict=function(){return a.fn.fileinput=d,this},a(document).on("click.fileinput.data-api",'[data-provides="fileinput"]',function(b){var c=a(this);if(!c.data("bs.fileinput")){c.fileinput(c.data());var d=a(b.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');d.length>0&&(b.preventDefault(),d.trigger("click.bs.fileinput"))}})}(window.jQuery);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Created by Charlie on 20/12/2016.
3
+ */
4
+
5
+ $(function() {
6
+ $('.open-popup-link').magnificPopup({
7
+ removalDelay: 500,
8
+ type:'inline',
9
+ midClick: true,
10
+ callbacks: {
11
+ beforeOpen: function() {
12
+ this.st.mainClass = this.st.el.attr('data-effect');
13
+ }
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,29 @@
1
+ .navmenu.navmenu-default.navmenu-fixed-left.offcanvas-sm{:style => ""}
2
+ %a.navmenu-brand{:href => "#"} Project
3
+ %ul.nav.navmenu-nav
4
+
5
+ -#%li
6
+ -# = link_to dashboard_home_sliders_path, {:class => request.env['PATH_INFO'].include?('home_sliders') ? 'active' : ''} do
7
+ -# %span
8
+ -# = t('home_slider')
9
+ -#
10
+ -#%li.dropdown.keep-open
11
+ -# %a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#"}
12
+ -# = t('language')
13
+ -# %b.caret
14
+ -# %ul.dropdown-menu.navmenu-nav
15
+ -# %li
16
+ -# = link_to "English", locale: "en"
17
+ -# %li
18
+ -# = link_to "中文", locale: "zh"
19
+ -#
20
+ -#%li
21
+ -# = link_to 'Log out', destroy_admin_user_session_path, method: :delete
22
+
23
+
24
+ .navbar.navbar-default.navbar-fixed-top.hidden-md.hidden-lg
25
+ %button.navbar-toggle{"data-target" => ".navmenu", "data-toggle" => "offcanvas", :type => "button"}
26
+ %span.icon-bar
27
+ %span.icon-bar
28
+ %span.icon-bar
29
+ %a.navbar-brand{:href => "#"} Project
@@ -0,0 +1,19 @@
1
+ !!!
2
+
3
+ - content_for :custom_stylesheets do
4
+ = stylesheet_link_tag 'utils/jasny-bootstrap.css'
5
+
6
+ - html_tag class: 'no-js', lang: 'en' do
7
+ = render 'head'
8
+ %body{ class: "#{controller.controller_name} #{controller.action_name} dashboard #{('admin' if admin_user_signed_in?)}" }
9
+ #main
10
+ = render 'chromeframe'
11
+
12
+ = render 'dashboard/partial/sidebar'
13
+ .padd-side-lg
14
+ = yield
15
+
16
+ = render 'javascripts'
17
+ = yield :js
18
+ = yield :custom_javascripts
19
+ = javascript_include_tag 'utils/jasny-bootstrap.js'
@@ -0,0 +1,2 @@
1
+ .image-bg.bg-blur{:class => "cover-#{type}"}
2
+ .image.h_100.cover-image{:style => "background-image: url(#{url});"}
data/lib/tmatt_cms.rb CHANGED
@@ -1,5 +1 @@
1
- require "tmatt_cms/version"
2
-
3
- module TmattCms
4
- # Your code goes here...
5
- end
1
+ require "tmatt_cms/version"
@@ -1,3 +1,3 @@
1
1
  module TmattCms
2
- VERSION = "0.0.0"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'tmatt_cms'
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe TmattCms do
4
+ it 'has a version number' do
5
+ expect(TmattCms::VERSION).not_to be nil
6
+ end
7
+
8
+ it 'does something useful' do
9
+ expect(false).to eq(true)
10
+ end
11
+ end
data/tmatt_cms.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["xingyu.ye@outlook.com"]
11
11
 
12
12
  spec.summary = 'refine cms system based on pixelforce_cms'
13
- spec.description = 'refine cms system based on pixelforce_cms'
13
+ spec.description = 'refine cms system based on pixelforce_cms, including bug fix, globalization and dashboard'
14
14
  spec.homepage = 'http://rubygems.org/gems/tmatt_cms'
15
15
  spec.license = "MIT"
16
16
 
@@ -22,12 +22,11 @@ Gem::Specification.new do |spec|
22
22
  raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
23
  end
24
24
 
25
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.files = `git ls-files`.split($/)
26
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
27
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_development_dependency "bundler", "~> 1.12"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
- spec.add_development_dependency "rspec", "~> 3.0"
30
+ spec.add_development_dependency "bundler", "~> 1.3"
31
+ spec.add_development_dependency "rake"
33
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmatt_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xingyu Ye
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-30 00:00:00.000000000 Z
11
+ date: 2017-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,54 +16,39 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.12'
19
+ version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.12'
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
- - !ruby/object:Gem::Dependency
42
- name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '3.0'
55
- description: refine cms system based on pixelforce_cms
40
+ version: '0'
41
+ description: refine cms system based on pixelforce_cms, including bug fix, globalization
42
+ and dashboard
56
43
  email:
57
44
  - xingyu.ye@outlook.com
58
- executables: []
45
+ executables:
46
+ - console
47
+ - setup
59
48
  extensions: []
60
49
  extra_rdoc_files: []
61
50
  files:
62
51
  - ".gitignore"
63
- - ".idea/misc.xml"
64
- - ".idea/modules.xml"
65
- - ".idea/tmatt_cms.iml"
66
- - ".idea/workspace.xml"
67
52
  - ".rspec"
68
53
  - ".travis.yml"
69
54
  - CODE_OF_CONDUCT.md
@@ -73,8 +58,48 @@ files:
73
58
  - Rakefile
74
59
  - bin/console
75
60
  - bin/setup
61
+ - lib/generators/tmatt_cms/install_generator.rb
62
+ - lib/generators/tmatt_cms/templates/.keep
63
+ - lib/generators/tmatt_cms/templates/concerns/db_init.rb
64
+ - lib/generators/tmatt_cms/templates/concerns/pretty_url.rb
65
+ - lib/generators/tmatt_cms/templates/concerns/string_addition.rb
66
+ - lib/generators/tmatt_cms/templates/concerns/translatable.rb
67
+ - lib/generators/tmatt_cms/templates/config/application.rb
68
+ - lib/generators/tmatt_cms/templates/config/application.yml
69
+ - lib/generators/tmatt_cms/templates/config/initializers/active_job.rb
70
+ - lib/generators/tmatt_cms/templates/config/locales/views/dashboard/en.yml
71
+ - lib/generators/tmatt_cms/templates/config/locales/views/dashboard/zh.yml
72
+ - lib/generators/tmatt_cms/templates/config/locales/views/global/en.yml
73
+ - lib/generators/tmatt_cms/templates/config/locales/views/global/zh.yml
74
+ - lib/generators/tmatt_cms/templates/css/application/application.css
75
+ - lib/generators/tmatt_cms/templates/css/application/ckeditor.css.scss
76
+ - lib/generators/tmatt_cms/templates/css/application/index.css.scss
77
+ - lib/generators/tmatt_cms/templates/css/application/magnific_popup_rails.css.scss
78
+ - lib/generators/tmatt_cms/templates/css/application/main.css.scss
79
+ - lib/generators/tmatt_cms/templates/css/application/mixin.css.scss
80
+ - lib/generators/tmatt_cms/templates/css/application/variables.css.scss
81
+ - lib/generators/tmatt_cms/templates/css/application/z_index.css.scss
82
+ - lib/generators/tmatt_cms/templates/css/layouts/footer.css.scss
83
+ - lib/generators/tmatt_cms/templates/css/layouts/form.css.scss
84
+ - lib/generators/tmatt_cms/templates/css/layouts/header.css.scss
85
+ - lib/generators/tmatt_cms/templates/css/style.css.scss
86
+ - lib/generators/tmatt_cms/templates/css/utils/jasny-bootstrap.min.css
87
+ - lib/generators/tmatt_cms/templates/gemfile/Gemfile
88
+ - lib/generators/tmatt_cms/templates/git_ignore/gitignore
89
+ - lib/generators/tmatt_cms/templates/inputs/ckeditor_translation_input.rb
90
+ - lib/generators/tmatt_cms/templates/inputs/concerns/translation_hint.rb
91
+ - lib/generators/tmatt_cms/templates/inputs/translation_input.rb
92
+ - lib/generators/tmatt_cms/templates/js/application.js
93
+ - lib/generators/tmatt_cms/templates/js/utils/jasny-bootstrap.min.js
94
+ - lib/generators/tmatt_cms/templates/js/utils/magnificPopup.js
95
+ - lib/generators/tmatt_cms/templates/seed_bank/all.seeds.rb
96
+ - lib/generators/tmatt_cms/templates/views/dashboard/partial/_sidebar.html.haml
97
+ - lib/generators/tmatt_cms/templates/views/layouts/dashboard.html.haml
98
+ - lib/generators/tmatt_cms/templates/views/utils/_image_cover.html.haml
76
99
  - lib/tmatt_cms.rb
77
100
  - lib/tmatt_cms/version.rb
101
+ - spec/spec_helper.rb
102
+ - spec/tmatt_cms_spec.rb
78
103
  - tmatt_cms.gemspec
79
104
  homepage: http://rubygems.org/gems/tmatt_cms
80
105
  licenses:
@@ -101,4 +126,6 @@ rubygems_version: 2.6.11
101
126
  signing_key:
102
127
  specification_version: 4
103
128
  summary: refine cms system based on pixelforce_cms
104
- test_files: []
129
+ test_files:
130
+ - spec/spec_helper.rb
131
+ - spec/tmatt_cms_spec.rb