mindapp 0.0.1

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 (195) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +29 -0
  5. data/Rakefile +1 -0
  6. data/lib/generators/mindapp/USAGE +8 -0
  7. data/lib/generators/mindapp/install_generator.rb +134 -0
  8. data/lib/generators/mindapp/templates/app/assets/images/account.png +0 -0
  9. data/lib/generators/mindapp/templates/app/assets/images/add.png +0 -0
  10. data/lib/generators/mindapp/templates/app/assets/images/ajax-loader-circle.gif +0 -0
  11. data/lib/generators/mindapp/templates/app/assets/images/ajax-loader.gif +0 -0
  12. data/lib/generators/mindapp/templates/app/assets/images/anchor.png +0 -0
  13. data/lib/generators/mindapp/templates/app/assets/images/application_double.png +0 -0
  14. data/lib/generators/mindapp/templates/app/assets/images/application_form_edit.png +0 -0
  15. data/lib/generators/mindapp/templates/app/assets/images/arrow_left.png +0 -0
  16. data/lib/generators/mindapp/templates/app/assets/images/arrow_right.png +0 -0
  17. data/lib/generators/mindapp/templates/app/assets/images/arrow_turn_left.png +0 -0
  18. data/lib/generators/mindapp/templates/app/assets/images/arrow_turn_right.png +0 -0
  19. data/lib/generators/mindapp/templates/app/assets/images/calendar.png +0 -0
  20. data/lib/generators/mindapp/templates/app/assets/images/cancel.png +0 -0
  21. data/lib/generators/mindapp/templates/app/assets/images/chart_bar.png +0 -0
  22. data/lib/generators/mindapp/templates/app/assets/images/clock.png +0 -0
  23. data/lib/generators/mindapp/templates/app/assets/images/cog.png +0 -0
  24. data/lib/generators/mindapp/templates/app/assets/images/control_fastforward.png +0 -0
  25. data/lib/generators/mindapp/templates/app/assets/images/control_play.png +0 -0
  26. data/lib/generators/mindapp/templates/app/assets/images/cross.png +0 -0
  27. data/lib/generators/mindapp/templates/app/assets/images/delete.png +0 -0
  28. data/lib/generators/mindapp/templates/app/assets/images/external-link.png +0 -0
  29. data/lib/generators/mindapp/templates/app/assets/images/help.png +0 -0
  30. data/lib/generators/mindapp/templates/app/assets/images/house.png +0 -0
  31. data/lib/generators/mindapp/templates/app/assets/images/logo_mindapp.png +0 -0
  32. data/lib/generators/mindapp/templates/app/assets/images/logout.png +0 -0
  33. data/lib/generators/mindapp/templates/app/assets/images/new.gif +0 -0
  34. data/lib/generators/mindapp/templates/app/assets/images/new.png +0 -0
  35. data/lib/generators/mindapp/templates/app/assets/images/page.png +0 -0
  36. data/lib/generators/mindapp/templates/app/assets/images/page_attach.png +0 -0
  37. data/lib/generators/mindapp/templates/app/assets/images/page_green.png +0 -0
  38. data/lib/generators/mindapp/templates/app/assets/images/page_output.png +0 -0
  39. data/lib/generators/mindapp/templates/app/assets/images/page_pdf.png +0 -0
  40. data/lib/generators/mindapp/templates/app/assets/images/pencil.png +0 -0
  41. data/lib/generators/mindapp/templates/app/assets/images/printer.png +0 -0
  42. data/lib/generators/mindapp/templates/app/assets/images/refresh.png +0 -0
  43. data/lib/generators/mindapp/templates/app/assets/images/report.png +0 -0
  44. data/lib/generators/mindapp/templates/app/assets/images/rssmall.png +0 -0
  45. data/lib/generators/mindapp/templates/app/assets/images/tick.png +0 -0
  46. data/lib/generators/mindapp/templates/app/assets/images/user.png +0 -0
  47. data/lib/generators/mindapp/templates/app/assets/images/view_code.png +0 -0
  48. data/lib/generators/mindapp/templates/app/assets/javascripts/application.js +19 -0
  49. data/lib/generators/mindapp/templates/app/assets/javascripts/disable_enter_key.js +10 -0
  50. data/lib/generators/mindapp/templates/app/assets/javascripts/iscroll-wrapper.js +32 -0
  51. data/lib/generators/mindapp/templates/app/assets/javascripts/iscroll.js +1084 -0
  52. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery-1.7.1.js +9266 -0
  53. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile.datebox.js +1772 -0
  54. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile.js +7007 -0
  55. data/lib/generators/mindapp/templates/app/assets/javascripts/jquery.mobile.splitview.js +624 -0
  56. data/lib/generators/mindapp/templates/app/assets/javascripts/mindapp.js +14 -0
  57. data/lib/generators/mindapp/templates/app/assets/stylesheets/application.css.scss +18 -0
  58. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.eot +0 -0
  59. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.ttf +0 -0
  60. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun.woff +0 -0
  61. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_bold.ttf +0 -0
  62. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_bolditalic.ttf +0 -0
  63. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/sarabun_italic.ttf +0 -0
  64. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.eot +0 -0
  65. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.ttf +0 -0
  66. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew-webfont.woff +0 -0
  67. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew.css +47 -0
  68. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.eot +0 -0
  69. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.ttf +0 -0
  70. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.woff +0 -0
  71. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.eot +0 -0
  72. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.ttf +0 -0
  73. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.woff +0 -0
  74. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.eot +0 -0
  75. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.ttf +0 -0
  76. data/lib/generators/mindapp/templates/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.woff +0 -0
  77. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ajax-loader.png +0 -0
  78. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/bg.png +0 -0
  79. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_black.png +0 -0
  80. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_blue.png +0 -0
  81. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/button_red.png +0 -0
  82. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/cancel.png +0 -0
  83. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/close.png +0 -0
  84. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/del2.png +0 -0
  85. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/deli4.png +0 -0
  86. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/down-left.png +0 -0
  87. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/down-right.png +0 -0
  88. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/fbook.png +0 -0
  89. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ff.png +0 -0
  90. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icon-search-black.png +0 -0
  91. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-18-black.png +0 -0
  92. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-18-white.png +0 -0
  93. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-36-black.png +0 -0
  94. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/icons-36-white.png +0 -0
  95. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/overlay.png +0 -0
  96. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/rss3.png +0 -0
  97. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/rss4.png +0 -0
  98. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/search_bg.png +0 -0
  99. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/stumble2.png +0 -0
  100. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/stumble4.png +0 -0
  101. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/tab-left.png +0 -0
  102. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/tab-right.png +0 -0
  103. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/tech3.png +0 -0
  104. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/tech4.png +0 -0
  105. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/twitter3.png +0 -0
  106. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/twitter4.png +0 -0
  107. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-anim_basic_16x16.gif +0 -0
  108. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  109. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  110. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  111. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  112. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  113. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  114. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  115. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  116. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  117. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  118. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  119. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  120. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  121. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  122. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_217bc0_256x240.png +0 -0
  123. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_222222_256x240.png +0 -0
  124. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
  125. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_454545_256x240.png +0 -0
  126. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_469bdd_256x240.png +0 -0
  127. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_6da8d5_256x240.png +0 -0
  128. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_888888_256x240.png +0 -0
  129. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
  130. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_d8e7f3_256x240.png +0 -0
  131. data/lib/generators/mindapp/templates/app/assets/stylesheets/images/ui-icons_f9bd01_256x240.png +0 -0
  132. data/lib/generators/mindapp/templates/app/assets/stylesheets/indicator.gif +0 -0
  133. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.css +1855 -0
  134. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.datebox.css +65 -0
  135. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.grids.collapsible.css +122 -0
  136. data/lib/generators/mindapp/templates/app/assets/stylesheets/jquery.mobile.splitview.css +130 -0
  137. data/lib/generators/mindapp/templates/app/assets/stylesheets/mindapp.css +134 -0
  138. data/lib/generators/mindapp/templates/app/assets/stylesheets/sarabun.css +37 -0
  139. data/lib/generators/mindapp/templates/app/controllers/identities_controller.rb +5 -0
  140. data/lib/generators/mindapp/templates/app/controllers/mindapp_controller.rb +464 -0
  141. data/lib/generators/mindapp/templates/app/controllers/sessions_controller.rb +28 -0
  142. data/lib/generators/mindapp/templates/app/mailers/.gitkeep +0 -0
  143. data/lib/generators/mindapp/templates/app/mailers/mindapp_mailer.rb +7 -0
  144. data/lib/generators/mindapp/templates/app/mindapp/index.mm +85 -0
  145. data/lib/generators/mindapp/templates/app/mindapp/template/view.html.erb +21 -0
  146. data/lib/generators/mindapp/templates/app/models/.gitkeep +0 -0
  147. data/lib/generators/mindapp/templates/app/models/identity.rb +14 -0
  148. data/lib/generators/mindapp/templates/app/models/mindapp/doc.rb +30 -0
  149. data/lib/generators/mindapp/templates/app/models/mindapp/module.rb +10 -0
  150. data/lib/generators/mindapp/templates/app/models/mindapp/notice.rb +11 -0
  151. data/lib/generators/mindapp/templates/app/models/mindapp/role.rb +7 -0
  152. data/lib/generators/mindapp/templates/app/models/mindapp/runseq.rb +24 -0
  153. data/lib/generators/mindapp/templates/app/models/mindapp/service.rb +16 -0
  154. data/lib/generators/mindapp/templates/app/models/mindapp/xmain.rb +38 -0
  155. data/lib/generators/mindapp/templates/app/models/param.rb +41 -0
  156. data/lib/generators/mindapp/templates/app/models/user.rb +30 -0
  157. data/lib/generators/mindapp/templates/app/views/identities/new.html.erb +30 -0
  158. data/lib/generators/mindapp/templates/app/views/layouts/_full.haml +39 -0
  159. data/lib/generators/mindapp/templates/app/views/layouts/_head.html.erb +14 -0
  160. data/lib/generators/mindapp/templates/app/views/layouts/_page.haml +16 -0
  161. data/lib/generators/mindapp/templates/app/views/layouts/_top.html.erb +10 -0
  162. data/lib/generators/mindapp/templates/app/views/layouts/application.haml +4 -0
  163. data/lib/generators/mindapp/templates/app/views/layouts/gmail.html.erb +9 -0
  164. data/lib/generators/mindapp/templates/app/views/layouts/mobile.html.erb +13 -0
  165. data/lib/generators/mindapp/templates/app/views/layouts/mobilejq.html.erb +31 -0
  166. data/lib/generators/mindapp/templates/app/views/layouts/print.html.erb +22 -0
  167. data/lib/generators/mindapp/templates/app/views/layouts/utf8.html.erb +21 -0
  168. data/lib/generators/mindapp/templates/app/views/mindapp/_activity.md +10 -0
  169. data/lib/generators/mindapp/templates/app/views/mindapp/_menu.haml +22 -0
  170. data/lib/generators/mindapp/templates/app/views/mindapp/_menu_mm.haml +30 -0
  171. data/lib/generators/mindapp/templates/app/views/mindapp/_model.md +5 -0
  172. data/lib/generators/mindapp/templates/app/views/mindapp/_modul.md +9 -0
  173. data/lib/generators/mindapp/templates/app/views/mindapp/_pending_home.haml +5 -0
  174. data/lib/generators/mindapp/templates/app/views/mindapp/_pending_page.haml +26 -0
  175. data/lib/generators/mindapp/templates/app/views/mindapp/_service.md +24 -0
  176. data/lib/generators/mindapp/templates/app/views/mindapp/_static.haml +23 -0
  177. data/lib/generators/mindapp/templates/app/views/mindapp/doc.md +37 -0
  178. data/lib/generators/mindapp/templates/app/views/mindapp/feed.rss.builder +27 -0
  179. data/lib/generators/mindapp/templates/app/views/mindapp/help.haml +20 -0
  180. data/lib/generators/mindapp/templates/app/views/mindapp/index.html.haml +34 -0
  181. data/lib/generators/mindapp/templates/app/views/mindapp/pending.haml +1 -0
  182. data/lib/generators/mindapp/templates/app/views/mindapp/run_form.haml +37 -0
  183. data/lib/generators/mindapp/templates/app/views/mindapp/search.haml +20 -0
  184. data/lib/generators/mindapp/templates/app/views/mindapp/status.haml +61 -0
  185. data/lib/generators/mindapp/templates/app/views/mindapp_mailer/gmail.html.erb +9 -0
  186. data/lib/generators/mindapp/templates/app/views/sessions/new.html.erb +11 -0
  187. data/lib/generators/mindapp/templates/mindapp.yml +10 -0
  188. data/lib/generators/mindapp/templates/seeds.rb +6 -0
  189. data/lib/mindapp.rb +6 -0
  190. data/lib/mindapp/helpers.rb +475 -0
  191. data/lib/mindapp/railtie.rb +18 -0
  192. data/lib/mindapp/version.rb +3 -0
  193. data/lib/tasks/mindapp.rake +191 -0
  194. data/mindapp.gemspec +19 -0
  195. metadata +239 -0
@@ -0,0 +1,37 @@
1
+ @font-face {
2
+ font-family: 'TH SarabunPSK';
3
+ src: url('fonts/thsarabunnew-webfont.eot');
4
+ src: url('fonts/thsarabunnew-webfont.eot?#iefix') format('embedded-opentype'),
5
+ url('fonts/thsarabunnew-webfont.woff') format('woff'),
6
+ url('fonts/thsarabunnew-webfont.ttf') format('truetype');
7
+ font-weight: normal;
8
+ font-style: normal;
9
+ }
10
+ @font-face {
11
+ font-family: 'TH SarabunPSK';
12
+ font-style: normal;
13
+ font-weight: bold;
14
+ src: url('fonts/thsarabunnew_bold-webfont.eot');
15
+ src: url('fonts/thsarabunnew_bold-webfont.eot?#iefix') format('embedded-opentype'),
16
+ url('fonts/thsarabunnew_bold-webfont.woff') format('woff'),
17
+ url('fonts/thsarabunnew_bold-webfont.ttf') format('truetype');
18
+ }
19
+ @font-face {
20
+ font-family: 'TH SarabunPSK';
21
+ font-style: italic;
22
+ font-weight: bold;
23
+ src: url('fonts/thsarabunnew_bolditalic-webfont.eot');
24
+ src: url('fonts/thsarabunnew_bolditalic-webfont.eot?#iefix') format('embedded-opentype'),
25
+ url('fonts/thsarabunnew_bolditalic-webfont.woff') format('woff'),
26
+ url('fonts/thsarabunnew_bolditalic-webfont.ttf') format('truetype');
27
+ }
28
+ @font-face {
29
+ font-family: 'TH SarabunPSK';
30
+ font-style: italic;
31
+ font-weight: normal;
32
+ src: url('fonts/thsarabunnew_italic-webfont.eot');
33
+ src: url('fonts/thsarabunnew_italic-webfont.eot?#iefix') format('embedded-opentype'),
34
+ url('fonts/thsarabunnew_italic-webfont.woff') format('woff'),
35
+ url('fonts/thsarabunnew_italic-webfont.ttf') format('truetype');
36
+ }
37
+
@@ -0,0 +1,5 @@
1
+ class IdentitiesController < ApplicationController
2
+ def new
3
+ @identity = env['omniauth.identity']
4
+ end
5
+ end
@@ -0,0 +1,464 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class MindappController < ApplicationController
3
+ def index
4
+ end
5
+ def pending
6
+ @xmains = Mindapp::Xmain.in(status:['R','I']).asc(:created_at)
7
+ end
8
+ def cancel
9
+ Mindapp::Xmain.find(params[:id]).update_attributes :status=>'X'
10
+ if params[:return]
11
+ redirect_to params[:return]
12
+ else
13
+ redirect_to action:"pending"
14
+ end
15
+ end
16
+ def clear_xmains
17
+ Mindapp::Xmain.where(:status =>{'$in'=>['R','I']}).update_all(:status=>'X')
18
+ redirect_to action:"pending"
19
+ end
20
+ def ajax_notice
21
+ if notice=Mindapp::Notice.recent(current_user)
22
+ notice.update_attribute :unread, false
23
+ js = "notice('#{notice.message}');"
24
+ else
25
+ js = ""
26
+ end
27
+ render :text=> "<script>#{js}</script>"
28
+ end
29
+ def init
30
+ @service= Mindapp::Service.where(:module_code=> params[:module], :code=> params[:service]).first
31
+ if @service && authorize_init?
32
+ xmain = create_xmain(@service)
33
+ result = create_runseq(xmain)
34
+ unless result
35
+ message = "cannot find action for xmain #{xmain.id}"
36
+ gma_log("ERROR", message)
37
+ flash[:notice]= message
38
+ # gma_notice message
39
+ redirect_to "pending" and return
40
+ end
41
+ xmain.update_attribute(:xvars, @xvars)
42
+ xmain.runseqs.last.update_attribute(:end,true)
43
+ redirect_to :action=>'run', :id=>xmain.id
44
+ else
45
+ refresh_to "/", :alert => "ขออภัย ไม่สามารถทำงานได้"
46
+ end
47
+ end
48
+ def run
49
+ init_vars(params[:id])
50
+ if authorize?
51
+ # session[:full_layout]= false
52
+ redirect_to(:action=>"run_#{@runseq.action}", :id=>@xmain.id)
53
+ else
54
+ redirect_to_root
55
+ end
56
+ end
57
+ def run_form
58
+ init_vars(params[:id])
59
+ if authorize?
60
+ if ['F', 'X'].include? @xmain.status
61
+ redirect_to_root
62
+ else
63
+ service= @xmain.service
64
+ if service
65
+ @title= "รหัสดำเนินการ #{@xmain.xid}: #{@xmain.name} / #{@runseq.name}"
66
+ fhelp= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.md"
67
+ @help = File.read(fhelp) if File.exists?(fhelp)
68
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
69
+ @ui= File.read(f)
70
+ else
71
+ flash[:notice]= "ไม่สามารถค้นหาบริการที่ต้องการได้"
72
+ gma_notice "ไม่สามารถค้นหาบริการที่ต้องการได้"
73
+ redirect_to_root
74
+ end
75
+ end
76
+ else
77
+ redirect_to_root
78
+ end
79
+ end
80
+ def run_if
81
+ init_vars(params[:id])
82
+ condition= eval(@runseq.code).to_s
83
+ match_found= false
84
+ if condition
85
+ xml= REXML::Document.new(@runseq.xml).root
86
+ next_runseq= nil
87
+ text = xml.elements['//node/node'].attributes['TEXT']
88
+ match, name= text.split(':',2)
89
+ label= name2code(name.strip)
90
+ if condition==match
91
+ if label=="end"
92
+ @end_job= true
93
+ else
94
+ next_runseq= @xmain.runseqs.where(:code=> label, :action.ne=>'redirect').first
95
+ match_found= true if next_runseq
96
+ @runseq_not_f= false
97
+ end
98
+ end
99
+ end
100
+ unless match_found || @end_job
101
+ next_runseq= @xmain.runseqs.where( rstep:(@xvars['current_step']+1) ).first
102
+ end
103
+ end_action(next_runseq)
104
+ end
105
+ def run_redirect
106
+ init_vars(params[:id])
107
+ # next_runseq= @xmain.runseqs.first :conditions=>["id != ? AND code = ?",@runseq.id, @runseq.code]
108
+ next_runseq= @xmain.runseqs.where(:id.ne=>@runseq.id, :code=>@runseq.code).first
109
+ @xmain.current_runseq= next_runseq.id
110
+ end_action(next_runseq)
111
+ end
112
+ def run_do
113
+ init_vars(params[:id])
114
+ @runseq.start ||= Time.now
115
+ @runseq.status= 'R' # running
116
+ $runseq_id= @runseq.id; $user_id= current_user.id
117
+ set_global
118
+ controller = Kernel.const_get(@xvars['custom_controller']).new
119
+ result = controller.send(@runseq.code)
120
+ init_vars_by_runseq($runseq_id)
121
+ @xvars = $xvars
122
+ @xvars[@runseq.code.to_sym]= result.to_s
123
+ @xvars['current_step']= @runseq.rstep
124
+ @runseq.status= 'F' #finish
125
+ @runseq.stop= Time.now
126
+ @runseq.save
127
+ end_action
128
+ rescue => e
129
+ @xmain.status='E'
130
+ @xvars['error']= e.to_s
131
+ @xmain.xvars= $xvars
132
+ @xmain.save
133
+ @runseq.status= 'F' #finish
134
+ @runseq.stop= Time.now
135
+ @runseq.save
136
+ refresh_to "/", :alert => "ขออภัย เกิดข้อผิดพลาดในรหัสการดำเนินงาน #{@xmain.id} #{@xvars['error']}"
137
+ end
138
+ def run_output
139
+ init_vars(params[:id])
140
+ service= @xmain.service
141
+ disp= get_option("display")
142
+ display = (disp && !affirm(disp)) ? false : true
143
+ if service
144
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
145
+ @ui= File.read(f)
146
+ if Mindapp::Doc.where(:runseq_id=>@runseq.id).exists?
147
+ @doc= Mindapp::Doc.where(:runseq_id=>@runseq.id).first
148
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
149
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
150
+ :ip=> get_ip, :service=>service, :display=>display,
151
+ :secured => @xmain.service.secured
152
+ else
153
+ @doc= Mindapp::Doc.create :name=> @runseq.name,
154
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
155
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
156
+ :ip=> get_ip, :service=>service, :display=>display,
157
+ :secured => @xmain.service.secured
158
+ end
159
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next &gt;"
160
+ @message = "สิ้นสุดการทำงาน" if @runseq.end
161
+ eval "@xvars[@runseq.code] = url_for(:controller=>'Mindapp', :action=>'document', :id=>@doc.id)"
162
+ else
163
+ flash[:notice]= "ไม่สามารถค้นหาบริการที่ต้องการได้"
164
+ gma_notice "ไม่สามารถค้นหาบริการที่ต้องการได้"
165
+ redirect_to_root
166
+ end
167
+ #display= get_option("display")
168
+ unless display
169
+ end_action
170
+ end
171
+ end
172
+ def run_mail
173
+ init_vars(params[:id])
174
+ service= @xmain.service
175
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
176
+ @ui= File.read(f).html_safe
177
+ @doc= Mindapp::Doc.create :name=> @runseq.name,
178
+ :content_type=>"mail", :data_text=> render_to_string(:inline=>@ui, :layout=>false),
179
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_user,
180
+ :ip=> get_ip, :service=>service, :display=>false,
181
+ :secured => @xmain.service.secured
182
+ eval "@xvars[:#{@runseq.code}] = url_for(:controller=>'mindapp', :action=>'document', :id=>@doc.id)"
183
+ mail_from = get_option('from')
184
+ # sender= render_to_string(:inline=>mail_from) if mail_from
185
+ mail_to = get_option('to')
186
+ recipients= render_to_string(:inline=>mail_to) if mail_to
187
+ mail_subject = get_option('subject')
188
+ subject= render_to_string(:inline=>mail_subject) || "#{@runseq.name}"
189
+ MindappMailer.gmail(@doc.data_text, recipients, subject).deliver unless DONT_SEND_MAIL
190
+ end_action
191
+ end
192
+ def end_output
193
+ init_vars(params[:xmain_id])
194
+ end_action
195
+ end
196
+ def end_form
197
+ init_vars(params[:xmain_id])
198
+ eval "@xvars[@runseq.code] = {} unless @xvars[@runseq.code]"
199
+ params.each { |k,v|
200
+ if params[k].respond_to? :original_filename
201
+ get_image(k, params[k])
202
+ elsif params[k].is_a?(Hash)
203
+ eval "@xvars[@runseq.code][k] = v"
204
+ params[k].each { |k1,v1|
205
+ next unless v1.respond_to?(:original_filename)
206
+ get_image1(k, k1, params[k][k1])
207
+ }
208
+ else
209
+ eval "@xvars[@runseq.code][k] = v"
210
+ end
211
+ }
212
+ end_action
213
+ end
214
+ def end_action(next_runseq = nil)
215
+ # @runseq.status='F' unless @runseq_not_f
216
+ @xmain.xvars= @xvars
217
+ @xmain.status= 'R' # running
218
+ @xmain.save
219
+ @runseq.status='F'
220
+ @runseq.user= current_user
221
+ @runseq.stop= Time.now
222
+ @runseq.save
223
+ next_runseq= @xmain.runseqs.where(:rstep=> @runseq.rstep+1).first unless next_runseq
224
+ if @end_job || !next_runseq # job finish
225
+ @xmain.xvars= @xvars
226
+ @xmain.status= 'F' unless @xmain.status== 'E' # finish
227
+ @xmain.stop= Time.now
228
+ @xmain.save
229
+ if @xvars['p']['return']
230
+ redirect_to @xvars['p']['return'] and return
231
+ else
232
+ redirect_to :action=>'pending' and return
233
+ end
234
+ else
235
+ @xmain.update_attribute :current_runseq, next_runseq.id
236
+ redirect_to :action=>'run', :id=>@xmain.id and return
237
+ end
238
+ end
239
+ # process images from first level
240
+ def get_image(key, params)
241
+ doc = Mindapp::Doc.create(
242
+ :name=> key.to_s,
243
+ :xmain=> @xmain.id,
244
+ :runseq=> @runseq.id,
245
+ :filename=> params.original_filename,
246
+ :content_type => params.content_type || 'application/zip',
247
+ :data_text=> '',
248
+ :display=>true,
249
+ :secured => @xmain.service.secured )
250
+ if defined?(IMAGE_LOCATION)
251
+ file_name = "#{IMAGE_LOCATION}/f#{Param.gen(:asset_id)}"
252
+ File.open(file_name,"wb") { |f| f.puts(params.read) }
253
+ eval "@xvars[@runseq.code][key] = '#{url_for(:action=>'document', :id=>doc.id, :only_path => true )}' "
254
+ doc.update_attributes :url => filename, :basename => File.basename(filename), :cloudinary => false
255
+ else
256
+ result = Cloudinary::Uploader.upload(params)
257
+ eval %Q{ @xvars[@runseq.code][key] = '#{result["url"]}' }
258
+ doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true
259
+ end
260
+ end
261
+ # process images from second level, e.g,, fields_for
262
+ def get_image1(key, key1, params)
263
+ doc = Mindapp::Doc.create(
264
+ :name=> "#{key}_#{key1}",
265
+ :xmain=> @xmain.id,
266
+ :runseq=> @runseq.id,
267
+ :filename=> params.original_filename,
268
+ :content_type => params.content_type || 'application/zip',
269
+ :data_text=> '',
270
+ :display=>true, :secured => @xmain.service.secured )
271
+ if defined?(IMAGE_LOCATION)
272
+ file_name = "#{IMAGE_LOCATION}/f#{Param.gen(:asset_id)}"
273
+ File.open(file_name,"wb") { |f| f.puts(params.read) }
274
+ eval "@xvars[@runseq.code][key][key1] = '#{url_for(:action=>'document', :id=>doc.id, :only_path => true)}' "
275
+ doc.update_attributes :url => filename, :basename => File.basename(filename), :cloudinary => false
276
+ else
277
+ result = Cloudinary::Uploader.upload(params)
278
+ eval %Q{ @xvars[@runseq.code][key][key1] = '#{result["url"]}' }
279
+ doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true
280
+ end
281
+ end
282
+ def doc_print
283
+ render :file=>'public/doc.html', :layout=>'layouts/print'
284
+ end
285
+ def doc
286
+ require 'rdoc'
287
+ @app= get_app
288
+ @intro = File.read('README.md')
289
+ @print= "<div align='right'><img src='/assets/printer.png'/> <a href='/mindapp/doc_print' target='_blank'/>พิมพ์</a></div>"
290
+ doc= render_to_string 'doc.md', :layout => false
291
+ html= Maruku.new(doc).to_html
292
+ File.open('public/doc.html','w') {|f| f.puts html }
293
+ respond_to do |format|
294
+ format.html {
295
+ render :text=> @print+html, :layout => 'layouts/_page'
296
+ # render :text=> Maruku.new(doc).to_html, :layout => false
297
+ # format.html {
298
+ # h = RDoc::Markup::ToHtml.new
299
+ # render :text=> h.convert(doc), :layout => 'layouts/_page'
300
+ }
301
+ format.pdf {
302
+ latex= Maruku.new(doc).to_latex
303
+ File.open('tmp/doc.md','w') {|f| f.puts doc}
304
+ File.open('tmp/doc.tex','w') {|f| f.puts latex}
305
+ # system('pdflatex tmp/doc.tex ')
306
+ # send_file( 'tmp/doc.pdf', :type => ‘application/pdf’,
307
+ # :disposition => ‘inline’, :filename => 'doc.pdf')
308
+ render :text=>'done'
309
+ }
310
+ end
311
+ end
312
+ def status
313
+ @xmain= Mindapp::Xmain.where(:xid=>params[:xid]).first
314
+ @title= "Task number #{params[:xid]} #{@xmain.name}"
315
+ @backbtn= true
316
+ @xvars= @xmain.xvars
317
+ # flash.now[:notice]= "รายการ #{@xmain.id} ได้ถูกยกเลิกแล้ว" if @xmain.status=='X'
318
+ gma_notice "Task #{@xmain.id} is cancelled" if @xmain.status=='X'
319
+ # flash.now[:notice]= "transaction #{@xmain.id} was cancelled" if @xmain.status=='X'
320
+ rescue
321
+ refresh_to "/", :alert => "Could not find task number <b> #{params[:xid]} </b>"
322
+ end
323
+ def help
324
+ end
325
+ def search
326
+ @q = params[:q] || params[:gma_search][:q] || ""
327
+ @title = "ผลการค้นหา #{@q}"
328
+ @backbtn= true
329
+ @cache= true
330
+ if @q.blank?
331
+ redirect_to "/"
332
+ else
333
+ s= GmaSearch.create :q=>@q, :ip=> request.env["REMOTE_ADDR"]
334
+ do_search
335
+ end
336
+ end
337
+ def err404
338
+ gma_log 'ERROR', 'main/err404'
339
+ flash[:notice] = "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
340
+ gma_notice "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
341
+ # gma_notice "ขออภัย เกิดข้อผิดพลาดรหัส 404 ขึ้นในระบบ กรุณาติดต่อผู้ดูแลระบบ"
342
+ redirect_to '/'
343
+ end
344
+ def err500
345
+ gma_log 'ERROR', 'main/err500'
346
+ flash[:notice] = "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
347
+ gma_notice "We're sorry, but something went wrong. We've been notified about this issue and we'll take a look at it shortly."
348
+ # gma_notice "ขออภัย เกิดข้อผิดพลาดรหัส 500 ขึ้นในระบบ กรุณาติดต่อผู้ดูแลระบบ"
349
+ redirect_to '/'
350
+ end
351
+
352
+ private
353
+ def create_xmain(service)
354
+ c = name2camel(service.module.code)
355
+ custom_controller= "#{c}Controller"
356
+ Mindapp::Xmain.create :service=>service,
357
+ :start=>Time.now,
358
+ :name=>service.name,
359
+ :ip=> get_ip,
360
+ :status=>'I', # init
361
+ :user=>current_user,
362
+ :xvars=> {
363
+ :service_id=>service.id, :p=>params,
364
+ :id=>params[:id],
365
+ :user_id=>current_user.id, :custom_controller=>custom_controller,
366
+ :host=>request.host,
367
+ :referer=>request.env['HTTP_REFERER'] }
368
+ end
369
+ def create_runseq(xmain)
370
+ @xvars= xmain.xvars
371
+ default_role= get_default_role
372
+ xml= xmain.service.xml
373
+ root = REXML::Document.new(xml).root
374
+ i= 0; j= 0 # i= step, j= form_step
375
+ root.elements.each('node') do |activity|
376
+ text= activity.attributes['TEXT']
377
+ next if gma_comment?(text)
378
+ next if text =~/^rule:\s*/
379
+ action= freemind2action(activity.elements['icon'].attributes['BUILTIN']) if activity.elements['icon']
380
+ return false unless action
381
+ i= i + 1
382
+ output_display= false
383
+ if action=='output'
384
+ display= get_option_xml("display", activity)
385
+ if display && !affirm(display)
386
+ output_display= false
387
+ else
388
+ output_display= true
389
+ end
390
+ end
391
+ j= j + 1 if (action=='form' || output_display)
392
+ @xvars['referer'] = activity.attributes['TEXT'] if action=='redirect'
393
+ if action!= 'if'
394
+ scode, name= text.split(':', 2)
395
+ name ||= scode; name.strip!
396
+ code= name2code(scode)
397
+ else
398
+ code= text
399
+ name= text
400
+ end
401
+ role= get_option_xml("role", activity) || default_role
402
+ rule= get_option_xml("rule", activity) || "true"
403
+ runseq= Mindapp::Runseq.create :xmain=>xmain.id,
404
+ :name=> name, :action=> action,
405
+ :code=> code, :role=>role.upcase, :rule=> rule,
406
+ :rstep=> i, :form_step=> j, :status=>'I',
407
+ :xml=>activity.to_s
408
+ xmain.current_runseq= runseq.id if i==1
409
+ end
410
+ @xvars['total_steps']= i
411
+ @xvars['total_form_steps']= j
412
+ end
413
+ def init_vars(xmain)
414
+ @xmain= Mindapp::Xmain.find xmain
415
+ @xvars= @xmain.xvars
416
+ @runseq= @xmain.runseqs.find @xmain.current_runseq
417
+ # authorize?
418
+ @xvars['current_step']= @runseq.rstep
419
+ @xvars['referrer']= request.referrer
420
+ session[:xmain_id]= @xmain.id
421
+ session[:runseq_id]= @runseq.id
422
+ unless params[:action]=='run_call'
423
+ @runseq.start ||= Time.now
424
+ @runseq.status= 'R' # running
425
+ @runseq.save
426
+ end
427
+ $xmain= @xmain; $xvars= @xvars
428
+ $runseq_id= @runseq.id; $user_id= current_user.id
429
+ end
430
+ def init_vars_by_runseq(runseq_id)
431
+ @runseq= Mindapp::Runseq.find runseq_id
432
+ @xmain= @runseq.xmain
433
+ @xvars= @xmain.xvars
434
+ #@xvars[:current_step]= @runseq.rstep
435
+ @runseq.start ||= Time.now
436
+ @runseq.status= 'R' # running
437
+ @runseq.save
438
+ end
439
+ def store_asset
440
+ if params[:content]
441
+ doc = GmaDoc.create! :name=> 'asset',
442
+ :filename=> (params[:file_name]||''),
443
+ :content_type => (params[:content_type] || 'application/zip'),
444
+ :data_text=> '',
445
+ :display=>true
446
+ path = (IMAGE_LOCATION || "tmp")
447
+ File.open("#{path}/f#{doc.id}","wb") { |f|
448
+ f.puts(params[:content])
449
+ }
450
+ render :xml=>"<elocal><doc id='#{doc.id}' /><success /></elocal>"
451
+ else
452
+ render :xml=>"<elocal><fail /></elocal>"
453
+ end
454
+ end
455
+ def do_search
456
+ if current_user.secured?
457
+ @docs = GmaDoc.search_secured(@q.downcase, params[:page], PER_PAGE)
458
+ else
459
+ @docs = GmaDoc.search(@q.downcase, params[:page], PER_PAGE)
460
+ end
461
+ @xmains = GmaXmain.find(@docs.map(&:gma_xmain_id)).sort { |a,b| b.id<=>a.id }
462
+ # @xmains = GmaXmain.find @docs.map(&:created_at).sort { |a,b| b<=>a }
463
+ end
464
+ end