erp_app 3.1.10 → 3.1.11
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/erp_app/desktop/scaffold/base_controller.rb +1 -0
- data/app/controllers/erp_app/desktop/user_management/base_controller.rb +8 -10
- data/app/controllers/erp_app/organizer/crm/base_controller.rb +104 -88
- data/app/mailers/crm_mailer.rb +9 -0
- data/app/views/crm_mailer/send_message.html.erb +9 -0
- data/app/views/erp_app/desktop/base/index.erb +221 -213
- data/app/views/erp_app/mobile/base/index.erb +1 -0
- data/app/views/erp_app/organizer/base/index.erb +51 -43
- data/lib/erp_app/version.rb +1 -1
- data/lib/generators/organizer_application/templates/controllers/controller_template.erb +1 -1
- data/lib/generators/organizer_application/templates/public/base.js.erb +2 -2
- data/public/javascripts/erp_app/desktop/applications/scaffold/models_tree_panel.js +19 -0
- data/public/javascripts/erp_app/desktop/applications/user_management/module.js +432 -418
- data/public/javascripts/erp_app/desktop/applications/user_management/user_application_mgt_panel.js +1 -1
- data/public/javascripts/erp_app/login/window.js +2 -1
- data/public/javascripts/erp_app/organizer/applications/crm/contact_mechanism_grid.js +511 -389
- data/public/javascripts/erp_app/organizer/applications/crm/party_grid.js +1 -1
- data/public/javascripts/erp_app/shared/configuration/configuration_form.js +238 -262
- data/public/javascripts/erp_app/shared/configuration/configuration_panel.js +103 -104
- data/public/stylesheets/erp_app/mobile/mobile.css +6 -6
- metadata +5 -89
- data/spec/dummy/db/data_migrations/20130422163128_add_usd_currency.erp_base_erp_svcs.rb +0 -12
- data/spec/dummy/db/data_migrations/20130422163129_add_iso_codes.erp_base_erp_svcs.rb +0 -19
- data/spec/dummy/db/data_migrations/20130422163130_setup_compass_ae_instance.erp_base_erp_svcs.rb +0 -21
- data/spec/dummy/db/data_migrations/20130422163131_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb +0 -19
- data/spec/dummy/db/data_migrations/20130422163132_add_guid_to_instances.erp_base_erp_svcs.rb +0 -10
- data/spec/dummy/db/data_migrations/20130422163133_create_capability_scope_types.erp_tech_svcs.rb +0 -15
- data/spec/dummy/db/data_migrations/20130422163134_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +0 -16
- data/spec/dummy/db/data_migrations/20130422163135_setup_audit_log_types.erp_tech_svcs.rb +0 -22
- data/spec/dummy/db/data_migrations/20130422163136_create_group_relationship_and_role_types.erp_tech_svcs.rb +0 -20
- data/spec/dummy/db/data_migrations/20130422163137_note_capabilities.erp_tech_svcs.rb +0 -24
- data/spec/dummy/db/data_migrations/20130422163138_erp_app_setup.erp_app.rb +0 -252
- data/spec/dummy/db/data_migrations/20130422163139_update_preferences.erp_app.rb +0 -53
- data/spec/dummy/db/data_migrations/20130422163140_create_desktop_app_audit_log_viewer.erp_app.rb +0 -24
- data/spec/dummy/db/data_migrations/20130422163141_add_file_manager_application.erp_app.rb +0 -32
- data/spec/dummy/db/data_migrations/20130422163142_add_default_capabilities.erp_app.rb +0 -23
- data/spec/dummy/db/data_migrations/20130422163143_add_new_contact_widgets.erp_app.rb +0 -42
- data/spec/dummy/db/data_migrations/20130422163144_add_userinfo_widget.erp_app.rb +0 -29
- data/spec/dummy/db/data_migrations/20130422163145_create_party_and_role_type_for_communication_events.erp_app.rb +0 -11
- data/spec/dummy/db/data_migrations/20130422163146_create_user_management_mobile_application.erp_app.rb +0 -17
- data/spec/dummy/db/data_migrations/20130422163147_create_configuration_management_desktop_application.erp_app.rb +0 -27
- data/spec/dummy/db/data_migrations/20130422163148_create_job_tracker_desktop_application.erp_app.rb +0 -23
- data/spec/dummy/db/data_migrations/20130422163149_created_tracked_jobs.erp_app.rb +0 -15
- data/spec/dummy/db/data_migrations/20130422163150_upgrade_remove_system_mgmt_app.erp_app.rb +0 -16
- data/spec/dummy/db/data_migrations/20130422163151_create_security_management_desktop_application.erp_app.rb +0 -29
- data/spec/dummy/db/data_migrations/20130422163152_add_job_tracker_mobile_app.erp_app.rb +0 -17
- data/spec/dummy/db/migrate/20130422163121_base_erp_services.erp_base_erp_svcs.rb +0 -486
- data/spec/dummy/db/migrate/20130422163122_add_txn_status.erp_base_erp_svcs.rb +0 -37
- data/spec/dummy/db/migrate/20130422163123_upgrade_compass_ae_instances.erp_base_erp_svcs.rb +0 -34
- data/spec/dummy/db/migrate/20130422163124_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb +0 -17
- data/spec/dummy/db/migrate/20130422163125_add_long_lat_to_address.erp_base_erp_svcs.rb +0 -16
- data/spec/dummy/db/migrate/20130422163126_base_tech_services.erp_tech_svcs.rb +0 -271
- data/spec/dummy/db/migrate/20130422163127_create_has_attribute_tables.erp_tech_svcs.rb +0 -39
- data/spec/dummy/db/migrate/20130422163128_create_groups.erp_tech_svcs.rb +0 -19
- data/spec/dummy/db/migrate/20130422163129_upgrade_security.erp_tech_svcs.rb +0 -54
- data/spec/dummy/db/migrate/20130422163130_upgrade_security2.erp_tech_svcs.rb +0 -275
- data/spec/dummy/db/migrate/20130422163131_add_queue_to_delayed_jobs.erp_tech_svcs.rb +0 -14
- data/spec/dummy/db/migrate/20130422163132_base_app_framework.erp_app.rb +0 -276
- data/spec/dummy/db/migrate/20130422163133_add_job_tracker.erp_app.rb +0 -20
- data/spec/dummy/db/migrate/20130422163134_update_mobile_application.erp_app.rb +0 -28
- data/spec/dummy/db/schema.rb +0 -883
- data/spec/dummy/db/spec.sqlite3 +0 -0
- data/spec/dummy/log/adam.log +0 -1
- data/spec/dummy/log/spec.log +0 -113709
@@ -8,6 +8,7 @@ module ErpApp
|
|
8
8
|
|
9
9
|
def get_models
|
10
10
|
names = ActiveRecord::Base.all_subclasses.collect{|klass| klass.name}.delete_if{|item| item =~ /::/}.uniq.sort{|a,b| a <=> b}
|
11
|
+
names = names.select { |name| name =~ Regexp.new("^#{params[:name]}.", Regexp::IGNORECASE)}
|
11
12
|
|
12
13
|
respond_to do |format|
|
13
14
|
format.json do
|
@@ -11,13 +11,12 @@ module ErpApp
|
|
11
11
|
dir = sort_hash[:direction] || 'ASC'
|
12
12
|
limit = params[:limit] || 25
|
13
13
|
start = params[:start] || 0
|
14
|
-
total_count = 0
|
15
14
|
|
16
15
|
if username.blank?
|
17
16
|
users = User.order("#{sort} #{dir}").offset(start).limit(limit)
|
18
17
|
total_count = User.count
|
19
18
|
else
|
20
|
-
users = User.where('username like ?', "%#{username}%").order("#{sort} #{dir}").offset(start).limit(limit)
|
19
|
+
users = User.where('username like ? or email like ?', "%#{username}%", "%#{username}%").order("#{sort} #{dir}").offset(start).limit(limit)
|
21
20
|
total_count = users.count
|
22
21
|
end
|
23
22
|
|
@@ -26,7 +25,6 @@ module ErpApp
|
|
26
25
|
|
27
26
|
def new
|
28
27
|
response = {}
|
29
|
-
application = DesktopApplication.find_by_internal_identifier('user_management')
|
30
28
|
begin
|
31
29
|
current_user.with_capability(:create, 'User') do
|
32
30
|
|
@@ -37,8 +35,8 @@ module ErpApp
|
|
37
35
|
:password_confirmation => params[:password_confirmation]
|
38
36
|
)
|
39
37
|
#set this to tell activation where to redirect_to for login and temp password
|
40
|
-
user.add_instance_attribute(:login_url, '/erp_app/login')
|
41
|
-
user.add_instance_attribute(:temp_password, params[:password])
|
38
|
+
user.add_instance_attribute(:login_url, '/erp_app/login')
|
39
|
+
user.add_instance_attribute(:temp_password, params[:password])
|
42
40
|
|
43
41
|
if user.save
|
44
42
|
individual = Individual.create(:gender => params[:gender], :current_first_name => params[:first_name], :current_last_name => params[:last_name])
|
@@ -75,7 +73,7 @@ module ErpApp
|
|
75
73
|
end
|
76
74
|
|
77
75
|
def delete
|
78
|
-
|
76
|
+
|
79
77
|
if current_user.has_capability?('create', 'User')
|
80
78
|
unless @user.party.nil?
|
81
79
|
@user.party.destroy
|
@@ -95,7 +93,7 @@ module ErpApp
|
|
95
93
|
@user = User.find(params[:id])
|
96
94
|
end
|
97
95
|
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
96
|
+
end #BaseController
|
97
|
+
end #UserManagement
|
98
|
+
end #Desktop
|
99
|
+
end #ErpApp
|
@@ -1,46 +1,46 @@
|
|
1
1
|
module ErpApp
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
module Organizer
|
3
|
+
module Crm
|
4
|
+
class BaseController < ErpApp::Organizer::BaseController
|
5
5
|
@@date_format = "%m/%d/%Y"
|
6
6
|
@@datetime_format = "%m/%d/%Y %l:%M%P"
|
7
7
|
|
8
|
-
|
8
|
+
def menu
|
9
9
|
menu = []
|
10
10
|
|
11
11
|
menu << {:text => 'Individuals', :businessPartType => 'individual', :leaf => true, :iconCls => 'icon-user', :applicationCardId => "individuals_search_grid"}
|
12
|
-
menu << {:text => 'Organizations'
|
12
|
+
menu << {:text => 'Organizations', :businessPartType => 'organization', :leaf => true, :iconCls => 'icon-user', :applicationCardId => "organizations_search_grid"}
|
13
13
|
|
14
14
|
render :json => menu
|
15
|
-
|
15
|
+
end
|
16
16
|
|
17
|
-
|
17
|
+
def contact_purposes
|
18
18
|
render :inline => "{\"types\":#{ContactPurpose.all.to_json(:only => [:id, :description])}}"
|
19
|
-
|
19
|
+
end
|
20
20
|
|
21
|
-
|
21
|
+
def parties
|
22
22
|
render :inline => if request.put?
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
update_party
|
24
|
+
elsif request.get?
|
25
|
+
get_parties
|
26
|
+
elsif request.delete?
|
27
|
+
delete_party
|
28
|
+
end
|
29
|
+
end
|
30
30
|
|
31
|
-
|
31
|
+
def contact_mechanism
|
32
32
|
render :inline => if request.post?
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
create_contact_mechanism
|
34
|
+
elsif request.put?
|
35
|
+
update_contact_mechanism
|
36
|
+
elsif request.get?
|
37
|
+
get_contact_mechanisms
|
38
|
+
elsif request.delete?
|
39
|
+
delete_contact_mechanism
|
40
|
+
end
|
41
|
+
end
|
42
42
|
|
43
|
-
|
43
|
+
def create_party
|
44
44
|
result = {}
|
45
45
|
begin
|
46
46
|
enterprise_identifier = params[:enterprise_identifier]
|
@@ -60,14 +60,14 @@ module ErpApp
|
|
60
60
|
business_party.party.save
|
61
61
|
|
62
62
|
result = {:success => true, :message => "#{party_type} Added", :name => business_party.party.description}
|
63
|
-
rescue Exception=>ex
|
63
|
+
rescue Exception => ex
|
64
64
|
result = {:success => false, :message => "Error adding #{party_type}"}
|
65
65
|
end
|
66
66
|
|
67
67
|
render :json => result
|
68
|
-
|
68
|
+
end
|
69
69
|
|
70
|
-
|
70
|
+
def update_party
|
71
71
|
enterprise_identifier = params[:enterprise_identifier]
|
72
72
|
party_type = params[:party_type]
|
73
73
|
business_party_id = params[:business_party_id]
|
@@ -86,7 +86,7 @@ module ErpApp
|
|
86
86
|
klass = party_type.constantize
|
87
87
|
business_party = klass.find(business_party_id)
|
88
88
|
|
89
|
-
business_party_data.each do |key,value|
|
89
|
+
business_party_data.each do |key, value|
|
90
90
|
key = key.gsub("business_party.", "")
|
91
91
|
method = key + '='
|
92
92
|
business_party.send method.to_sym, value
|
@@ -100,17 +100,17 @@ module ErpApp
|
|
100
100
|
party.save
|
101
101
|
end unless enterprise_identifier.blank?
|
102
102
|
|
103
|
-
render :json => {
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
103
|
+
render :json => {:success => true,
|
104
|
+
:message => "#{party_type} updated",
|
105
|
+
:data => [{
|
106
|
+
:id => party.id,
|
107
|
+
:enterprise_identifier => party.enterprise_identifier,
|
108
|
+
:created_at => party.created_at,
|
109
|
+
:updated_at => party.updated_at,
|
110
|
+
:business_party => party.business_party
|
111
|
+
}]
|
112
112
|
}
|
113
|
-
|
113
|
+
end
|
114
114
|
|
115
115
|
def get_party_details
|
116
116
|
@party = Party.find(params[:id]) rescue nil
|
@@ -125,12 +125,12 @@ module ErpApp
|
|
125
125
|
success = true
|
126
126
|
message = "User Does Not Exist"
|
127
127
|
u = {
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
128
|
+
:username => '',
|
129
|
+
:email => '',
|
130
|
+
:activation_state => '',
|
131
|
+
:last_login_at => '',
|
132
|
+
:failed_logins_count => '',
|
133
|
+
:activation_token => ''
|
134
134
|
}
|
135
135
|
else
|
136
136
|
success = true
|
@@ -139,12 +139,12 @@ module ErpApp
|
|
139
139
|
last_login_at = user.last_login_at.blank? ? '' : user.last_login_at.getlocal.strftime(@@datetime_format)
|
140
140
|
|
141
141
|
u = {
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
142
|
+
:username => user.username,
|
143
|
+
:email => user.email,
|
144
|
+
:activation_state => user.activation_state,
|
145
|
+
:last_login_at => last_login_at,
|
146
|
+
:failed_logins_count => user.failed_logins_count,
|
147
|
+
:activation_token => user.activation_token
|
148
148
|
}
|
149
149
|
end
|
150
150
|
else
|
@@ -153,10 +153,10 @@ module ErpApp
|
|
153
153
|
u = {}
|
154
154
|
end
|
155
155
|
|
156
|
-
render :json => {
|
157
|
-
|
158
|
-
|
159
|
-
|
156
|
+
render :json => {:success => success,
|
157
|
+
:message => message,
|
158
|
+
:data => [u]
|
159
|
+
}
|
160
160
|
end
|
161
161
|
|
162
162
|
def update_user
|
@@ -166,8 +166,8 @@ module ErpApp
|
|
166
166
|
user = party.user
|
167
167
|
if user.nil?
|
168
168
|
success = true
|
169
|
-
message = "User Does Not Exist"
|
170
|
-
else
|
169
|
+
message = "User Does Not Exist"
|
170
|
+
else
|
171
171
|
user.username = params[:username]
|
172
172
|
user.email = params[:email]
|
173
173
|
if user.save
|
@@ -183,7 +183,7 @@ module ErpApp
|
|
183
183
|
message = "Party Not Found"
|
184
184
|
end
|
185
185
|
|
186
|
-
render :json => {
|
186
|
+
render :json => {:success => success, :message => message} and return
|
187
187
|
end
|
188
188
|
|
189
189
|
def activate
|
@@ -196,11 +196,26 @@ module ErpApp
|
|
196
196
|
message = "Invalid activation token."
|
197
197
|
end
|
198
198
|
|
199
|
-
render :json => {
|
199
|
+
render :json => {:success => success, :message => message} and return
|
200
|
+
end
|
201
|
+
|
202
|
+
def send_email
|
203
|
+
send_to = params[:send_to].strip
|
204
|
+
subject = params[:subject].strip
|
205
|
+
message = params[:message].strip
|
206
|
+
cc_email = params[:cc_email].blank? ? nil : params[:cc_email].strip
|
207
|
+
|
208
|
+
CrmMailer.send_message(send_to, subject, message).deliver
|
209
|
+
|
210
|
+
if cc_email
|
211
|
+
CrmMailer.send_message(cc_email, subject, message).deliver
|
212
|
+
end
|
213
|
+
|
214
|
+
render :json => {:success => true}
|
200
215
|
end
|
201
216
|
|
202
217
|
private
|
203
|
-
|
218
|
+
def get_parties
|
204
219
|
search_name = params[:party_name]
|
205
220
|
party_type = params[:party_type]
|
206
221
|
start = params[:start] || 0
|
@@ -209,24 +224,24 @@ module ErpApp
|
|
209
224
|
total_count = Party.where("description like ? and business_party_type = ?", "%#{search_name}%", party_type).count
|
210
225
|
parties = Party.where("description like ? and business_party_type = ?", "%#{search_name}%", party_type).order("id").offset(start).limit(limit)
|
211
226
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
227
|
+
{:totalCount => total_count, :data => parties.collect { |party| {
|
228
|
+
:id => party.id,
|
229
|
+
:enterprise_identifier => party.enterprise_identifier,
|
230
|
+
:created_at => party.created_at,
|
231
|
+
:updated_at => party.updated_at,
|
232
|
+
:business_party => party.business_party
|
233
|
+
} }
|
219
234
|
}.to_json
|
220
|
-
|
235
|
+
end
|
221
236
|
|
222
|
-
|
237
|
+
def delete_party
|
223
238
|
party_type = params[:party_type]
|
224
239
|
Party.destroy(params[:id])
|
225
240
|
|
226
241
|
{:data => [], :message => "#{party_type} deleted"}.to_json
|
227
|
-
|
242
|
+
end
|
228
243
|
|
229
|
-
|
244
|
+
def create_contact_mechanism
|
230
245
|
party_id = params[:party_id]
|
231
246
|
contact_type = params[:contact_type]
|
232
247
|
contact_purpose_id = params[:data][:contact_purpose_id]
|
@@ -234,7 +249,7 @@ module ErpApp
|
|
234
249
|
|
235
250
|
contact_mechanism_class = contact_type.constantize
|
236
251
|
party = Party.find(party_id)
|
237
|
-
|
252
|
+
|
238
253
|
contact_purpose = contact_purpose_id.blank? ? ContactPurpose.find_by_internal_identifier('default') : ContactPurpose.find(contact_purpose_id)
|
239
254
|
contact_mechanism = party.add_contact(contact_mechanism_class, params[:data], contact_purpose)
|
240
255
|
|
@@ -245,15 +260,15 @@ module ErpApp
|
|
245
260
|
end
|
246
261
|
|
247
262
|
"{\"success\":true, \"data\":#{contact_mechanism.to_json(:methods => [:contact_purpose_id])},\"message\":\"#{contact_type} added\"}"
|
248
|
-
|
263
|
+
end
|
249
264
|
|
250
|
-
|
265
|
+
def update_contact_mechanism
|
251
266
|
contact_type = params[:contact_type]
|
252
267
|
contact_mechanism_id = params[:data][:id]
|
253
268
|
contact_purpose_id = params[:data][:contact_purpose_id]
|
254
269
|
params[:data].delete(:id)
|
255
270
|
params[:data].delete(:contact_purpose_id)
|
256
|
-
|
271
|
+
|
257
272
|
contact_mechanism = contact_type.constantize.find(contact_mechanism_id)
|
258
273
|
|
259
274
|
if !contact_purpose_id.blank?
|
@@ -263,7 +278,7 @@ module ErpApp
|
|
263
278
|
contact_mechanism.contact.save
|
264
279
|
end
|
265
280
|
|
266
|
-
params[:data].each do |key,value|
|
281
|
+
params[:data].each do |key, value|
|
267
282
|
method = key + '='
|
268
283
|
contact_mechanism.send method.to_sym, value
|
269
284
|
end
|
@@ -277,9 +292,9 @@ module ErpApp
|
|
277
292
|
end
|
278
293
|
|
279
294
|
"{\"success\":true, \"data\":#{contact_mechanism.to_json(:methods => [:contact_purpose_id])},\"message\":\"#{contact_type} updated\"}"
|
280
|
-
|
295
|
+
end
|
281
296
|
|
282
|
-
|
297
|
+
def get_contact_mechanisms
|
283
298
|
party_id = params[:party_id]
|
284
299
|
contact_type = params[:contact_type]
|
285
300
|
|
@@ -295,9 +310,9 @@ module ErpApp
|
|
295
310
|
end
|
296
311
|
|
297
312
|
"{\"success\":true, \"data\":#{contact_mechanisms.to_json(:methods => [:contact_purpose_id])}}"
|
298
|
-
|
313
|
+
end
|
299
314
|
|
300
|
-
|
315
|
+
def delete_contact_mechanism
|
301
316
|
party_id = params[:party_id]
|
302
317
|
contact_type = params[:contact_type]
|
303
318
|
contact_mechanism_id = params[:id]
|
@@ -308,10 +323,11 @@ module ErpApp
|
|
308
323
|
|
309
324
|
party = Party.find(party_id)
|
310
325
|
contact_mechanisms = party.find_all_contacts_by_contact_mechanism(contact_type_class)
|
311
|
-
|
326
|
+
|
312
327
|
"{\"success\":true, \"data\":#{contact_mechanisms.to_json(:methods => [:contact_purpose_id])},\"message\":\"#{contact_type} deleted\"}"
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
end
|
328
|
+
end
|
329
|
+
|
330
|
+
end #BaseController
|
331
|
+
end #Crm
|
332
|
+
end #Organizer
|
333
|
+
end #ErpApp
|
@@ -1,248 +1,256 @@
|
|
1
1
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
2
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
-
|
4
|
-
|
3
|
+
<head>
|
4
|
+
<style type="text/css">
|
5
5
|
|
6
|
-
<%@desktop.applications.each do |application|%>
|
7
|
-
|
8
|
-
background-image:url("/images/icons/<%=application.icon.split('-')[1]%>/<%=application.icon.split('-')[1]%>_48x48.png");
|
9
|
-
height:48px;
|
10
|
-
width:48px;
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
<%@desktop.applications.each do |application|%>
|
7
|
+
.<%=application.shortcut_id%>-shortcut {
|
8
|
+
background-image: url("/images/icons/<%=application.icon.split('-')[1]%>/<%=application.icon.split('-')[1]%>_48x48.png");
|
9
|
+
height: 48px;
|
10
|
+
width: 48px;
|
11
|
+
}
|
12
|
+
|
13
|
+
<%end%>
|
14
|
+
.control-panel-win-shortcut {
|
15
|
+
background-image: url("/images/icons/control_panel/control_panel_48x48.png");
|
16
|
+
height: 48px;
|
17
|
+
width: 48px;
|
17
18
|
}
|
18
19
|
|
19
|
-
.web-navigator-win-shortcut{
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
.web-navigator-win-shortcut {
|
21
|
+
background-image: url("/images/icons/globe/globe_48x48.png");
|
22
|
+
height: 48px;
|
23
|
+
width: 48px;
|
23
24
|
}
|
24
25
|
|
25
26
|
#loading-mask {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
position: absolute;
|
28
|
+
left: 0;
|
29
|
+
top: 0;
|
30
|
+
width: 100%;
|
31
|
+
height: 100%;
|
32
|
+
z-index: 20000;
|
33
|
+
background-color: white;
|
33
34
|
}
|
34
35
|
|
35
36
|
#loading {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
37
|
+
position: absolute;
|
38
|
+
left: 50%;
|
39
|
+
top: 50%;
|
40
|
+
padding: 2px;
|
41
|
+
z-index: 20001;
|
42
|
+
height: auto;
|
43
|
+
margin: -35px 0 0 -30px;
|
43
44
|
}
|
44
45
|
|
45
46
|
#loading .loading-indicator {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
background: url(/images/erp_app/ext_loading_image.gif) no-repeat;
|
48
|
+
color: #555;
|
49
|
+
font: bold 13px tahoma, arial, helvetica;
|
50
|
+
padding: 8px 42px;
|
51
|
+
margin: 0;
|
52
|
+
text-align: center;
|
53
|
+
height: auto;
|
53
54
|
}
|
54
|
-
|
55
|
+
</style>
|
56
|
+
|
57
|
+
<!--javascript-->
|
58
|
+
<%= include_extjs(:theme => @desktop.get_preference(:extjs_theme), :debug => (Rails.env != 'production')) %>
|
59
|
+
<%= static_javascript_include_tag("extjs/overrides.js") %>
|
55
60
|
|
56
|
-
|
57
|
-
|
58
|
-
<%= static_javascript_include_tag("extjs/overrides.js")%>
|
61
|
+
<%= static_javascript_include_tag("erp_app/utility.js") %>
|
62
|
+
<%= static_javascript_include_tag("erp_app/desktop/ext_ux_desktop_module.js") %>
|
59
63
|
|
60
|
-
|
61
|
-
|
64
|
+
<%= static_javascript_include_tag('erp_app/widgets.js') %>
|
65
|
+
<%= include_widgets %>
|
66
|
+
<!-- shared application resources -->
|
67
|
+
<%= load_shared_application_resources(:javascripts) %>
|
68
|
+
<!-- end shared application resources -->
|
69
|
+
<%= static_javascript_include_tag(
|
70
|
+
"erp_app/desktop/applications/control_panel/module.js",
|
71
|
+
"erp_app/desktop/applications/control_panel/desktop_management_panel.js",
|
72
|
+
"erp_app/desktop/applications/control_panel/application_management_panel.js",
|
73
|
+
"erp_app/desktop/applications/web_navigator/module.js",
|
74
|
+
"erp_app/ckeditor/ckeditor.js"
|
75
|
+
) %>
|
76
|
+
<!-- application resources -->
|
77
|
+
<%= static_javascript_include_tag(@desktop.applications.collect { |app| app.locate_resources('javascripts') }.flatten) %>
|
78
|
+
<!-- end application resources -->
|
79
|
+
<%= include_compass_ae_instance_about %>
|
80
|
+
<%= set_max_file_upload %>
|
81
|
+
<%= set_file_upload_types %>
|
82
|
+
<%= set_email_regex %>
|
62
83
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
<!-- end application resources -->
|
78
|
-
<%=include_compass_ae_instance_about%>
|
79
|
-
<%=set_max_file_upload%>
|
80
|
-
<%=set_file_upload_types %>
|
81
|
-
<%=set_email_regex %>
|
84
|
+
<!--stylesheets-->
|
85
|
+
<%= static_stylesheet_link_tag('erp_app/desktop/base.css') %>
|
86
|
+
<!-- shared application resources -->
|
87
|
+
<%= load_shared_application_resources(:stylesheets) %>
|
88
|
+
<!-- end application resources -->
|
89
|
+
<!-- application resources -->
|
90
|
+
<%= static_stylesheet_link_tag(@desktop.applications.collect { |app| app.locate_resources('stylesheets') }.flatten) %>
|
91
|
+
<!-- end application resources -->
|
92
|
+
<!-- compass extensions -->
|
93
|
+
<%= include_code_mirror_library %>
|
94
|
+
<style type="text/css">
|
95
|
+
.CodeMirror {
|
96
|
+
border: 1px solid #eee;
|
97
|
+
}
|
82
98
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
width: 100%;
|
102
|
-
}
|
103
|
-
</style>
|
104
|
-
<%=setup_js_authentication(@user, @desktop)%>
|
105
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
106
|
-
<title>Compass Desktop</title>
|
107
|
-
</head>
|
108
|
-
<body>
|
109
|
-
<script type="text/javascript">
|
110
|
-
Ext.define("MyDesktop.App",{
|
111
|
-
extend:"Ext.ux.desktop.App",
|
112
|
-
requires:["Ext.window.MessageBox","Ext.ux.desktop.ShortcutModel"],
|
113
|
-
init:function(){
|
114
|
-
this.callParent()
|
99
|
+
.CodeMirror-scroll {
|
100
|
+
height: auto;
|
101
|
+
overflow-y: hidden;
|
102
|
+
overflow-x: auto;
|
103
|
+
width: 100%;
|
104
|
+
}
|
105
|
+
</style>
|
106
|
+
<%= setup_js_authentication(@user, @desktop) %>
|
107
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
108
|
+
<title>Compass Desktop</title>
|
109
|
+
</head>
|
110
|
+
<body>
|
111
|
+
<script type="text/javascript">
|
112
|
+
Ext.define("MyDesktop.App", {
|
113
|
+
extend: "Ext.ux.desktop.App",
|
114
|
+
requires: ["Ext.window.MessageBox", "Ext.ux.desktop.ShortcutModel"],
|
115
|
+
init: function () {
|
116
|
+
this.callParent()
|
115
117
|
},
|
116
|
-
getModules:function(){
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
118
|
+
getModules: function () {
|
119
|
+
return[
|
120
|
+
new Compass.ErpApp.Desktop.Applications.ControlPanel(),
|
121
|
+
new Compass.ErpApp.Desktop.Applications.WebNavigator(),
|
122
|
+
<%=raw @desktop.applications.collect{|app| "new #{app.javascript_class_name}()"}.join(",").to_s%>
|
123
|
+
]
|
122
124
|
},
|
123
|
-
getDesktopConfig:function(){
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
125
|
+
getDesktopConfig: function () {
|
126
|
+
var b = this, a = b.callParent();
|
127
|
+
return Ext.apply(a, {
|
128
|
+
contextMenuItems: [
|
129
|
+
{
|
130
|
+
text: "Control Panel",
|
131
|
+
handler: b.onControlPanel,
|
132
|
+
iconCls: "icon-control_panel",
|
133
|
+
scope: b
|
134
|
+
}
|
135
|
+
],
|
136
|
+
shortcuts: Ext.create("Ext.data.Store", {
|
137
|
+
model: "Ext.ux.desktop.ShortcutModel",
|
138
|
+
data: [
|
139
|
+
{name: "Control Panel", iconCls: "control-panel-win-shortcut", module: "control-panel-win"},
|
140
|
+
{name: "Web Navigator", iconCls: "web-navigator-win-shortcut", module: "web-navigator-win"}<%=(@desktop.shortcuts.count > 0) ? ',' : '' %>
|
141
|
+
<%=raw @desktop.shortcuts.collect{|app| "{name:'#{app.description}',iconCls:'#{app.shortcut_id}-shortcut',module:'#{app.shortcut_id}'}"}.join(",")%>
|
142
|
+
]
|
143
|
+
}),
|
144
|
+
wallpaper: "/images/wallpaper/<%=@desktop.get_preference(:desktop_background) %>",
|
145
|
+
wallpaperStretch: true
|
146
|
+
})
|
144
147
|
},
|
145
|
-
getStartConfig:function(){
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
148
|
+
getStartConfig: function () {
|
149
|
+
var b = this, a = b.callParent();
|
150
|
+
return Ext.apply(a, {
|
151
|
+
title: '<%=@user.party.description%>',
|
152
|
+
iconCls: "icon-user",
|
153
|
+
height: 300,
|
154
|
+
toolConfig: {
|
155
|
+
width: 100,
|
156
|
+
items: [
|
157
|
+
{
|
158
|
+
text: "Logout",
|
159
|
+
iconCls: "icon-key",
|
160
|
+
handler: b.onLogout,
|
161
|
+
scope: b
|
162
|
+
},
|
163
|
+
{
|
164
|
+
text: "About",
|
165
|
+
iconCls: "icon-info",
|
166
|
+
handler: b.onHelp,
|
167
|
+
scope: b
|
168
|
+
}
|
169
|
+
]
|
170
|
+
}
|
171
|
+
})
|
167
172
|
},
|
168
|
-
getTaskbarConfig:function(){
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
173
|
+
getTaskbarConfig: function () {
|
174
|
+
var a = this.callParent();
|
175
|
+
return Ext.apply(a, {
|
176
|
+
quickStart: [
|
177
|
+
{
|
178
|
+
name: "Control Panel",
|
179
|
+
iconCls: "icon-control_panel",
|
180
|
+
module: "control-panel-win"
|
181
|
+
}
|
182
|
+
],
|
183
|
+
trayItems: [
|
184
|
+
{
|
185
|
+
xtype: "trayclock",
|
186
|
+
flex: 1
|
187
|
+
}
|
188
|
+
]
|
189
|
+
})
|
181
190
|
},
|
182
|
-
onLogout:function(){
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
191
|
+
onLogout: function () {
|
192
|
+
Ext.Msg.confirm("Logout", "Are you sure you want to logout?", function (btn, text) {
|
193
|
+
if (btn == 'yes') {
|
194
|
+
window.location = '/session/sign_out';
|
195
|
+
}
|
196
|
+
})
|
188
197
|
},
|
189
|
-
onHelp:function(){
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
198
|
+
onHelp: function () {
|
199
|
+
var tpl = new Ext.XTemplate("<table>",
|
200
|
+
"<tr><td style='width:100px;'>Version: </td><td>{version}</td></tr>",
|
201
|
+
"<tr><td>Installed at: </td><td>{installedAt}</td></tr>",
|
202
|
+
"<tr><td>Last Update: </td><td>{lastUpdateAt}</td></tr>",
|
203
|
+
"</table><br/>",
|
204
|
+
"<h3>Installed Engines</h3><br/>",
|
205
|
+
"<table>",
|
206
|
+
"<tr><th style='width:150px;font-weight:bold;'>Name</th><th style='font-weight:bold;'>Version</th></tr>",
|
207
|
+
'<tpl for="installedEngines">',
|
208
|
+
"<tr><td>{name}</td><td>{version}</td></tr>",
|
209
|
+
'</tpl>',
|
210
|
+
"</table>");
|
202
211
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
212
|
+
var aboutWindow = Ext.create('Ext.window.Window', {
|
213
|
+
title: 'About Your Compass AE Instance',
|
214
|
+
height: 200,
|
215
|
+
width: 400,
|
216
|
+
layout: 'fit',
|
217
|
+
resizable: false,
|
218
|
+
autoScroll: true,
|
219
|
+
tpl: tpl,
|
220
|
+
data: compassAeInstance
|
221
|
+
});
|
222
|
+
aboutWindow.show();
|
214
223
|
},
|
215
|
-
onControlPanel:function(){
|
216
|
-
|
217
|
-
|
224
|
+
onControlPanel: function () {
|
225
|
+
var controlPanel = window.compassDesktop.getModule('control-panel-win');
|
226
|
+
controlPanel.createWindow();
|
218
227
|
}
|
219
|
-
|
228
|
+
});
|
220
229
|
|
221
|
-
|
222
|
-
|
230
|
+
var compassDesktop;
|
231
|
+
Ext.onReady(function () {
|
223
232
|
compassDesktop = new MyDesktop.App();
|
224
233
|
|
225
|
-
setTimeout(function(){
|
226
|
-
|
227
|
-
|
228
|
-
|
234
|
+
setTimeout(function () {
|
235
|
+
Ext.get('loading').remove();
|
236
|
+
Ext.get('loading-mask').fadeOut({remove: true});
|
237
|
+
<% @desktop.autoloads.each do |application| %>
|
229
238
|
compassDesktop.getModule('<%=application.shortcut_id%>').createWindow();
|
230
|
-
|
239
|
+
<% end %>
|
231
240
|
}, 250);
|
232
|
-
});
|
233
241
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
242
|
+
// Push some history into this windows history to help prevent back button
|
243
|
+
for (var i = 0; i < 10; i++) {
|
244
|
+
window.history.pushState("history", 'CompassAE Desktop', "#"+i*new Date().getMilliseconds());
|
245
|
+
}
|
246
|
+
});
|
247
|
+
</script>
|
248
|
+
<div id="loading-mask"></div>
|
249
|
+
<div id="loading">
|
250
|
+
<div class="loading-indicator">
|
251
|
+
<p style='margin-left: -110px; margin-top: 30px;'>Loading Compass Desktop...</p>
|
252
|
+
</div>
|
253
|
+
</div>
|
254
|
+
<%= setSessionTimeout %>
|
255
|
+
</body>
|
248
256
|
</html>
|