pageflow 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0df65573864dc2f38034269bb5b65e98e393a2ec
4
- data.tar.gz: 3d6ed3f266025ab4e9b222dd56cc7d052d2b2385
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWY2OTg0YTEzY2RiZmZmYWE2MDZlNmI3YjYwMmMxYWJkYjBmZTVhNA==
5
+ data.tar.gz: !binary |-
6
+ NGM3ZWNkYjIyN2RjNTY4MjE4MDE5YjRlYjZjZmQ5YTc2NmI3MjViZA==
5
7
  SHA512:
6
- metadata.gz: 6f8a8d7edf0adaa8d5054ddc69e741b14af907a75285f2c6f339a4093bba6445fa9c9424839b29204ec8344c52005380ee03a0b808076573dd50d8df4975f3cb
7
- data.tar.gz: d958750f25c211dfb4586b64cf034431068c9a5667f979cbe58ff13137a962e8d465d7df7afbf19f1d14b1783e8b31730cbc49e904a983ffe3afb011c83b12e0
8
+ metadata.gz: !binary |-
9
+ YmVjM2UwN2U0ZDZlZWM4OTdhN2VjZjBkY2QxNDI3MTkzNDg4ZDE3NTRhZDdm
10
+ YjA1NDM5YTI2YzQwOGU0ODljMjEwMDc2M2UyODQzYjVjYzdjNGQ5YWVmZDhm
11
+ OTg5ODFiZmI1NjBiYzM0YTQ1M2Q2ZDFiYjA4ZGMxYzZjYzI4ZjQ=
12
+ data.tar.gz: !binary |-
13
+ ZTU0ZDI4MjBmYmEyODQyZDliNzliNTM4ZDc5ZDBhODFmMjJkNjNjZWEyZTU1
14
+ OTE4NTIxNzRhODA0YTBkYTg1Y2FkZjM3NjdlNTI1NTMzMGVhNWExYzFjNDll
15
+ OThjYjhkNmIwMDA3M2ZjODEwYWQ5OGU4ZDk1MjkyOThkZWI2ZjA=
@@ -0,0 +1,75 @@
1
+ module Pageflow
2
+ ActiveAdmin.register Account, :as => 'Account' do
3
+ menu :priority => 3
4
+
5
+ config.batch_actions = false
6
+ config.clear_sidebar_sections!
7
+
8
+ index do
9
+ column :name do |account|
10
+ link_to account.name, admin_account_path(account)
11
+ end
12
+ column :cname
13
+ end
14
+
15
+ form do |f|
16
+ f.inputs do
17
+ f.input :name
18
+ f.input :default_file_rights
19
+ f.input :cname, :hint => I18n.t('admin.accounts.cname_hint')
20
+ f.input :default_theme, :include_blank => false
21
+ end
22
+ f.actions
23
+ end
24
+
25
+ show :title => :name do |account|
26
+ attributes_table_for account do
27
+ row :name, :class => 'name'
28
+ row :default_file_rights, :class => 'default_file_rights'
29
+ row :cname, :class => 'cname'
30
+ row :default_theme, :class => 'default_theme'
31
+ row :created_at
32
+ end
33
+
34
+ div :class => 'columns' do
35
+ panel I18n.t('activerecord.models.user.other') do
36
+ if account.users.any?
37
+ table_for account.users, :i18n => User do
38
+ column :full_name do |user|
39
+ link_to user.full_name, admin_user_path(user)
40
+ end
41
+ end
42
+ else
43
+ div :class => "blank_slate_container" do
44
+ span :class => "blank_slate" do
45
+ I18n.t('admin.accounts.no_members')
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ panel t('activerecord.models.entry.other') do
52
+ if account.entries.any?
53
+ table_for account.entries, :i18n => Entry do
54
+ column :title do |entry|
55
+ link_to(entry.title, admin_entry_path(entry))
56
+ end
57
+ end
58
+ else
59
+ div :class => "blank_slate_container" do
60
+ span :class => "blank_slate" do
61
+ I18n.t('admin.accounts.no_entries')
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ controller do
70
+ def permitted_params
71
+ params.permit(:account => [:name, :default_file_rights, :cname, :default_theme_id])
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,112 @@
1
+ module Pageflow
2
+ ActiveAdmin.register Entry, :as => 'Entry' do
3
+ menu :priority => 1
4
+
5
+ config.batch_actions = false
6
+ config.clear_sidebar_sections!
7
+
8
+ index do
9
+ column :title, :sortable => 'title' do |entry|
10
+ link_to entry.title, admin_entry_path(entry)
11
+ end
12
+ column I18n.t('admin.entries.members'), :class => 'members' do |entry|
13
+ entry_user_badge_list(entry)
14
+ end
15
+ if authorized?(:read, Account)
16
+ column :account, :sortable => 'account_id' do |entry|
17
+ link_to(entry.account.name, admin_account_path(entry.account), :data => {:id => entry.account.id})
18
+ end
19
+ end
20
+ column :created_at
21
+ column :updated_at
22
+ column :class => 'buttons' do |entry|
23
+ if authorized?(:edit, Entry)
24
+ span(link_to(I18n.t("admin.entries.editor"), pageflow.edit_entry_path(entry), :class => 'button'))
25
+ end
26
+ if entry.published?
27
+ span(link_to(I18n.t("admin.entries.show_public"), pageflow.entry_path(entry), :class => 'button'))
28
+ end
29
+ end
30
+ end
31
+
32
+ sidebar :folders, :only => :index do
33
+ text_node(link_to(I18n.t('admin.entries.add_folder'), new_admin_folder_path, :class => 'new'))
34
+ grouped_folder_list(Folder.accessible_by(Ability.new(current_user), :read),
35
+ :class => authorized?(:manage, Folder) ? 'editable' : nil,
36
+ :active_id => params[:folder_id],
37
+ :grouped_by_accounts => authorized?(:read, Account))
38
+ end
39
+
40
+ form do |f|
41
+ f.inputs do
42
+ f.input :title, :hint => I18n.t('admin.entries.title_hint')
43
+ if authorized?(:read, Account)
44
+ f.input :account, :include_blank => false
45
+
46
+ unless f.object.new_record?
47
+ f.input :theme, :include_blank => false
48
+ end
49
+ end
50
+ if authorized?(:manage, Folder)
51
+ f.input :folder, :collection => collection_for_folders(f.object.account), :include_blank => true
52
+ end
53
+ end
54
+ f.actions
55
+ end
56
+
57
+ action_item :only => :show do
58
+ if authorized?(:publish, Entry) && entry.published?
59
+ button_to(I18n.t("admin.entries.depublish"),
60
+ pageflow.current_entry_revisions_path(entry),
61
+ :method => :delete,
62
+ :data => {:rel => 'depublish', :confirm => I18n.t('admin.entries.confirm_depublish')})
63
+ end
64
+ end
65
+
66
+ member_action :snapshot, :method => :post do
67
+ entry = Entry.find(params[:id])
68
+ authorize!(:snapshot, entry)
69
+ entry.snapshot(:creator => current_user, :type => 'user')
70
+ redirect_to(admin_entry_path(entry))
71
+ end
72
+
73
+ show :title => :title do |entry|
74
+ render 'attributes_table', :entry => entry
75
+ render 'links', :entry => entry
76
+
77
+ div :class => 'columns' do
78
+ render 'members', :entry => entry
79
+ render 'revisions', :entry => entry
80
+ end
81
+ end
82
+
83
+ controller do
84
+ helper FoldersHelper
85
+ helper Admin::RevisionsHelper
86
+
87
+ def scoped_collection
88
+ params.key?(:folder_id) ? super.where(:folder_id => params[:folder_id]) : super
89
+ end
90
+
91
+ def build_new_resource
92
+ super.tap do |entry|
93
+ entry.account ||= current_user.account
94
+ entry.theme ||= entry.account.default_theme
95
+ end
96
+ end
97
+
98
+ def permitted_params
99
+ result = params.permit(:entry => [:title, :account_id, :theme_id, :folder_id])
100
+ restrict_attributes(params[:id], result[:entry]) if result[:entry]
101
+ result
102
+ end
103
+
104
+ private
105
+
106
+ def restrict_attributes(id, attributes)
107
+ attributes.except!(:account_id, :theme_id) unless authorized?(:read, Account)
108
+ attributes.except!(:folder_id) unless authorized?(:manage, Folder)
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,59 @@
1
+ module Pageflow
2
+ ActiveAdmin.register Folder, :as => 'Folder' do
3
+ menu false
4
+
5
+ # TODO
6
+ actions :new, :create, :edit, :update, :destroy
7
+
8
+ form do |f|
9
+ f.inputs do
10
+ if authorized?(:read, Account) && f.object.new_record?
11
+ f.input :account, :include_blank => false
12
+ end
13
+ f.input :name
14
+ end
15
+ f.actions do
16
+ f.action(:submit)
17
+ f.action(:cancel, :wrapper_html => {:class => 'cancel'})
18
+ end
19
+ end
20
+
21
+ controller do
22
+ def build_new_resource
23
+ super.tap do |folder|
24
+ folder.account ||= current_user.account
25
+ end
26
+ end
27
+
28
+ def create
29
+ super do |success, failure|
30
+ success.html { redirect_to(admin_entries_path) }
31
+ end
32
+ end
33
+
34
+ def update
35
+ super do |success, failure|
36
+ success.html { redirect_to(admin_entries_path(:folder_id => resource.id)) }
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ super do |success, failure|
42
+ success.html { redirect_to(admin_entries_path) }
43
+ end
44
+ end
45
+
46
+ def permitted_params
47
+ result = params.permit(:folder => [:name, :account_id])
48
+ restrict_attributes(params[:id], result[:folder]) if result[:folder]
49
+ result
50
+ end
51
+
52
+ private
53
+
54
+ def restrict_attributes(id, attributes)
55
+ attributes.except!(:account_id) if !authorized?(:read, Account) || id.present?
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,21 @@
1
+ module Pageflow
2
+ ActiveAdmin.register Membership, :as => 'Membership' do
3
+ menu false
4
+
5
+ actions :new, :create, :destroy
6
+
7
+ form :partial => 'form'
8
+
9
+ controller do
10
+ belongs_to :entry, :parent_class => Pageflow::Entry, :polymorphic => true
11
+ belongs_to :user, :parent_class => User, :polymorphic => true
12
+
13
+ helper Pageflow::UsersHelper
14
+ helper Pageflow::EntriesHelper
15
+
16
+ def permitted_params
17
+ params.permit(:membership => [:user_id, :entry_id])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ module Pageflow
2
+ ActiveAdmin.register Revision, :as => 'Revision' do
3
+ menu false
4
+
5
+ actions :edit, :update, :show
6
+
7
+ form :partial => 'form'
8
+
9
+ member_action :restore, :method => :post do
10
+ revision = Revision.find(params[:id])
11
+ entry = revision.entry
12
+ authorize!(:restore, entry)
13
+
14
+ entry.edit_lock.aquire(current_user)
15
+ revision.entry.restore(:revision => revision, :creator => current_user)
16
+ entry.edit_lock.release(current_user)
17
+
18
+ redirect_to(admin_entry_path(entry, :notice => I18n.t('admin.revisions.restored')))
19
+ end
20
+
21
+ controller do
22
+ include EditLocking
23
+
24
+ def permitted_params
25
+ params.permit(:revision => [:published_until])
26
+ end
27
+
28
+ def show
29
+ redirect_to([:admin, resource.entry])
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,184 @@
1
+ module Pageflow
2
+ ActiveAdmin.register User do
3
+ menu :priority => 2
4
+
5
+ config.batch_actions = false
6
+ config.clear_action_items!
7
+
8
+ index do
9
+ column :full_name, :sortable => 'last_name' do |user|
10
+ link_to(user.full_name, admin_user_path(user))
11
+ end
12
+ column :email
13
+ if authorized?(:read, Account)
14
+ column :account, :sortable => 'account_id' do |user|
15
+ link_to(user.account.name, admin_account_path(user.account))
16
+ end
17
+ end
18
+ column :role, :sortable => 'role' do |user|
19
+ I18n.t(user.role, :scope => 'admin.users.roles')
20
+ end
21
+ column :last_sign_in_at
22
+ column :sign_in_count
23
+ boolean_status_tag_column :suspended?
24
+ end
25
+
26
+ filter :last_name
27
+ filter :first_name
28
+ filter :email
29
+
30
+ action_item :only => :index do
31
+ link_to I18n.t('admin.users.invite_user'), new_admin_user_path, :data => {:rel => 'invite_user'}
32
+ end
33
+
34
+ show do |user|
35
+ div :class => :columns do
36
+ div do
37
+ attributes_table_for user do
38
+ row :last_name, :class => 'last_name'
39
+ row :first_name, :class => 'first_name'
40
+ row :email, :class => 'email'
41
+ if authorized?(:read, Account)
42
+ row :account, :class => 'account'
43
+ end
44
+ row :role, :class => 'role' do
45
+ span 'data-user-role' => user.role do
46
+ I18n.t(user.role, :scope => 'admin.users.roles')
47
+ end
48
+ end
49
+
50
+ row :created_at
51
+ row :last_sign_in_at
52
+ boolean_status_tag_row :suspended?
53
+ end
54
+
55
+ para do
56
+ link_to I18n.t('admin.users.resend_invitation'), resend_invitation_admin_user_path(user), :method => :post, :class => 'button', :data => {:rel => 'resend_invitation'}
57
+ end
58
+ end
59
+
60
+ panel I18n.t('activerecord.models.entry.other') do
61
+ if user.memberships.any?
62
+ table_for user.memberships, :class => 'memberships', :i18n => Membership do
63
+ column :entry do |membership|
64
+ link_to(membership.entry.title, admin_entry_path(membership.entry))
65
+ end
66
+ column do |membership|
67
+ if authorized?(:destroy, membership)
68
+ link_to(I18n.t('admin.users.delete'), admin_user_membership_path(user, membership), :method => :delete, :data => {:confirm => I18n.t('active_admin.delete_confirmation'), :rel => 'delete_membership'})
69
+ end
70
+ end
71
+ end
72
+ else
73
+ div :class => "blank_slate_container" do
74
+ span :class => "blank_slate" do
75
+ I18n.t('admin.users.empty')
76
+ end
77
+ end
78
+ end
79
+
80
+ span do
81
+ link_to I18n.t('admin.users.add_entry'), new_admin_user_membership_path(user), :class => 'button', :data => {:rel => 'add_membership'}
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ action_item :only => :show do
88
+ link_to I18n.t('admin.users.edit'), edit_admin_user_path(user), :data => {:rel => 'edit_user'}
89
+ end
90
+
91
+ action_item :only => :show do
92
+ if user != current_user
93
+ if user.suspended?
94
+ link_to I18n.t('admin.users.unsuspend'), unsuspend_admin_user_path(user), :method => :post, :data => {:rel => 'unsuspend_user'}
95
+ else
96
+ link_to I18n.t('admin.users.suspend'), suspend_admin_user_path(user), :method => :post, :data => {:rel => 'suspend_user'}
97
+ end
98
+ end
99
+ end
100
+
101
+ action_item :only => :show do
102
+ if user != current_user
103
+ link_to I18n.t('admin.users.delete'), admin_user_path(user), :method => :delete, :data => {:rel => 'delete_user', :confirm => I18n.t('admin.users.confirm_delete')}
104
+ end
105
+ end
106
+
107
+ form do |f|
108
+ f.inputs "Details" do
109
+ f.input :email, :hint => f.object.new_record? && I18n.t('admin.users.email_invitation_hint')
110
+ f.input :first_name
111
+ f.input :last_name
112
+ if authorized?(:read, Account)
113
+ f.input :account, :include_blank => false
114
+ end
115
+ f.input :role, :collection => collection_for_user_roles, :include_blank => false, :hint => authorized?(:read, Account) ? I18n.t('admin.users.role_hint.admin') : I18n.t('admin.users.role_hint.other')
116
+ end
117
+ f.actions
118
+ end
119
+
120
+ collection_action 'me', :title => 'Profil', :method => [:get, :patch] do
121
+ if request.patch?
122
+ if current_user.update_with_password(user_profile_params)
123
+ sign_in current_user, :bypass => true
124
+ redirect_to admin_root_path, :notice => I18n.t('admin.users.me.updated')
125
+ end
126
+ end
127
+ end
128
+
129
+ collection_action 'delete_me', :title => 'Konto entfernen', :method => [:get, :delete] do
130
+ if request.delete?
131
+ if current_user.destroy_with_password(params.require(:user)[:current_password])
132
+ redirect_to admin_root_path, :notice => I18n.t('admin.users.me.updated')
133
+ end
134
+ end
135
+ end
136
+
137
+ member_action :resend_invitation, :method => :post do
138
+ InvitedUser.find(params[:id]).send_invitation!
139
+ redirect_to :back, :notice => I18n.t('admin.users.resent_invitation')
140
+ end
141
+
142
+ member_action :suspend, :method => :post do
143
+ User.find(params[:id]).suspend!
144
+ redirect_to :back, :notice => I18n.t('admin.users.suspended')
145
+ end
146
+
147
+ member_action :unsuspend, :method => :post do
148
+ User.find(params[:id]).unsuspend!
149
+ redirect_to :back, :notice => I18n.t('admin.users.unsuspended')
150
+ end
151
+
152
+ controller do
153
+ helper Pageflow::UsersHelper
154
+
155
+ def build_new_resource
156
+ user = InvitedUser.new(permitted_params[:user])
157
+ user.account ||= current_user.account
158
+ user
159
+ end
160
+
161
+ def user_profile_params
162
+ params.require(:user).permit(:first_name, :last_name, :current_password, :password, :password_confirmation)
163
+ end
164
+
165
+ def permitted_params
166
+ result = params.permit(:user => [:first_name, :last_name, :email, :password, :password_confirmation, :account_id, :role])
167
+ restrict_attributes(params[:id], result[:user]) if result[:user]
168
+ result
169
+ end
170
+
171
+ private
172
+
173
+ def restrict_attributes(id, attributes)
174
+ if !authorized?(:read, Account)
175
+ attributes.delete(:account_id)
176
+ end
177
+
178
+ if !authorized?(:read, Account) && !User::NON_ADMIN_ROLES.include?(attributes[:role])
179
+ attributes.delete(:role)
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end