jinda 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/lib/generators/jinda/install_generator.rb +5 -0
  4. data/lib/generators/jinda/templates/README.md +1 -1
  5. data/lib/generators/jinda/templates/app/controllers/concerns/jinda_general_concern.rb +27 -4
  6. data/lib/generators/jinda/templates/app/controllers/concerns/jinda_run_concern.rb +121 -6
  7. data/lib/generators/jinda/templates/app/controllers/jinda_org/docs_controller.rb +55 -0
  8. data/lib/generators/jinda/templates/app/controllers/jinda_org/jinda_controller.rb +22 -2
  9. data/lib/generators/jinda/templates/app/jinda/index.mm +83 -14
  10. data/lib/generators/jinda/templates/app/jinda/template/view.html.erb +22 -23
  11. data/lib/generators/jinda/templates/app/models/jinda/doc.rb +5 -0
  12. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_edit.html.erb +21 -0
  13. data/lib/generators/jinda/templates/app/views/docs/doc_edit/doc_select.html.erb +14 -0
  14. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.html.erb +26 -0
  15. data/lib/generators/jinda/templates/app/views/docs/doc_new/doc_form.md +36 -0
  16. data/lib/generators/jinda/templates/app/views/docs/doc_xedit/doc_edit.html.erb +21 -0
  17. data/lib/generators/jinda/templates/app/views/docs/edit/select_note.html.erb +14 -0
  18. data/lib/generators/jinda/templates/app/views/docs/index.haml +21 -0
  19. data/lib/generators/jinda/templates/app/views/docs/my.haml +27 -0
  20. data/lib/generators/jinda/templates/app/views/jinda/index.html.haml +3 -3
  21. data/lib/generators/jinda/templates/app/views/jinda/run_output.haml +3 -3
  22. data/lib/jinda/helpers.rb +8 -15
  23. data/lib/jinda/version.rb +1 -1
  24. metadata +11 -5
  25. data/lib/jinda/ template/view.html.erb +0 -25
  26. data/lib/jinda/app/jinda/index.mm +0 -309
  27. data/lib/jinda/app/jinda/template/view.html.erb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d32e253610977d016f3a715060ae616171a2c71331474c9f7dc7091682b4d58b
4
- data.tar.gz: 6af32a30a010f037e392fb630713c5b42a8ebc1482da18faae7605aaff8d804d
3
+ metadata.gz: 69bfafef87f66a61669d13ec1fb0e35b33856d04c4c0576a3195db8f4afa2cd4
4
+ data.tar.gz: a9e44d8bdb20895533f9f98386df69fd9a1b5d70e80202bca462842cd518489b
5
5
  SHA512:
6
- metadata.gz: b4fa824aa0b3598642f0e2b818883e2b1eea7f5dcfb5eacc04bd3dbc1c279dbc6ec697dca9a6b0759f8ba6f4b5eab9c12d31736b70a520d2d84fa4eff9aab99b
7
- data.tar.gz: '04840e4df4f2d0e02a8f200bf5707d294b7993c53d2fc009c4ef558a9a9bab87cb4a3700f666b19a7b09fe094f655dd9e33c6815138ae8d194ab4d8c746d9d32'
6
+ metadata.gz: b8b323cfb30d466d54619b7df410e11ee6cdf0c1c3527ec1be81e775228d1d47803ed51441054bbeb31e950e95e583b14431a41bc26f3236bd8e13cd232378ce
7
+ data.tar.gz: 34ba2f9c60c3934aa957ae288161126566255dc83401840477a37fd19b22d4b010fa2bc20deb4de2517365045912fb67306bdcfcee718e1d6619bde276821946
data/README.md CHANGED
@@ -14,8 +14,8 @@ Rails Application Generator using Freemind
14
14
 
15
15
  These versions works for sure but others may do.
16
16
 
17
- * Ruby 2.7.0
18
- * Rails 6.0.2
17
+ * Ruby 2.7.1
18
+ * Rails 6.0.3
19
19
  * MongoDB 6
20
20
  * Freemind 1.0.1
21
21
 
@@ -40,7 +40,7 @@ app without ActiveRecord
40
40
 
41
41
  ## Add jinda to your Gemfile:
42
42
 
43
- gem 'jinda', '~> 0.5.2'
43
+ gem 'jinda', '~> 0.5.3'
44
44
 
45
45
  For Development (most updated)
46
46
 
@@ -83,6 +83,7 @@ module Jinda
83
83
  inside("app/controllers") {(File.file? "admins_controller.rb") ? ( say "Please merge existing jinda_org/admins_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/admins_controller.rb', 'admins_controller.rb')}
84
84
  inside("app/controllers") {(File.file? "articles_controller.rb") ? ( say "Please merge existing jinda_org/articles_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/articles_controller.rb', 'articles_controller.rb')}
85
85
  inside("app/controllers") {(File.file? "comments_controller.rb") ? ( say "Please merge existing jinda_org/comments_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/comments_controller.rb', 'comments_controller.rb')}
86
+ inside("app/controllers") {(File.file? "docs_controller.rb") ? ( say "Please merge existing jinda_org/docs_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/docs_controller.rb', 'docs_controller.rb')}
86
87
  inside("app/controllers") {(File.file? "identities_controller.rb") ? ( say "Please merge existing jinda_org/identities_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/identities_controller.rb', 'identities_controller.rb')}
87
88
  inside("app/controllers") {(File.file? "jinda_controller.rb") ? ( say "Please merge existing jinda_org/jinda_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/jinda_controller.rb', 'jinda_controller.rb')}
88
89
  inside("app/controllers") {(File.file? "password_resets_controller.rb") ? ( say "Please merge existing jinda_org/password_resets_controller.rb after this installation", :red) : (FileUtils.mv 'jinda_org/password_resets_controller.rb', 'password_resets_controller.rb')}
@@ -107,11 +108,15 @@ module Jinda
107
108
  route "resources :sessions"
108
109
  route "resources :identities"
109
110
  route "resources :users"
111
+ route "resources :docs"
110
112
  route "resources :notes"
111
113
  route "resources :articles"
114
+ route "get '/jinda/document/:id' => 'jinda#document'"
112
115
  route "get '/notes/destroy/:id' => 'notes#destroy'"
113
116
  route "get '/notes/my/destroy/:id' => 'notes#destroy'"
117
+ route "get '/docs/my/destroy' => 'docs#destroy'"
114
118
  route "get '/notes/my' => 'notes/my'"
119
+ route "get '/docs/my' => 'docs/my'"
115
120
  route "get '/articles/my/destroy' => 'articles#destroy'"
116
121
  route "get '/articles/my' => 'articles/my'"
117
122
  route "get '/logout' => 'sessions#destroy', :as => 'logout'"
@@ -36,7 +36,7 @@ app without ActiveRecord
36
36
 
37
37
  ## Add jinda to your Gemfile:
38
38
 
39
- gem 'jinda', '~> 0.5.2'
39
+ gem 'jinda', '~> 0.5.3'
40
40
 
41
41
  For Development (most updated)
42
42
 
@@ -55,6 +55,7 @@ module JindaGeneralConcern
55
55
  end
56
56
 
57
57
  # process images from second level, e.g,, fields_for
58
+ # save uploaded file info to Doc
58
59
  def get_image1(key, key1, params)
59
60
  doc = Jinda::Doc.create(
60
61
  :name=> "#{key}_#{key1}",
@@ -63,16 +64,24 @@ module JindaGeneralConcern
63
64
  :filename=> params.original_filename,
64
65
  :content_type => params.content_type || 'application/zip',
65
66
  :data_text=> '',
67
+ :dscan=> '',
68
+ :description=>'',
69
+ :keywords=>'',
70
+ :category=>'',
66
71
  :ma_display=>true, :ma_secured => @xmain.service.ma_secured )
67
72
  if defined?(IMAGE_LOCATION)
68
73
  filename = "#{IMAGE_LOCATION}/f#{Param.gen(:asset_id)}"
69
74
  File.open(filename,"wb") { |f| f.write(params.read) }
70
75
  eval "@xvars[@runseq.code][key][key1] = '#{url_for(:action=>'document', :id=>doc.id, :only_path => true)}' "
71
- doc.update_attributes :url => filename, :basename => File.basename(filename), :cloudinary => false
76
+ doc.update_attributes :url => filename,
77
+ :basename => File.basename(filename),
78
+ :cloudinary => false,
79
+ :dscan => @xvars[@runseq.code][key][key1],
80
+ :user_id => @xvars["user_id"]
72
81
  else
73
82
  result = Cloudinary::Uploader.upload(params)
74
83
  eval %Q{ @xvars[@runseq.code][key][key1] = '#{result["url"]}' }
75
- doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true
84
+ doc.update_attributes :url => result["url"], :basename => File.basename(result["url"]), :cloudinary => true, :dscan => @xvars[@runseq.code][key][key1]
76
85
  end
77
86
  end
78
87
 
@@ -81,13 +90,27 @@ module JindaGeneralConcern
81
90
  end
82
91
 
83
92
  # generate documentation for application
93
+ # search data from Doc
94
+ def document
95
+ doc = Jinda::Doc.find params[:id]
96
+ if doc.cloudinary
97
+ require 'net/http'
98
+ require "uri"
99
+ uri = URI.parse(doc.url)
100
+ data = Net::HTTP.get_response(uri)
101
+ send_data(data.body, :filename=>doc.filename, :type=>doc.content_type, :disposition=>"inline")
102
+ else
103
+ data= read_binary(doc.url)
104
+ send_data(data, :filename=>doc.filename, :type=>doc.content_type, :disposition=>"inline")
105
+ end
106
+ end
107
+
84
108
  def doc
85
109
  require 'rdoc'
86
110
  @app= get_app
87
111
  @intro = File.read('README.md')
88
112
  @print= "<div align='right'><img src='/assets/printer.png'/> <a href='/jinda/doc_print' target='_blank'/>Print</a></div>"
89
113
  doc= render_to_string 'doc.md', :layout => false
90
-
91
114
  html= Maruku.new(doc).to_html
92
115
  File.open('public/doc.html','w') {|f| f.puts html }
93
116
  respond_to do |format|
@@ -127,7 +150,7 @@ module JindaGeneralConcern
127
150
 
128
151
  def search
129
152
  @q = params[:q] || params[:ma_search][:q] || ""
130
- @title = "ผลการค้นหา #{@q}"
153
+ @title = "Search Result #{@q}"
131
154
  @backbtn= true
132
155
  @cache= true
133
156
  if @q.blank?
@@ -68,16 +68,19 @@ module JindaRunConcern
68
68
  end_action(next_runseq)
69
69
  end
70
70
 
71
+ # call controller to do the freemind task using Star symbol eg: Update
72
+ # not for run_form
71
73
  def run_do
72
74
  init_vars(params[:id])
73
75
  @runseq.start ||= Time.now
74
76
  @runseq.status= 'R' # running
75
77
  $runseq_id= @runseq.id
76
78
  $user_id= current_ma_user.try(:id)
79
+ # $xmain, $runseq, $user, $xvars, $ip from local
77
80
  set_global
78
81
  controller = Kernel.const_get(@xvars['custom_controller']).new
79
- # call controller to do the freemind task using Star symbol eg: Update
80
82
  result = controller.send(@runseq.code)
83
+ # save local var to database
81
84
  init_vars_by_runseq($runseq_id)
82
85
  @xvars = $xvars
83
86
  @xvars[@runseq.code.to_sym]= result.to_s
@@ -97,6 +100,100 @@ module JindaRunConcern
97
100
  refresh_to "/", :alert => "Sorry opeation error at #{@xmain.id} #{@xvars['error']}"
98
101
  end
99
102
 
103
+ def run_list
104
+ init_vars(params[:id])
105
+ service= @xmain.service
106
+ # disp= get_option("display")
107
+ # disp = Nil or :"??????"
108
+ # get option from last node: rule, role, display
109
+ disp= get_option("display")
110
+ # change from Nil to false and string to true
111
+ ma_display = (disp && !affirm(disp)) ? false : true
112
+ # Todo check if file is available
113
+ # if service and file exist
114
+ # ma_display from disp of 3rd level node as rule, role, display
115
+ if service && !@runseq.code.blank?
116
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
117
+ @ui= File.read(f)
118
+ if Jinda::Doc.where(:runseq_id=>@runseq.id).exists?
119
+ @doc= Jinda::Doc.where(:runseq_id=>@runseq.id).first
120
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
121
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
122
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
123
+ :ma_secured => @xmain.service.ma_secured,
124
+ :filename => "#{@runseq.code}.html.erb"
125
+ else
126
+ @doc= Jinda::Doc.create :name=> @runseq.name,
127
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
128
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
129
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
130
+ :ma_secured => @xmain.service.ma_secured,
131
+ :filename => "#{@runseq.code}.html.erb"
132
+ end
133
+ # @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next &gt;"
134
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >>"
135
+ @message = "Finish" if @runseq.end
136
+ ma_log("Todo defined?(NSG_NEXT : Next >>)")
137
+ eval "@xvars[@runseq.code] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
138
+ else
139
+ flash[:notice]= "Error: Can not find the view file for this controller"
140
+ ma_log "Error: Can not find the view file for this controller"
141
+ redirect_to_root
142
+ end
143
+ # Check if ma_display available
144
+ # ma_display= get_option("display")
145
+ # if not ma_display then no display both controller-view and content then end back to root
146
+ unless ma_display
147
+ end_action
148
+ end
149
+ # controller display from @ui
150
+ end
151
+
152
+ def run_folder
153
+ init_vars(params[:id])
154
+ service= @xmain.service
155
+ # disp= get_option("display")
156
+ # disp = Nil or :"??????"
157
+ disp= get_option("display")
158
+ ma_display = (disp && !affirm(disp)) ? false : true
159
+ # Todo check if file is available
160
+ # if service and file exist
161
+ if service && !@runseq.code.blank?
162
+ f= "app/views/#{service.module.code}/#{service.code}/#{@runseq.code}.html.erb"
163
+ @ui= File.read(f)
164
+ if Jinda::Doc.where(:runseq_id=>@runseq.id).exists?
165
+ @doc= Jinda::Doc.where(:runseq_id=>@runseq.id).first
166
+ @doc.update_attributes :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
167
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
168
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
169
+ :ma_secured => @xmain.service.ma_secured,
170
+ :filename => "#{@runseq.code}.html.erb"
171
+ else
172
+ @doc= Jinda::Doc.create :name=> @runseq.name,
173
+ :content_type=>"output", :data_text=> render_to_string(:inline=>@ui, :layout=>"utf8"),
174
+ :xmain=>@xmain, :runseq=>@runseq, :user=>current_ma_user,
175
+ :ip=> get_ip, :service=>service, :ma_display=>ma_display,
176
+ :ma_secured => @xmain.service.ma_secured,
177
+ :filename => "#{@runseq.code}.html.erb"
178
+ end
179
+ # @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next &gt;"
180
+ @message = defined?(MSG_NEXT) ? MSG_NEXT : "Next >>"
181
+ @message = "Finish" if @runseq.end
182
+ ma_log("Todo defined?(NSG_NEXT : Next >>)")
183
+ eval "@xvars[@runseq.code] = url_for(:controller=>'jinda', :action=>'document', :id=>@doc.id)"
184
+ else
185
+ flash[:notice]= "Error: Can not find the view file for this controller"
186
+ ma_log "Error: Can not find the view file for this controller"
187
+ redirect_to_root
188
+ end
189
+ # Check if ma_display available
190
+ # ma_display= get_option("display")
191
+ unless ma_display
192
+ end_action
193
+ end
194
+ # controller display from @ui
195
+ end
196
+
100
197
  def run_output
101
198
  init_vars(params[:id])
102
199
  service= @xmain.service
@@ -135,11 +232,11 @@ module JindaRunConcern
135
232
  redirect_to_root
136
233
  end
137
234
  # Check if ma_display available
138
- # ma_display= get_option("ma_display")
235
+ # ma_display= get_option("display")
139
236
  unless ma_display
140
237
  end_action
141
238
  end
142
- # display from @ui
239
+ # controller display from @ui
143
240
  end
144
241
 
145
242
  def run_mail
@@ -168,8 +265,11 @@ module JindaRunConcern
168
265
  end_action
169
266
  end
170
267
 
268
+ # Store params to @xvars[@runseq]
269
+ # Perform task from the form input eg: attach file
270
+ # replace end_action (for form)
271
+ # Store params attach file to @xvars to use in get_image
171
272
  def end_form
172
- # Check error using xmain_id to redirect_to_root and return
173
273
  if params[:xmain_id]
174
274
  init_vars(params[:xmain_id])
175
275
  else
@@ -183,13 +283,17 @@ module JindaRunConcern
183
283
  get_image(k, params[k])
184
284
  # check if params of array in form eg: edit_article
185
285
  elsif params[k].is_a?(ActionController::Parameters)
286
+ eval "@xvars[@runseq.code][k] = {} unless @xvars[@runseq.code][k]"
186
287
  params[k].each { |k1,v1|
187
288
  # eval "@xvars[@runseq.code][k1] = params.require(k1).permit(k1)"
188
- eval "@xvars[@runseq.code][k1] = v1"
289
+ eval "@xvars[@runseq.code][k][k1] = v1"
189
290
  next unless v1.respond_to?(:original_filename)
291
+ doc = {}
190
292
  get_image1(k, k1, params[k][k1])
191
293
  }
192
294
  else
295
+ # No file attached
296
+ #
193
297
  # https://stackoverflow.com/questions/34949505/rails-5-unable-to- retrieve-hash-values-from-parameter # bug in to_unsalfe_h rails 5.1.6 https://github.com/getsentry/raven-ruby/issues/799
194
298
  # Solution:
195
299
  # https://stackoverflow.com/questions/34949505/rails-5-unable-to-retrieve-hash-values-from-parameter
@@ -200,10 +304,21 @@ module JindaRunConcern
200
304
  eval "@xvars[@runseq.code][k] = v"
201
305
  end
202
306
  }
203
- end_action
307
+ end_action
308
+ rescue => e
309
+ @xmain.status='E'
310
+ @xvars['error']= e.to_s+e.backtrace.to_s
311
+ @xmain.xvars= $xvars
312
+ @xmain.save
313
+ @runseq.status= 'F' #finish
314
+ @runseq.stop= Time.now
315
+ @runseq.save
316
+ ma_log "Error:end_form "
317
+ refresh_to "/", :alert => "Sorry opeation error at #{@xmain.id} #{@xvars['error']}"
204
318
  end
205
319
 
206
320
  def end_action(next_runseq = nil)
321
+ # not for form
207
322
  # @runseq.status='F' unless @runseq_not_f
208
323
  @xmain.xvars= @xvars
209
324
  @xmain.status= 'R' # running
@@ -0,0 +1,55 @@
1
+ class DocsController < ApplicationController
2
+ before_action :load_doc, only: [:destroy]
3
+ before_action :load_doc_form, only: [:doc_update, :edit, :my]
4
+
5
+ def index
6
+ @documents = Jinda::Doc.desc(:created_at).page(params[:page]).per(10)
7
+ end
8
+
9
+ def edit
10
+ end
11
+
12
+ def my
13
+ @page_title = 'My Document'
14
+ end
15
+
16
+ def doc_update
17
+
18
+ if Jinda::Doc.where(:runseq_id => $xvars["doc_form"]["runseq_id"]).exists?
19
+ @doc = Jinda::Doc.where(:runseq_id => $xvars["doc_form"]["runseq_id"]).first
20
+ @doc.update(description: $xvars["doc_form"]["description"],
21
+ category: $xvars["doc_form"]["jinda_doc"]["category"],
22
+ keywords: $xvars["doc_form"]["keywords"],
23
+ user_id: $xvars["user_id"]
24
+ )
25
+ else
26
+ # create here
27
+ # Todo
28
+ end
29
+ end
30
+
31
+ def destroy
32
+ # duplicated from jinda_controller
33
+ # Expected to use in jinda_controller
34
+ current_ma_user = User.where(:auth_token => cookies[:auth_token]).first if cookies[:auth_token]
35
+
36
+ if Rails.env.test? #Temp solution until fix test of current_ma_user
37
+ current_ma_user = $xvars["current_ma_user"]
38
+ #current_ma_user = @doc.user
39
+ end
40
+
41
+ if current_ma_user.role.upcase.split(',').include?("A") || current_ma_user == @doc.user
42
+ @doc.destroy
43
+ end
44
+ redirect_to :action=>'my'
45
+ end
46
+
47
+ private
48
+
49
+ def load_doc_form
50
+ @docs = Jinda::Doc.all.desc(:created_at).page(params[:page]).per(10)
51
+ end
52
+ def load_doc
53
+ @doc = Jinda::Doc.find(params[:doc_id])
54
+ end
55
+ end
@@ -13,7 +13,7 @@ class JindaController < ApplicationController
13
13
  xmain = create_xmain(@service)
14
14
  result = create_runseq(xmain)
15
15
  unless result
16
- message = "cannot find action for xmain #{xmain.id}"
16
+ message = "Node missing action icon: cannot find action for xmain #{xmain.id}, the node required action(icon) in freemind eg: form, list, method"
17
17
  ma_log(message)
18
18
  flash[:notice]= message
19
19
  redirect_to "pending" and return
@@ -21,9 +21,12 @@ class JindaController < ApplicationController
21
21
  xmain.update_attribute(:xvars, @xvars)
22
22
  xmain.runseqs.last.update_attribute(:end,true)
23
23
  #Above line cause error update_attribute in heroku shown in logs and it was proposed to fixed in github:'kul1/g241502'
24
+ # Main action run with :id
24
25
  redirect_to :action=>'run', :id=>xmain.id
25
26
  else
26
27
  refresh_to "/", :alert => "Error: cannot process"
28
+ error_run_xmain = "Error_run_xmain"
29
+ ma_log(error_run_xmain)
27
30
  end
28
31
  end
29
32
 
@@ -32,6 +35,24 @@ class JindaController < ApplicationController
32
35
  # action from @r.action == do, form, if, output
33
36
  # Then will call def run_do, run_form, run_if, run_output
34
37
  ########################################################################]
38
+ #
39
+ # run
40
+ # init_vars
41
+ # To get all var from global and runseq, action
42
+ # (@runseq.action)
43
+ #
44
+ # run_do, run_form, run_if, run_output
45
+ # run_do => controller => action eg: update, create, document
46
+ # run_form =>
47
+ # run_form.haml => - next step => def end_form
48
+ # - next_step = end_form
49
+ # run_if =>
50
+ # run_output =>
51
+ #
52
+ # end_action
53
+ # => save local var to database :current_runseq
54
+ # :current_runseq => next_runseq
55
+ #
35
56
  def run
36
57
  init_vars(params[:id])
37
58
  if authorize?
@@ -41,5 +62,4 @@ class JindaController < ApplicationController
41
62
  redirect_to_root
42
63
  end
43
64
  end
44
-
45
65
  end
@@ -1,7 +1,7 @@
1
1
  <map version="1.0.1">
2
2
  <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
3
3
  <node CREATED="1273819432637" ID="ID_1098419600" MODIFIED="1334737006485" TEXT="Jinda">
4
- <node CREATED="1273819462973" ID="ID_282419531" MODIFIED="1583088810861" POSITION="right" TEXT="services">
4
+ <node CREATED="1273819462973" ID="ID_282419531" MODIFIED="1589756758387" POSITION="right" TEXT="services">
5
5
  <node CREATED="1275756501221" FOLDED="true" ID="ID_1720745721" MODIFIED="1583097151076" TEXT="users:User">
6
6
  <node CREATED="1278491598711" ID="ID_1662699954" MODIFIED="1494393920347" TEXT="role:m"/>
7
7
  <node CREATED="1279700865182" ID="ID_1266797279" MODIFIED="1357798847781" TEXT="link:info: /users"/>
@@ -25,7 +25,7 @@
25
25
  </node>
26
26
  </node>
27
27
  </node>
28
- <node CREATED="1275752678377" FOLDED="true" ID="ID_1348489452" MODIFIED="1583097147577" TEXT="admins:Admin">
28
+ <node CREATED="1275752678377" ID="ID_1348489452" MODIFIED="1588883079396" TEXT="admins:Admin">
29
29
  <node CREATED="1275752688167" ID="ID_229996461" MODIFIED="1275752690948" TEXT="role:a"/>
30
30
  <node CREATED="1282722836614" ID="ID_1213363124" MODIFIED="1330477902602" TEXT="edit_role:edit user role">
31
31
  <node CREATED="1282722862918" ID="ID_1190117882" MODIFIED="1330477922159" TEXT="select_user:select user">
@@ -44,15 +44,54 @@
44
44
  <node CREATED="1275790679363" ID="ID_829325467" MODIFIED="1511159696044" TEXT="link: logs: /jinda/logs"/>
45
45
  <node CREATED="1507573166973" ID="ID_351025910" MODIFIED="1511159700908" TEXT="link: docs: /jinda/doc"/>
46
46
  </node>
47
- <node CREATED="1273706796854" FOLDED="true" ID="ID_1003882979" MODIFIED="1583097155227" TEXT="devs: Developer">
47
+ <node CREATED="1273706796854" ID="ID_1003882979" MODIFIED="1588964401951" TEXT="devs: Developer">
48
48
  <node CREATED="1275373154914" ID="ID_340725299" MODIFIED="1275373158632" TEXT="role:d"/>
49
49
  <node CREATED="1275788317299" ID="ID_716276608" MODIFIED="1511159716471" TEXT="link: error_logs: /jinda/error_logs"/>
50
+ <node CREATED="1275788317299" ID="ID_1570419198" MODIFIED="1587858894833" TEXT="link: notice_logs: /jinda/notice_logs"/>
51
+ </node>
52
+ <node CREATED="1589756777499" ID="ID_853155456" MODIFIED="1589772589662" TEXT="docs: Document">
53
+ <node CREATED="1589757073388" ID="ID_1938238774" MODIFIED="1589772640862" TEXT="link: My Document: /docs/my">
54
+ <node CREATED="1589757125861" ID="ID_521286668" MODIFIED="1589757136547" TEXT="role:m"/>
55
+ </node>
56
+ <node CREATED="1589756879955" ID="ID_899042293" MODIFIED="1589910229085" TEXT="doc_new: New Document">
57
+ <node CREATED="1589756946117" ID="ID_1840278804" MODIFIED="1589910235469" TEXT="doc_form: Doc Form">
58
+ <icon BUILTIN="attach"/>
59
+ <node CREATED="1589757054618" ID="ID_642998203" MODIFIED="1589757059003" TEXT="role: m"/>
60
+ </node>
61
+ <node CREATED="1589757264764" ID="ID_1352102524" MODIFIED="1589772413612" TEXT="doc_update: Doc update">
62
+ <icon BUILTIN="bookmark"/>
63
+ </node>
64
+ </node>
65
+ <node CREATED="1493419562726" ID="ID_339628868" MODIFIED="1590424956484" TEXT="doc_edit: Edit Document">
66
+ <icon BUILTIN="button_cancel"/>
67
+ <node CREATED="1493419577933" ID="ID_801950372" MODIFIED="1590180699851" TEXT="doc_select: Select Document">
68
+ <icon BUILTIN="attach"/>
69
+ <node CREATED="1493479602815" ID="ID_761787946" MODIFIED="1493479606921" TEXT="role:m"/>
70
+ </node>
71
+ <node CREATED="1493419612720" ID="ID_1190499756" MODIFIED="1590180735204" TEXT="doc_edit: Edit Document">
72
+ <icon BUILTIN="attach"/>
73
+ <node CREATED="1493479557266" ID="ID_1216426484" MODIFIED="1493479561055" TEXT="role:m"/>
74
+ </node>
75
+ <node CREATED="1581400438157" ID="ID_447781815" MODIFIED="1590180242343" TEXT="doc_update: Doc_update">
76
+ <icon BUILTIN="bookmark"/>
77
+ </node>
78
+ </node>
79
+ <node CREATED="1495246388313" ID="ID_278169779" MODIFIED="1590180135106" TEXT="doc_xedit: Doc_hidden_menu">
80
+ <icon BUILTIN="button_cancel"/>
81
+ <node CREATED="1493419612720" ID="ID_541432768" MODIFIED="1590180160498" TEXT="doc_edit: Edit">
82
+ <icon BUILTIN="attach"/>
83
+ <node CREATED="1493479557266" ID="ID_1339913531" MODIFIED="1493479561055" TEXT="role:m"/>
84
+ </node>
85
+ <node CREATED="1581400438157" ID="ID_802199910" MODIFIED="1590180242343" TEXT="doc_update: Doc_update">
86
+ <icon BUILTIN="bookmark"/>
87
+ </node>
88
+ </node>
50
89
  </node>
51
90
  <node CREATED="1493393619430" ID="ID_554831343" MODIFIED="1584996526651" TEXT="notes: Notes">
52
- <node CREATED="1493489768542" ID="ID_737469676" MODIFIED="1581383331288" TEXT="link:My Notes: /notes/my">
91
+ <node CREATED="1493489768542" ID="ID_737469676" MODIFIED="1589772615102" TEXT="link:My Notes: /notes/my">
53
92
  <node CREATED="1493490295677" ID="ID_514416082" MODIFIED="1493490302239" TEXT="role:m"/>
54
93
  </node>
55
- <node CREATED="1493419257021" ID="ID_553734932" MODIFIED="1581180635669" TEXT="new: New Note">
94
+ <node CREATED="1493419257021" FOLDED="true" ID="ID_553734932" MODIFIED="1589772585873" TEXT="new: New Note">
56
95
  <node CREATED="1493419299004" ID="ID_723334321" MODIFIED="1581351169990" TEXT="new_note: New ">
57
96
  <icon BUILTIN="attach"/>
58
97
  <node CREATED="1493479075294" ID="ID_1009521360" MODIFIED="1493479079687" TEXT="role:m"/>
@@ -96,7 +135,7 @@
96
135
  <icon BUILTIN="bookmark"/>
97
136
  </node>
98
137
  </node>
99
- <node CREATED="1495246388313" ID="ID_807216843" MODIFIED="1585001129104" TEXT="xedit: Future use">
138
+ <node CREATED="1495246388313" FOLDED="true" ID="ID_807216843" MODIFIED="1590180066630" TEXT="xedit: Future use">
100
139
  <icon BUILTIN="button_cancel"/>
101
140
  <node CREATED="1493419612720" ID="ID_6864095" MODIFIED="1584999031935" TEXT="edit_note: Edit">
102
141
  <icon BUILTIN="attach"/>
@@ -107,12 +146,16 @@
107
146
  </node>
108
147
  </node>
109
148
  </node>
110
- <node CREATED="1493393619430" ID="ID_328863650" MODIFIED="1585001518753" TEXT="articles: Article">
149
+ <node CREATED="1493393619430" ID="ID_328863650" MODIFIED="1589327646872" TEXT="articles: Article">
111
150
  <node CREATED="1493419096527" ID="ID_1521905276" MODIFIED="1493478060121" TEXT="link: All Articles: /articles"/>
112
- <node CREATED="1493489768542" ID="ID_1376361427" MODIFIED="1493768994418" TEXT="link: My article: /articles/my">
151
+ <node CREATED="1493489768542" FOLDED="true" ID="ID_1376361427" MODIFIED="1589757167952" TEXT="link: My article: /articles/my">
113
152
  <node CREATED="1493490295677" ID="ID_628476988" MODIFIED="1493490302239" TEXT="role:m"/>
114
153
  </node>
115
- <node CREATED="1493419257021" ID="ID_1355420049" MODIFIED="1493489729876" TEXT="new_article: New Article">
154
+ <node CREATED="1493419257021" ID="ID_1355420049" MODIFIED="1588619429446" TEXT="new_article: New Article">
155
+ <node CREATED="1588958814863" ID="ID_576640224" MODIFIED="1589053904119" TEXT="display: DisplayFile">
156
+ <icon BUILTIN="idea"/>
157
+ <node CREATED="1588959451085" ID="ID_779920893" MODIFIED="1588959473698" TEXT="display: Option"/>
158
+ </node>
116
159
  <node CREATED="1493419299004" ID="ID_1468250197" MODIFIED="1493419428686" TEXT="form_article: New Article">
117
160
  <icon BUILTIN="attach"/>
118
161
  <node CREATED="1493479075294" ID="ID_1145618514" MODIFIED="1493479079687" TEXT="role:m"/>
@@ -121,7 +164,7 @@
121
164
  <icon BUILTIN="bookmark"/>
122
165
  </node>
123
166
  </node>
124
- <node CREATED="1493419562726" ID="ID_922854639" MODIFIED="1493490306480" TEXT="edit_article: Edit Article">
167
+ <node CREATED="1493419562726" ID="ID_922854639" MODIFIED="1590180584955" TEXT="edit_article: Edit Article">
125
168
  <node CREATED="1493419577933" ID="ID_938626803" MODIFIED="1538329139586" TEXT="select_article: Select Article">
126
169
  <icon BUILTIN="attach"/>
127
170
  <node CREATED="1493479602815" ID="ID_753056881" MODIFIED="1493479606921" TEXT="role:m"/>
@@ -144,6 +187,36 @@
144
187
  <icon BUILTIN="bookmark"/>
145
188
  </node>
146
189
  </node>
190
+ <node CREATED="1587909407412" ID="ID_1468305343" MODIFIED="1588910402612" TEXT="doc_list: Doc List">
191
+ <node CREATED="1588958814863" ID="ID_560142027" MODIFIED="1589049756609" TEXT="display: DisplayFile">
192
+ <icon BUILTIN="list"/>
193
+ <node CREATED="1588959451085" ID="ID_1584950345" MODIFIED="1588959473698" TEXT="display: Option"/>
194
+ <node CREATED="1589053886230" ID="ID_737872984" MODIFIED="1589053890706" TEXT="role: m"/>
195
+ </node>
196
+ </node>
197
+ <node CREATED="1587909407412" ID="ID_1146843472" MODIFIED="1588909113502" TEXT="doc_folder: Doc Folder">
198
+ <node CREATED="1588875666991" ID="ID_549324429" MODIFIED="1588907940839" TEXT="folder: Article Folder 1">
199
+ <arrowlink DESTINATION="ID_549324429" ENDARROW="Default" ENDINCLINATION="0;0;" ID="Arrow_ID_1094355522" STARTARROW="None" STARTINCLINATION="0;0;"/>
200
+ <linktarget COLOR="#b0b0b0" DESTINATION="ID_549324429" ENDARROW="Default" ENDINCLINATION="0;0;" ID="Arrow_ID_1094355522" SOURCE="ID_549324429" STARTARROW="None" STARTINCLINATION="0;0;"/>
201
+ <icon BUILTIN="folder"/>
202
+ </node>
203
+ <node CREATED="1588875666991" ID="ID_650279375" MODIFIED="1588907966960" TEXT="folder_article: Article Folder2"/>
204
+ </node>
205
+ <node CREATED="1495246388313" ID="ID_1073115355" MODIFIED="1589635771727" TEXT="test_article: Test Article">
206
+ <node CREATED="1589635773545" ID="ID_809041299" MODIFIED="1589655664057" TEXT="document1: display">
207
+ <icon BUILTIN="bookmark"/>
208
+ </node>
209
+ <node CREATED="1495246432533" ID="ID_1329009190" MODIFIED="1589635849441" TEXT="test article: Test Article">
210
+ <icon BUILTIN="attach"/>
211
+ <node CREATED="1495246517185" ID="ID_724933955" MODIFIED="1495246522964" TEXT="role:m"/>
212
+ </node>
213
+ <node CREATED="1495246466176" ID="ID_790539896" MODIFIED="1589755604652" TEXT="update_test: Update Test Article">
214
+ <icon BUILTIN="bookmark"/>
215
+ </node>
216
+ <node CREATED="1589635773545" ID="ID_1912048591" MODIFIED="1589740973954" TEXT="document2: display">
217
+ <icon BUILTIN="bookmark"/>
218
+ </node>
219
+ </node>
147
220
  </node>
148
221
  <node CREATED="1493664700564" FOLDED="true" ID="ID_704959130" MODIFIED="1583091848193" TEXT="comments: Comment">
149
222
  <node CREATED="1493665155709" ID="ID_1973520751" MODIFIED="1493665186791" TEXT="new_comment: New Comment">
@@ -194,10 +267,6 @@
194
267
  </node>
195
268
  </node>
196
269
  <node CREATED="1493419562726" ID="ID_963001770" MODIFIED="1581180788218" TEXT="edit: Edit">
197
- <node CREATED="1493419577933" ID="ID_1640736660" MODIFIED="1581350888992" TEXT="select_note: Select">
198
- <icon BUILTIN="attach"/>
199
- <node CREATED="1493479602815" ID="ID_1623444138" MODIFIED="1493479606921" TEXT="role:m"/>
200
- </node>
201
270
  <node CREATED="1493419612720" ID="ID_1362613316" MODIFIED="1581350996674" TEXT="edit_note: Edit">
202
271
  <icon BUILTIN="attach"/>
203
272
  <node CREATED="1493479557266" ID="ID_1838104057" MODIFIED="1493479561055" TEXT="role:m"/>