mustache_render 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/lib/generators/mustache_render/install/templates/active_record/migration.rb +65 -0
  2. data/lib/generators/mustache_render/install/templates/config/initializers/mustache_render.rb +25 -0
  3. data/lib/generators/mustache_render/{migration → install}/templates/models/active_record/mustache_render_folder.rb +0 -0
  4. data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_manager.rb +6 -0
  5. data/lib/generators/mustache_render/{migration → install}/templates/models/active_record/mustache_render_template.rb +0 -0
  6. data/lib/generators/mustache_render/install/templates/models/active_record/mustache_render_template_version.rb +6 -0
  7. data/lib/generators/mustache_render/{migration/install_generator.rb → install_generator.rb} +5 -5
  8. data/lib/mustache_render.rb +14 -6
  9. data/lib/mustache_render/adapter.rb +75 -0
  10. data/lib/mustache_render/config.rb +48 -0
  11. data/lib/mustache_render/controllers/mustache_render/manage/base_controller.rb +42 -0
  12. data/lib/mustache_render/controllers/mustache_render/{manager → manage}/folders_controller.rb +3 -3
  13. data/lib/mustache_render/controllers/mustache_render/manage/template_versions_controller.rb +71 -0
  14. data/lib/mustache_render/controllers/mustache_render/{manager → manage}/templates_controller.rb +12 -5
  15. data/lib/mustache_render/helpers/mustache_render/manage/base_helper.rb +29 -0
  16. data/lib/mustache_render/models/mustache_render_manager_mixin.rb +23 -0
  17. data/lib/mustache_render/models/mustache_render_template_mixin.rb +42 -2
  18. data/lib/mustache_render/models/mustache_render_template_version_mixin.rb +46 -0
  19. data/lib/mustache_render/resources/jquery.js +9473 -0
  20. data/lib/mustache_render/resources/jquery_ujs.js +429 -0
  21. data/lib/mustache_render/version.rb +1 -1
  22. data/lib/mustache_render/views/layouts/mustache_render/manage/base.html.erb +22 -0
  23. data/lib/mustache_render/views/mustache_render/manage/folders/_edit_2.html.erb +7 -0
  24. data/lib/mustache_render/views/mustache_render/manage/folders/_edit_3.html.erb +6 -0
  25. data/lib/mustache_render/views/mustache_render/{manager → manage}/folders/_form.html.erb +0 -0
  26. data/lib/mustache_render/views/mustache_render/{manager/folders/new.html.erb → manage/folders/_new_2.html.erb} +1 -6
  27. data/lib/mustache_render/views/mustache_render/manage/folders/_new_3.html.erb +3 -0
  28. data/lib/mustache_render/views/mustache_render/manage/folders/edit.html.erb +11 -0
  29. data/lib/mustache_render/views/mustache_render/{manager → manage}/folders/index.html.erb +2 -2
  30. data/lib/mustache_render/views/mustache_render/manage/folders/new.html.erb +10 -0
  31. data/lib/mustache_render/views/mustache_render/{manager → manage}/folders/show.html.erb +6 -6
  32. data/lib/mustache_render/views/mustache_render/manage/template_versions/_edit_2.html.erb +10 -0
  33. data/lib/mustache_render/views/mustache_render/manage/template_versions/_edit_3.html.erb +10 -0
  34. data/lib/mustache_render/views/mustache_render/manage/template_versions/_form.html.erb +43 -0
  35. data/lib/mustache_render/views/mustache_render/manage/template_versions/_list.html.erb +41 -0
  36. data/lib/mustache_render/views/mustache_render/manage/template_versions/edit.html.erb +22 -0
  37. data/lib/mustache_render/views/mustache_render/manage/template_versions/index.html.erb +20 -0
  38. data/lib/mustache_render/views/mustache_render/manage/template_versions/show.html.erb +53 -0
  39. data/lib/mustache_render/views/mustache_render/manage/templates/_edit_2.html.erb +10 -0
  40. data/lib/mustache_render/views/mustache_render/manage/templates/_edit_3.html.erb +9 -0
  41. data/lib/mustache_render/views/mustache_render/{manager → manage}/templates/_form.html.erb +7 -0
  42. data/lib/mustache_render/views/mustache_render/manage/templates/_new_2.html.erb +9 -0
  43. data/lib/mustache_render/views/mustache_render/manage/templates/_new_3.html.erb +9 -0
  44. data/lib/mustache_render/views/mustache_render/manage/templates/edit.html.erb +13 -0
  45. data/lib/mustache_render/views/mustache_render/manage/templates/new.html.erb +10 -0
  46. data/lib/mustache_render/views/mustache_render/manage/templates/show.html.erb +52 -0
  47. metadata +46 -21
  48. data/lib/generators/mustache_render/migration/templates/active_record/migration.rb +0 -37
  49. data/lib/mustache_render/controllers/mustache_render/manager/base_controller.rb +0 -17
  50. data/lib/mustache_render/views/layouts/mustache_render/manager/base.html.erb +0 -14
  51. data/lib/mustache_render/views/mustache_render/manager/folders/edit.html.erb +0 -11
  52. data/lib/mustache_render/views/mustache_render/manager/templates/edit.html.erb +0 -15
  53. data/lib/mustache_render/views/mustache_render/manager/templates/new.html.erb +0 -12
  54. data/lib/mustache_render/views/mustache_render/manager/templates/show.html.erb +0 -33
@@ -0,0 +1,65 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class MustacheRenderMigration < ActiveRecord::Migration
3
+ def self.up
4
+ create_table :mustache_render_folders, :options => 'DEFAULT CHARSET=utf8' do |t|
5
+ t.string :name, :default => '' # 文件夹的名称
6
+
7
+ t.string :full_path, :default => '' # 全路径
8
+
9
+ ###### for nested_ful #####################
10
+ t.integer :parent_id # 父节点的id
11
+ t.integer :left_id
12
+ t.integer :right_id
13
+ t.integer :depth # 深度
14
+ t.integer :children_count, :default => 0
15
+ ###########################################
16
+
17
+ t.text :note # 备注
18
+
19
+ t.timestamps
20
+ end
21
+
22
+ create_table :mustache_render_templates, :options => 'DEFAULT CHARSET=utf8' do |t|
23
+ t.integer :last_user_id # 最后一个修改模板的用户
24
+ t.integer :create_user_id # 创建者的用户id
25
+ t.integer :folder_id # 文件夹的ID
26
+ t.string :name # 模板的名称
27
+ t.text :content # 代码
28
+
29
+ t.text :note # 备注
30
+ t.timestamps
31
+ end
32
+
33
+ create_table :mustache_render_template_versions, :options => 'DEFAULT CHARSET=utf8' do |t|
34
+ t.integer :template_id # 模板的id
35
+ t.integer :last_user_id # 最后一个修改模板的用户
36
+ t.integer :create_user_id # 创建者的用户id
37
+ t.integer :folder_id # 文件夹的ID
38
+ t.string :name # 模板的名称
39
+ t.text :content # 代码
40
+ t.string :full_path
41
+ t.string :change_log # 修改日志
42
+
43
+ t.text :note # 备注
44
+ t.timestamps
45
+ end
46
+
47
+ create_table :mustache_render_managers, :options => 'DEFAULT CHARSET=utf8' do |t|
48
+ t.integer :user_id
49
+
50
+ t.integer :admin_able # 是否是管理权限
51
+ t.integer :edit_able # 是否可以编辑
52
+
53
+ t.timestamps
54
+ end
55
+
56
+ end
57
+
58
+ def self.down
59
+ drop_table :mustache_render_folders
60
+ drop_table :mustache_render_template_versions
61
+ drop_table :mustache_render_templates
62
+ drop_table :mustache_render_managers
63
+ end
64
+ end
65
+
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+ MustacheRender.configure do |config|
3
+ # 默认的模板渲染媒介
4
+ # :db => 数据库渲染
5
+ # :file => 文件系统渲染
6
+ config.default_render_media = :db
7
+
8
+ # 默认的文件模板的根目录
9
+ config.file_template_root_path = "#{Rails.root}/app/templates"
10
+
11
+ # 默认的文件模板的扩展名称
12
+ config.file_template_extension = 'mustache'
13
+
14
+ # 当模板缺少的时候是否抛出异常
15
+ config.raise_on_context_miss = false
16
+
17
+ config.adapter_configure do |adapter|
18
+
19
+ end
20
+
21
+ config.manage_center_need_login = true
22
+ config.user_login_url = '/login'
23
+ config.manager_authenticate_fail_url = '/login'
24
+ end
25
+
@@ -0,0 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class MustacheRenderManager < ActiveRecord::Base
3
+ include ::MustacheRender::Models::MustacheRenderManagerMixin
4
+
5
+ end
6
+
@@ -0,0 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class MustacheRenderTemplateVersion < ActiveRecord::Base
3
+ include ::MustacheRender::Models::MustacheRenderTemplateVersionMixin
4
+
5
+ end
6
+
@@ -3,19 +3,20 @@ require 'rails/generators'
3
3
  require 'rails/generators/migration'
4
4
 
5
5
  module MustacheRender
6
- module Migration
7
6
  class InstallGenerator < Rails::Generators::Base
8
7
  include Rails::Generators::Migration
9
8
 
10
- desc "Generates MustacheRender database migration"
9
+ desc "Generates MustacheRender database migration, models"
11
10
 
12
11
  def copy_files
13
12
  orm = options[:orm].to_s
14
13
  orm = "active_record" unless %w{active_record}.include?(orm)
15
- %w(mustache_render_folder mustache_render_template).each do |file|
14
+ %w(mustache_render_folder mustache_render_template mustache_render_manager mustache_render_template_version).each do |file|
16
15
  copy_model(orm, file)
17
16
  end
18
17
 
18
+ template "config/initializers/mustache_render.rb", "config/initializers/mustache_render.rb"
19
+
19
20
  if self.class.orm_has_migration?
20
21
  migration_template "#{orm}/migration.rb", 'db/migrate/mustache_render_migration'
21
22
  end
@@ -26,7 +27,7 @@ module MustacheRender
26
27
  end
27
28
 
28
29
  def self.source_root
29
- File.join(File.dirname(__FILE__), 'templates')
30
+ File.join(File.dirname(__FILE__), 'install', 'templates')
30
31
  end
31
32
 
32
33
  def self.orm_has_migration?
@@ -50,4 +51,3 @@ module MustacheRender
50
51
  end
51
52
  end
52
53
  end
53
- end
@@ -1,12 +1,18 @@
1
1
  # -*- encoding : utf-8 -*-
2
+ require 'mustache_render/adapter'
2
3
  require 'mustache_render/config'
3
4
  require 'mustache_render/mustache'
4
5
 
5
6
  module MustacheRender
6
- module Manager
7
- autoload :BaseController, 'mustache_render/controllers/mustache_render/manager/base_controller'
8
- autoload :FoldersController, 'mustache_render/controllers/mustache_render/manager/folders_controller'
9
- autoload :TemplatesController, 'mustache_render/controllers/mustache_render/manager/templates_controller'
7
+ autoload :Adapter, 'mustache_render/adapter'
8
+
9
+ module Manage
10
+ autoload :BaseHelper, 'mustache_render/helpers/mustache_render/manage/base_helper'
11
+
12
+ autoload :BaseController, 'mustache_render/controllers/mustache_render/manage/base_controller'
13
+ autoload :FoldersController, 'mustache_render/controllers/mustache_render/manage/folders_controller'
14
+ autoload :TemplatesController, 'mustache_render/controllers/mustache_render/manage/templates_controller'
15
+ autoload :TemplateVersionsController, 'mustache_render/controllers/mustache_render/manage/template_versions_controller'
10
16
  end
11
17
 
12
18
  module CoreExt
@@ -17,8 +23,10 @@ module MustacheRender
17
23
  end
18
24
 
19
25
  module Models
20
- autoload :MustacheRenderFolderMixin, 'mustache_render/models/mustache_render_folder_mixin'
21
- autoload :MustacheRenderTemplateMixin, 'mustache_render/models/mustache_render_template_mixin'
26
+ autoload :MustacheRenderManagerMixin, 'mustache_render/models/mustache_render_manager_mixin'
27
+ autoload :MustacheRenderFolderMixin, 'mustache_render/models/mustache_render_folder_mixin'
28
+ autoload :MustacheRenderTemplateMixin, 'mustache_render/models/mustache_render_template_mixin'
29
+ autoload :MustacheRenderTemplateVersionMixin, 'mustache_render/models/mustache_render_template_version_mixin'
22
30
  end
23
31
  end
24
32
 
@@ -0,0 +1,75 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module MustacheRender
3
+ #
4
+ # MustacheRender的适配器
5
+ #
6
+ class << self
7
+ def adapter
8
+ @adapter ||= Adapter.new
9
+ end
10
+
11
+ def adapter_configure
12
+ yield(@adapter ||= Adapter.new)
13
+ end
14
+ end
15
+
16
+ class Adapter
17
+ def initialize
18
+ end
19
+
20
+ ############# routes ##########################################
21
+ def manage_route_adapter(router)
22
+ if rails_2?
23
+ router.namespace :mustache_render do |render|
24
+ render.namespace :manage do |manage|
25
+ manage.resources :folders do |folder|
26
+ folder.resources :templates, :only => [:show, :new, :edit, :update, :create, :destroy] do |template|
27
+ template.resources :template_versions, :only => [:show, :index, :destroy, :update, :edit], :member => {
28
+ :revert => :post
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ elsif rails_3?
35
+ router.namespace :mustache_render do
36
+ router.namespace :manage do
37
+ router.resources :folders do
38
+ router.resources :templates, :only => [:show, :new, :edit, :update, :create, :destroy] do |template|
39
+ router.resources :template_versions, :only => [:show, :index, :destroy, :update, :edit] do
40
+ router.member do
41
+ router.post :revert
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ ################## after about rails ##########################
52
+ def rails?
53
+ defined?(Rails)
54
+ end
55
+
56
+ def rails_version
57
+ return @rails_version if defined?(@rails_version)
58
+
59
+ @rails_version = if rails?
60
+ Rails.version
61
+ end
62
+ end
63
+
64
+ def rails_3?
65
+ return @rails_3 if defined?(@rails_3)
66
+
67
+ @rails_3 = (rails? && rails_version > '3.0.0')
68
+ end
69
+
70
+ def rails_2?
71
+ return @rails_2 if defined?(@rails_2)
72
+ @rails_2 = (rails? && rails_version > '2.0.0' && rails_version < '3.0.0')
73
+ end
74
+ end
75
+ end
@@ -12,6 +12,15 @@ module MustacheRender
12
12
  def initialize
13
13
  end
14
14
 
15
+ # 配置适配器
16
+ def adapter_configure(&block)
17
+ ::MustacheRender.adapter_configure do |adapter|
18
+ if block_given?
19
+ block.call adapter
20
+ end
21
+ end
22
+ end
23
+
15
24
  #
16
25
  # 默认的渲染媒介
17
26
  #
@@ -23,6 +32,35 @@ module MustacheRender
23
32
  @default_render_media ||= media
24
33
  end
25
34
 
35
+ def manager_authenticate_fail_url
36
+ @manager_authenticate_fail_url ||= '/login'
37
+ end
38
+
39
+ def manager_authenticate_fail_url= url
40
+ @manager_authenticate_fail_url ||= url
41
+ end
42
+
43
+ def user_login_url
44
+ @user_login_url ||= '/login'
45
+ end
46
+
47
+ def user_login_url= url
48
+ @user_login_url ||= url
49
+ end
50
+
51
+ def manage_center_need_login?
52
+ if defined?(@manage_center_need_login)
53
+ @manage_center_need_login
54
+ else
55
+ true
56
+ end
57
+ end
58
+
59
+ ## 管理中心是否需要登录 ?
60
+ def manage_center_need_login= value
61
+ @manage_center_need_login = value unless defined?(@manage_center_need_login)
62
+ end
63
+
26
64
  #
27
65
  # lib 的基本路径
28
66
  #
@@ -54,5 +92,15 @@ module MustacheRender
54
92
  @raise_on_context_miss = boolean
55
93
  end
56
94
 
95
+ def manage_view_base
96
+ @manage_view_base ||= {
97
+ :title => "MustacheRender Manage Center"
98
+ }.merge(@_manage_view_base || {})
99
+ end
100
+
101
+ def manage_view_base= options={}
102
+ @_manage_view_base = options
103
+ end
104
+
57
105
  end
58
106
  end
@@ -0,0 +1,42 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module MustacheRender::Manage
3
+ class BaseController < ::ApplicationController
4
+ helper BaseHelper
5
+
6
+ before_filter :require_user_is_manager!
7
+ before_filter :set_mustache_manage_view_path
8
+
9
+ layout 'mustache_render/manage/base'
10
+
11
+ protected
12
+
13
+ #
14
+ # 设置mustache的管理器的view path
15
+ #
16
+ def set_mustache_manage_view_path
17
+ prepend_view_path "#{::MustacheRender.config.lib_base_path}/views"
18
+ end
19
+
20
+ def require_user_is_manager!
21
+ self.mustache_render_manager = current_user
22
+
23
+ if ::MustacheRender.config.manage_center_need_login?
24
+ if self.mustache_render_manager
25
+ ## 当前用户没有登录,跳往的url
26
+ redirect_to ::MustacheRender.config.user_login_url ## 用户登录的url
27
+ elsif !(::MustacheRenderManager.authenticate?(self.mustache_render_manager))
28
+ redirect_to ::MustacheRender.config.manager_authenticate_fail_url ## 用户没有权限要跳转的url
29
+ end
30
+ end
31
+ end
32
+
33
+ def mustache_render_manager
34
+ @_mustache_render_manager
35
+ end
36
+
37
+ def mustache_render_manager= user
38
+ return @_mustache_render_manager if defined?(@_mustache_render_manager)
39
+ @_mustache_render_manager ||= user
40
+ end
41
+ end
42
+ end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
- module MustacheRender::Manager
2
+ module MustacheRender::Manage
3
3
  class FoldersController < BaseController
4
4
  def index
5
5
 
@@ -24,7 +24,7 @@ module MustacheRender::Manager
24
24
  @mustache_render_folder = MustacheRenderFolder.new(params[:mustache_render_folder])
25
25
 
26
26
  if @mustache_render_folder.save
27
- redirect_to mustache_render_manager_folder_url(@mustache_render_folder)
27
+ redirect_to mustache_render_manage_folder_url(@mustache_render_folder)
28
28
  else
29
29
  render :new
30
30
  end
@@ -34,7 +34,7 @@ module MustacheRender::Manager
34
34
  @mustache_render_folder = MustacheRenderFolder.find params[:id]
35
35
 
36
36
  if @mustache_render_folder.update_attributes(params[:mustache_render_folder])
37
- redirect_to mustache_render_manager_folder_url(@mustache_render_folder)
37
+ redirect_to mustache_render_manage_folder_url(@mustache_render_folder)
38
38
  else
39
39
  render :edit
40
40
  end
@@ -0,0 +1,71 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module MustacheRender::Manage
3
+ class TemplateVersionsController < BaseController
4
+ before_filter :load_template_record
5
+
6
+ def show
7
+ @mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
8
+ end
9
+
10
+ def index
11
+ @mustache_render_template_versions = @mustache_render_template.template_versions
12
+ end
13
+
14
+ def destroy
15
+ # TODO: 是否增加删除功能
16
+ @mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
17
+
18
+ @mustache_render_template_version.destroy
19
+
20
+ redirect_to params[:return_to] || mustache_render_manage_folder_template_template_versions_url(
21
+ :folder_id => @mustache_render_template_version.folder_id,
22
+ :template_id => @mustache_render_template_version.template_id
23
+ )
24
+ end
25
+
26
+ def edit
27
+ @mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
28
+ end
29
+
30
+ def update
31
+ @mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
32
+
33
+ if @mustache_render_template_version.update_attributes(params[:mustache_render_template_version])
34
+ respond_to do |format|
35
+ format.html { redirect_to mustache_render_manage_folder_template_template_version_url(
36
+ :folder_id => @mustache_render_template_version.folder_id,
37
+ :template_id => @mustache_render_template_version.template_id,
38
+ :id => @mustache_render_template_version.id
39
+ )}
40
+ format.json { head :no_content }
41
+ end
42
+ else
43
+ respond_to do |format|
44
+ format.html { render 'edit' }
45
+ format.json { render :json => @mustache_render_template_version.errors, :status => :unprocessable_entity }
46
+ end
47
+ end
48
+ end
49
+
50
+ def revert
51
+ # TODO: 是否增加还原功能
52
+ @mustache_render_template_version = MustacheRenderTemplateVersion.find params[:id]
53
+
54
+ @mustache_render_template_version.revert
55
+
56
+ redirect_to params[:return_to] || mustache_render_manage_folder_template_template_versions_url(
57
+ :folder_id => @mustache_render_template_version.folder_id,
58
+ :template_id => @mustache_render_template_version.template_id
59
+ )
60
+
61
+ end
62
+
63
+ protected
64
+
65
+ def load_template_record
66
+ @mustache_render_template = MustacheRenderTemplate.find params[:template_id]
67
+ @mustache_render_folder = @mustache_render_template.folder
68
+ end
69
+
70
+ end
71
+ end