forked from AplaProject/apps
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasic.json
1173 lines (1173 loc) · 647 KB
/
basic.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"name": "Basic",
"conditions": "ContractConditions(\"@1DeveloperCondition\")",
"data": [
{
"Name": "apps_description",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(Class: container){\n Div(Class: pt-xl)\n Div(Class: row){\n Div(Class: col-md-4 text-center){\n Em(Class: icon-people fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1ecosystem_members)\n }\n Div(Class: text-bold h4) {\n LangRes(@1ecosystems_members_description)\n }\n }\n Div(Class: col-md-4 text-center){\n Em(Class: icon-pie-chart fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1roles)\n }\n Div(Class: text-bold h4) {\n LangRes(@1roles_description)\n }\n }\n Div(Class: col-md-4 text-center){\n Em(Class: icon-note fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1votings)\n }\n Div(Class: text-bold h4) {\n LangRes(@1votings_description)\n }\n }\n }\n Div(Class: pt-xl)\n Div(Class: row){\n Div(Class: col-md-4 text-center){\n Em(Class: icon-layers fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1catalog_ecosystems)\n }\n Div(Class: text-bold h4) {\n LangRes(@1ecosystems_description)\n }\n }\n Div(Class: col-md-4 text-center){\n Em(Class: icon-flag fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1notifications)\n }\n Div(Class: text-bold h4) {\n LangRes(@1notifications_description)\n }\n }\n Div(Class: col-md-4 text-center){\n Em(Class: icon-settings fa-4x text-primary)\n Div(Class: text-bold text-primary h3){\n LangRes(@1platform_parameters) \n }\n Div(Class: text-bold h4) {\n LangRes(@1parameters_description)\n }\n }\n }\n}\n",
"Type": "blocks"
},
{
"Name": "notifications_roles",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1notifications_list).(this_table, @1notifications)\nInclude(@1pager_header)\n\nIf(#role_id#>0){\n DBFind(\"@1roles\").Where({\"id\": \"#role_id#\"}).Vars(my)\n SetTitle($@1role_notifics$ (#my_role_name#))\n}.Else{\n SetTitle($@1role_notifics$)\n}\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nIf(And(#role_id# == #role_admin#, #ecosystem_id# == 1)){\n DBFind(\"@1ecosystems\").Count(ecos_count)\n If(#ecos_count#>1){\n AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: \"50\")\n }\n}\nAddToolButton(Title: $@1send$, Page: @1notifications_roles_send, Icon: icon-plus).Popup(Header: $@1send$, Width: \"50\")\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"recipient->role_id\": \"#role_id#\", \"$and\": [{\"notification->type\": 2}, {\"$or\": [{\"sender->member_name\": {\"$ilike\": \"#search#\"}}, {\"sender->role_name\": {\"$ilike\": \"#search#\"}}]}]})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"notification->type\": 2, \"recipient->role_id\": \"#role_id#\"})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1sender)).(page_par, #type#)\n Include(@1search)\n}\n\nDBFind(#this_table#, src).Where(#where#).Order({\"closed\": 1, \"id\": \"-1\"}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,recipient->role_id,recipient->role_name,recipient->image_id,sender->type,sender->account,sender->member_name,sender->role_id,sender->role_name,notification->icon,notification->popup,page_name,page_params,date_created,date_closed,date_start_processing,processing_info->member_name,closed\").Custom(_id){\n If(#closed# == 0){\n SetVar(style_text,\"text-normal\").(style_link,\"text-primary\")\n }.Else{\n SetVar(style_text,\"text-muted\").(style_link,\"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n}.Custom(_recipient){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#recipient.role_id#\"){\n If(#recipient.image_id#>0){\n Image(Src: Binary().ById(#recipient.image_id#) \"#img_data#\", Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #recipient.role_name#\n }.Else{\n Div(){\n Span(Em(Class: fa icon-settings fa-2x)).Style(margin-right:10px;)\n Span(#recipient.role_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n}.Custom(custom_arrow){\n Em(Class: fa fa-long-arrow-right fa-1x #style_text#)\n}.Custom(_sender){\n If(#sender.type#==1){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#sender.account#\"){#sender.member_name#}\n }\n If(#sender.type#==2){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#sender.role_id#\"){#sender.role_name#}\n }\n}.Custom(_icon){\n Span(Class: fa #notification.icon# fa-2x #style_text#)\n}.Custom(_page){\n If(#notification.popup#==1){\n Button(Class: btn-link h5 text-bold m0, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Span(Class: #style_link#, Body: #page_name#)\n }.Popup(Header: $@1notifications_view$, Width: \"40\")\n }.Else{\n Button(Class: btn-link h5 text-bold m0, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Span(Class: #style_link#, Body: #page_name#)\n }\n }\n}.Custom(_date){\n Div(#style_text# h6 m0){DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\")}\n If(#date_closed# != 0){\n Div(#style_text# h6 m0){DateTime(DateTime: #date_closed#, Format: \"DD.MM.YYYY HH:MI\")}\n }\n}.Custom(_processing){\n Div(Class: #style_text# h6 m0){\n If(#date_start_processing# == 0){\n $@1not_started$\n }.Else{\n Span(LangRes(@1started_by) #processing_info.member_name#)\n Div(){DateTime(DateTime: #date_start_processing#, Format: \"DD.MM.YYYY HH:MI\")}\n }\n }\n}.Custom(_status){\n If(#closed# == 0){\n Span(Class: #style_text#){\n If(#date_start_processing# == 0){\n LangRes(@1active)\n }.Else{\n LangRes(@1processing)\n }\n }\n }.Else{\n Span(Class: #style_text#, Body: LangRes(@1closed))\n }\n}.Custom(_actions){\n Div(text-right){\n If(#closed# == 0){\n If(#date_start_processing# == NULL){\n Button(Class: btn btn-default fa fa-play, Contract: @1NotificationsProcess, Params: \"NotificId=#id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_start_processing_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.Else{\n Button(Class: btn btn-default fa fa-trash, Contract: @1NotificationsClose, Params: \"NotificId=#id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_close_notification$\", ConfirmButton:$@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1icon$=_icon,$@1page$=_page,$@1sender$=_sender,=custom_arrow,$@1recipient$=_recipient,$@1processing$=_processing,$@1sent$ / $@1closed$=_date,$@1status$=_status,=_actions\")\n }.ElseIf(#role_id#>0){\n Div(Class: text-center h4 text-muted, Body: \"$@1role_notifics$ $@1not_founded$\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1role_not_selected$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Type": "blocks"
},
{
"Name": "notifications_single",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1notifications_list).(this_table, @1notifications)\nInclude(@1pager_header)\n\nSetTitle(\"$@1personal_notifics$\")\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nIf(And(#role_id# == #role_admin#, #ecosystem_id# == 1)){\n DBFind(\"@1ecosystems\").Count(ecos_count)\n If(#ecos_count#>1){\n AddToolButton(Title: $@1broadcast$, Page: @1notifications_broadcast, Icon: icon-plus).Popup(Header: $@1notifications_broadcast$, Width: \"50\")\n }\n}\nAddToolButton(Title: $@1send$, Page: @1notifications_single_send, Icon: icon-plus).Popup(Header: $@1send$, Width: \"50\")\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"recipient->account\": \"#account_id#\", \"$and\": [{\"notification->type\": 1}, {\"$or\": [{\"sender->member_name\": {\"$ilike\": \"#search#\"}}, {\"sender->role_name\": {\"$ilike\": \"#search#\"}}]}]})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"notification->type\": 1, \"recipient->account\": \"#account_id#\"})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1sender)).(page_par, #type#)\n Include(@1search)\n}\n\nDBFind(#this_table#, src).Where(#where#).Order({\"closed\": 1, \"id\": \"-1\"}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,recipient->account,recipient->member_name,recipient->image_id,sender->type,sender->account,sender->member_name,sender->role_id,sender->role_name,notification->icon,notification->popup,page_name,page_params,date_created,date_closed,closed\").Custom(custom_id){\n If(#closed# == 0){\n SetVar(Name: style_text, Value: \"text-normal\")\n SetVar(Name: style_link, Value: \"text-primary\")\n }.Else{\n SetVar(Name: style_text, Value: \"text-muted\")\n SetVar(Name: style_link, Value: \"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n}.Custom(custom_recipient){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#recipient.account#\"){\n If(#recipient.image_id#>0){\n Image(Src: Binary().ById(#recipient.image_id#), Class: img-circle).Style(width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#recipient.member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right:10px;)\n Span(#recipient.member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n}.Custom(custom_arrow){\n Em(Class: fa fa-long-arrow-right fa-1x #style_text#)\n}.Custom(custom_sender){\n If(#sender.type#==1){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#sender.account#\"){\n Span(Body: #sender.member_name#)\n }\n }\n If(#sender.type#==2){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#sender.role_id#\"){\n Span(Body: #sender.role_name#)\n }\n }\n}.Custom(custom_icon){\n Em(Class: fa #notification.icon# fa-2x #style_text#)\n}.Custom(custom_page){\n If(#notification.popup#==1){\n Button(Class: btn-link h5 text-bold m0, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Span(Class: #style_link#, Body: #page_name#)\n }.Popup(Header: $@1notifications_view$, Width: \"40\")\n }.Else{\n Button(Class: btn-link h5 text-bold m0, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Span(Class: #style_link#, Body: #page_name#)\n }\n }\n}.Custom(custom_date){\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\"))\n If(#date_closed# != 0){\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_closed#, Format: \"DD.MM.YYYY HH:MI\"))\n }\n}.Custom(custom_status){\n If(#closed# == 0){\n Span(Class: #style_text#, Body: LangRes(@1active))\n }.Else{\n Span(Class: #style_text#, Body: LangRes(@1closed))\n }\n}.Custom(actions){\n Div(pull-right){\n If(#closed# == 0){\n Button(Body: Em(Class: fa fa-trash), Class: btn btn-default, Contract: @1NotificationsClose, Params: \"NotificId=#id#\", Page: @1notifications_list).Alert(Text: \"$@1want_close_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1icon$=custom_icon,$@1page$=custom_page,$@1sender$=custom_sender,=custom_arrow,$@1recipient$=custom_recipient,$@1sent$ / $@1closed$=custom_date,$@1status$=custom_status,=actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1personal_notifics$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Type": "blocks"
},
{
"Name": "profile",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#v_account# == \"\"){\n SetVar(v_account, #account_id#)\n}\nDBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#v_account#\"}).Columns(\"account,image_id,member_name,member_info->information\").Vars(member)\n\nIf(#member_account#){\n SetVar(member_name, #member_member_name#).(member_info, #member_member_info_information#)\n}\n\nDiv(content-wrapper){\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-primary){\n Div(panel-body){\n Div(text-center text-bold h4 m0){\n LangRes(@1user_info)\n }\n Div(row mt-lg){\n Div(col-md-12 text-center){\n If(#member_account#){\n If(#member_account# == #account_id#){\n Button(Class: btn btn-link, Page: @1profile_edit){\n If(#member_image_id# > 0){\n Image(Src: Binary().ById(#member_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x text-primary)\n }\n Div(m0 h4 text-bold){\n #member_name#\n If(#role_id# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_id#\"}).Columns(\"role_name\").Vars(role)\n Span(Body: \" (#role_role_name#)\")\n }\n }\n }.Popup(Header: $@1edit_profile$, Width: 50)\n }.Else{\n If(#member_image_id# > 0){\n Image(Src: Binary().ById(#member_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#member_name#}\n }\n Div(Class: h5 text-muted m0, Body: #member_info#)\n }.Else{\n If(#v_account# == #account_id#){\n Button(Class: btn btn-link, Page: @1profile_edit){\n Div(Class: h4 m0, Body: LangRes(@1edit_profile))\n }.Popup(Header: $@1edit_profile$, Width: 50)\n }\n }\n }\n }\n Div(row mt-lg){\n Div(col-md-12 text-center){\n Div(text-bold m0 h5, Body: LangRes(@1wallet_address))\n Span(Class: h5, Body: #v_account#)\n }\n }\n If(#v_account# == #account_id#){\n Div(row){\n Div(col-md-12 mt text-center){\n DBFind(\"@1keys\").Where({\"ecosystem\": 1, \"account\": \"#v_account#\", \"deleted\": 0}).Vars(apl)\n If(#ecosystem_id# > 1){\n DBFind(\"@1keys\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#v_account#\", \"deleted\": 0}).Vars(tokens)\n DBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\n }\n Div(text-bold m0 h5, Body: LangRes(@1balance))\n Div(Class: m0 h5, Body: Money(#apl_amount#) APLA)\n If(And(#ecosystem_id# > 1, #custom_token_title# != \"\")){\n Div(Class: m0 h5, Body: Money(#tokens_amount#) #custom_token_title#)\n }\n If(Or(#ecosystem_id# == 1, #custom_token_title# != \"\")){\n Button(Class: btn-xs btn-link, Page: @1profile_transactions, Body: LangRes(@1transactions_history))\n Button(Class: btn-xs btn-link, Page: @1tokens_send, PageParams: \"back_page=@1profile_view\", Body: LangRes(@1tokens_send)).Popup(Header: $@1tokens_send$, Width: \"50\")\n }\n }\n }\n Div(row){\n Div(col-md-12 mt text-center){\n Div(text-bold h5 m0, Body: LangRes(@1deposit))\n Div(Class: h5 m0, Body: Money(#apl_deposit#) APLA)\n }\n }\n }\n Div(list-group-item text-center mt-lg){\n Div(text-bold m0 h5, Body: LangRes(@1roles))\n DBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"member->account\": \"#v_account#\", \"deleted\": 0}).Columns(\"id\").Vars(check)\n If(#check_id# > 0){\n DBFind(\"@1roles_participants\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"member->account\": \"#v_account#\", \"deleted\": 0}).Columns(\"role->id,role->name\").Order(\"id\")\n ForList(src_roles){\n Span(){\n LinkPage(Class: h6 m0 text-primary, Page: @1roles_view, PageParams: \"v_role_id=#role.id#\", Body: \"#role.name#\")\n }.Style(margin-right: 5px; margin-left: 5px;)\n }\n }.Else{\n Span(LangRes(@1role_none))\n }\n If(#v_account# == #account_id#){\n SetVar(founder_account, Address(EcosysParam(\"founder_account\")))\n If(#founder_account# != #account_id#){\n Div(row){\n Div(col-md-12 text-center){\n Button(Class: btn-xs btn-link, Page: @1roles_request, Body: LangRes(@1request)).Popup(Header: $@1request_to_role$, Width: \"50\")\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"Type": "blocks"
},
{
"Name": "voting_charts",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(row){\n If(#instance_voting_count_type_voters# == 1){\n Div(col-md-2)\n Div(col-md-2){\n Div(Class: text-center t4, Body: $@1voted$)\n SetVar(p1, Calculate(Exp:#instance_progress_number_voters#*100/#instance_progress_number_participants#, Type:int, Prec:0))\n Div(Class: c100 center p#p1# orange){\n Span(Body:#instance_progress_number_voters# / #instance_progress_number_participants#)\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n Div(col-md-4){\n If(Or(#type_decision#==3,#type_decision#==4)){\n Div(Class: text-center t4, Body: $@1result$)\n If(#subject_results_percent_accepted# == \"\"){\n SetVar(subject_results_percent_accepted,0)\n }\n SetVar(p1, Calculate(Exp:\"#subject_results_percent_accepted#\", Type:float, Prec:0))\n SetVar(p2, Calculate(Exp:\"#subject_results_percent_accepted#\", Type:float, Prec:2))\n Div(Class: c100 center p#p1# green){\n Span(Body: #p2#%)\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n }\n Div(col-md-2){\n Div(Class: text-center t4, Body: $@1progress$)\n Div(Class: c100 center p#instance_progress_percent_success# orange){\n Span(Body: #instance_progress_percent_success#%)\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n Div(col-md-2)\n }.Else{\n Div(col-md-2)\n Div(col-md-2){\n Div(Class: text-center t4, Body: $@1voted$)\n Div(Class: c100 center p#instance_progress_percent_voters# orange){\n Span(Body:#instance_progress_percent_voters#% (#instance_progress_number_voters#))\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n Div(col-md-4){\n If(Or(#type_decision#==3,#type_decision#==4)){\n Div(Class: text-center t4, Body: $@1result$)\n If(#subject_results_percent_accepted# == \"\"){\n SetVar(subject_results_percent_accepted,0)\n }\n SetVar(p1, Calculate(Exp:\"#subject_results_percent_accepted#\", Type:float, Prec:0))\n SetVar(p2, Calculate(Exp:\"#subject_results_percent_accepted#\", Type:float, Prec:2))\n Div(Class: c100 center p#p1# green){\n Span(Body: #p2#%)\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n }\n Div(col-md-2){\n Div(Class: text-center t4, Body: $@1progress$)\n Div(Class: c100 center p#instance_progress_percent_success# orange){\n Span(Body: #instance_progress_percent_success#%)\n Div(Class: slice){\n Div(Class: bar)\n Div(Class: fill)\n }\n }\n }\n Div(col-md-2)\n }\n}.Style(\n .t3 {font-size:24px;}\n .t4 {font-size:18px;}\n .t5 {font-size:14px;}\n .t6 {font-size:12px;}\n .break {word-break: break-all;}\n .rect-auto,\n .c100.p51 .slice,\n .c100.p52 .slice,\n .c100.p53 .slice,\n .c100.p54 .slice,\n .c100.p55 .slice,\n .c100.p56 .slice,\n .c100.p57 .slice,\n .c100.p58 .slice,\n .c100.p59 .slice,\n .c100.p60 .slice,\n .c100.p61 .slice,\n .c100.p62 .slice,\n .c100.p63 .slice,\n .c100.p64 .slice,\n .c100.p65 .slice,\n .c100.p66 .slice,\n .c100.p67 .slice,\n .c100.p68 .slice,\n .c100.p69 .slice,\n .c100.p70 .slice,\n .c100.p71 .slice,\n .c100.p72 .slice,\n .c100.p73 .slice,\n .c100.p74 .slice,\n .c100.p75 .slice,\n .c100.p76 .slice,\n .c100.p77 .slice,\n .c100.p78 .slice,\n .c100.p79 .slice,\n .c100.p80 .slice,\n .c100.p81 .slice,\n .c100.p82 .slice,\n .c100.p83 .slice,\n .c100.p84 .slice,\n .c100.p85 .slice,\n .c100.p86 .slice,\n .c100.p87 .slice,\n .c100.p88 .slice,\n .c100.p89 .slice,\n .c100.p90 .slice,\n .c100.p91 .slice,\n .c100.p92 .slice,\n .c100.p93 .slice,\n .c100.p94 .slice,\n .c100.p95 .slice,\n .c100.p96 .slice,\n .c100.p97 .slice,\n .c100.p98 .slice,\n .c100.p99 .slice,\n .c100.p100 .slice {\n clip: rect(auto, auto, auto, auto);\n }\n .pie,\n .c100 .bar,\n .c100.p51 .fill,\n .c100.p52 .fill,\n .c100.p53 .fill,\n .c100.p54 .fill,\n .c100.p55 .fill,\n .c100.p56 .fill,\n .c100.p57 .fill,\n .c100.p58 .fill,\n .c100.p59 .fill,\n .c100.p60 .fill,\n .c100.p61 .fill,\n .c100.p62 .fill,\n .c100.p63 .fill,\n .c100.p64 .fill,\n .c100.p65 .fill,\n .c100.p66 .fill,\n .c100.p67 .fill,\n .c100.p68 .fill,\n .c100.p69 .fill,\n .c100.p70 .fill,\n .c100.p71 .fill,\n .c100.p72 .fill,\n .c100.p73 .fill,\n .c100.p74 .fill,\n .c100.p75 .fill,\n .c100.p76 .fill,\n .c100.p77 .fill,\n .c100.p78 .fill,\n .c100.p79 .fill,\n .c100.p80 .fill,\n .c100.p81 .fill,\n .c100.p82 .fill,\n .c100.p83 .fill,\n .c100.p84 .fill,\n .c100.p85 .fill,\n .c100.p86 .fill,\n .c100.p87 .fill,\n .c100.p88 .fill,\n .c100.p89 .fill,\n .c100.p90 .fill,\n .c100.p91 .fill,\n .c100.p92 .fill,\n .c100.p93 .fill,\n .c100.p94 .fill,\n .c100.p95 .fill,\n .c100.p96 .fill,\n .c100.p97 .fill,\n .c100.p98 .fill,\n .c100.p99 .fill,\n .c100.p100 .fill {\n position: absolute;\n border: 0.08em solid #307bbb;\n width: 0.84em;\n height: 0.84em;\n clip: rect(0em, 0.5em, 1em, 0em);\n border-radius: 50%;\n -webkit-transform: rotate(0deg);\n -moz-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n -o-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n .pie-fill,\n .c100.p51 .bar:after,\n .c100.p51 .fill,\n .c100.p52 .bar:after,\n .c100.p52 .fill,\n .c100.p53 .bar:after,\n .c100.p53 .fill,\n .c100.p54 .bar:after,\n .c100.p54 .fill,\n .c100.p55 .bar:after,\n .c100.p55 .fill,\n .c100.p56 .bar:after,\n .c100.p56 .fill,\n .c100.p57 .bar:after,\n .c100.p57 .fill,\n .c100.p58 .bar:after,\n .c100.p58 .fill,\n .c100.p59 .bar:after,\n .c100.p59 .fill,\n .c100.p60 .bar:after,\n .c100.p60 .fill,\n .c100.p61 .bar:after,\n .c100.p61 .fill,\n .c100.p62 .bar:after,\n .c100.p62 .fill,\n .c100.p63 .bar:after,\n .c100.p63 .fill,\n .c100.p64 .bar:after,\n .c100.p64 .fill,\n .c100.p65 .bar:after,\n .c100.p65 .fill,\n .c100.p66 .bar:after,\n .c100.p66 .fill,\n .c100.p67 .bar:after,\n .c100.p67 .fill,\n .c100.p68 .bar:after,\n .c100.p68 .fill,\n .c100.p69 .bar:after,\n .c100.p69 .fill,\n .c100.p70 .bar:after,\n .c100.p70 .fill,\n .c100.p71 .bar:after,\n .c100.p71 .fill,\n .c100.p72 .bar:after,\n .c100.p72 .fill,\n .c100.p73 .bar:after,\n .c100.p73 .fill,\n .c100.p74 .bar:after,\n .c100.p74 .fill,\n .c100.p75 .bar:after,\n .c100.p75 .fill,\n .c100.p76 .bar:after,\n .c100.p76 .fill,\n .c100.p77 .bar:after,\n .c100.p77 .fill,\n .c100.p78 .bar:after,\n .c100.p78 .fill,\n .c100.p79 .bar:after,\n .c100.p79 .fill,\n .c100.p80 .bar:after,\n .c100.p80 .fill,\n .c100.p81 .bar:after,\n .c100.p81 .fill,\n .c100.p82 .bar:after,\n .c100.p82 .fill,\n .c100.p83 .bar:after,\n .c100.p83 .fill,\n .c100.p84 .bar:after,\n .c100.p84 .fill,\n .c100.p85 .bar:after,\n .c100.p85 .fill,\n .c100.p86 .bar:after,\n .c100.p86 .fill,\n .c100.p87 .bar:after,\n .c100.p87 .fill,\n .c100.p88 .bar:after,\n .c100.p88 .fill,\n .c100.p89 .bar:after,\n .c100.p89 .fill,\n .c100.p90 .bar:after,\n .c100.p90 .fill,\n .c100.p91 .bar:after,\n .c100.p91 .fill,\n .c100.p92 .bar:after,\n .c100.p92 .fill,\n .c100.p93 .bar:after,\n .c100.p93 .fill,\n .c100.p94 .bar:after,\n .c100.p94 .fill,\n .c100.p95 .bar:after,\n .c100.p95 .fill,\n .c100.p96 .bar:after,\n .c100.p96 .fill,\n .c100.p97 .bar:after,\n .c100.p97 .fill,\n .c100.p98 .bar:after,\n .c100.p98 .fill,\n .c100.p99 .bar:after,\n .c100.p99 .fill,\n .c100.p100 .bar:after,\n .c100.p100 .fill {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .c100 {\n position: relative;\n font-size: 100px;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n float: left;\n margin: 0 0.1em 0.1em 0;\n background-color: #cccccc;\n }\n .c100 *,\n .c100 *:before,\n .c100 *:after {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n }\n .c100.center {\n float: none;\n margin: 0 auto;\n }\n .c100.big {\n font-size: 240px;\n }\n .c100.small {\n font-size: 80px;\n }\n .c100 > span {\n position: absolute;\n width: 100%;\n z-index: 1;\n left: 0;\n top: 0;\n width: 5em;\n line-height: 5em;\n font-size: 0.2em;\n color: #cccccc;\n display: block;\n text-align: center;\n white-space: nowrap;\n -webkit-transition-property: all;\n -moz-transition-property: all;\n -o-transition-property: all;\n transition-property: all;\n -webkit-transition-duration: 0.2s;\n -moz-transition-duration: 0.2s;\n -o-transition-duration: 0.2s;\n transition-duration: 0.2s;\n -webkit-transition-timing-function: ease-out;\n -moz-transition-timing-function: ease-out;\n -o-transition-timing-function: ease-out;\n transition-timing-function: ease-out;\n }\n .c100:after {\n position: absolute;\n top: 0.08em;\n left: 0.08em;\n display: block;\n content: \" \";\n border-radius: 50%;\n background-color: #f5f5f5;\n width: 0.84em;\n height: 0.84em;\n -webkit-transition-property: all;\n -moz-transition-property: all;\n -o-transition-property: all;\n transition-property: all;\n -webkit-transition-duration: 0.2s;\n -moz-transition-duration: 0.2s;\n -o-transition-duration: 0.2s;\n transition-duration: 0.2s;\n -webkit-transition-timing-function: ease-in;\n -moz-transition-timing-function: ease-in;\n -o-transition-timing-function: ease-in;\n transition-timing-function: ease-in;\n }\n .c100 .slice {\n position: absolute;\n width: 1em;\n height: 1em;\n clip: rect(0em, 1em, 1em, 0.5em);\n }\n .c100.p1 .bar {\n -webkit-transform: rotate(3.6deg);\n -moz-transform: rotate(3.6deg);\n -ms-transform: rotate(3.6deg);\n -o-transform: rotate(3.6deg);\n transform: rotate(3.6deg);\n }\n .c100.p2 .bar {\n -webkit-transform: rotate(7.2deg);\n -moz-transform: rotate(7.2deg);\n -ms-transform: rotate(7.2deg);\n -o-transform: rotate(7.2deg);\n transform: rotate(7.2deg);\n }\n .c100.p3 .bar {\n -webkit-transform: rotate(10.8deg);\n -moz-transform: rotate(10.8deg);\n -ms-transform: rotate(10.8deg);\n -o-transform: rotate(10.8deg);\n transform: rotate(10.8deg);\n }\n .c100.p4 .bar {\n -webkit-transform: rotate(14.4deg);\n -moz-transform: rotate(14.4deg);\n -ms-transform: rotate(14.4deg);\n -o-transform: rotate(14.4deg);\n transform: rotate(14.4deg);\n }\n .c100.p5 .bar {\n -webkit-transform: rotate(18deg);\n -moz-transform: rotate(18deg);\n -ms-transform: rotate(18deg);\n -o-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n .c100.p6 .bar {\n -webkit-transform: rotate(21.6deg);\n -moz-transform: rotate(21.6deg);\n -ms-transform: rotate(21.6deg);\n -o-transform: rotate(21.6deg);\n transform: rotate(21.6deg);\n }\n .c100.p7 .bar {\n -webkit-transform: rotate(25.2deg);\n -moz-transform: rotate(25.2deg);\n -ms-transform: rotate(25.2deg);\n -o-transform: rotate(25.2deg);\n transform: rotate(25.2deg);\n }\n .c100.p8 .bar {\n -webkit-transform: rotate(28.8deg);\n -moz-transform: rotate(28.8deg);\n -ms-transform: rotate(28.8deg);\n -o-transform: rotate(28.8deg);\n transform: rotate(28.8deg);\n }\n .c100.p9 .bar {\n -webkit-transform: rotate(32.4deg);\n -moz-transform: rotate(32.4deg);\n -ms-transform: rotate(32.4deg);\n -o-transform: rotate(32.4deg);\n transform: rotate(32.4deg);\n }\n .c100.p10 .bar {\n -webkit-transform: rotate(36deg);\n -moz-transform: rotate(36deg);\n -ms-transform: rotate(36deg);\n -o-transform: rotate(36deg);\n transform: rotate(36deg);\n }\n .c100.p11 .bar {\n -webkit-transform: rotate(39.6deg);\n -moz-transform: rotate(39.6deg);\n -ms-transform: rotate(39.6deg);\n -o-transform: rotate(39.6deg);\n transform: rotate(39.6deg);\n }\n .c100.p12 .bar {\n -webkit-transform: rotate(43.2deg);\n -moz-transform: rotate(43.2deg);\n -ms-transform: rotate(43.2deg);\n -o-transform: rotate(43.2deg);\n transform: rotate(43.2deg);\n }\n .c100.p13 .bar {\n -webkit-transform: rotate(46.800000000000004deg);\n -moz-transform: rotate(46.800000000000004deg);\n -ms-transform: rotate(46.800000000000004deg);\n -o-transform: rotate(46.800000000000004deg);\n transform: rotate(46.800000000000004deg);\n }\n .c100.p14 .bar {\n -webkit-transform: rotate(50.4deg);\n -moz-transform: rotate(50.4deg);\n -ms-transform: rotate(50.4deg);\n -o-transform: rotate(50.4deg);\n transform: rotate(50.4deg);\n }\n .c100.p15 .bar {\n -webkit-transform: rotate(54deg);\n -moz-transform: rotate(54deg);\n -ms-transform: rotate(54deg);\n -o-transform: rotate(54deg);\n transform: rotate(54deg);\n }\n .c100.p16 .bar {\n -webkit-transform: rotate(57.6deg);\n -moz-transform: rotate(57.6deg);\n -ms-transform: rotate(57.6deg);\n -o-transform: rotate(57.6deg);\n transform: rotate(57.6deg);\n }\n .c100.p17 .bar {\n -webkit-transform: rotate(61.2deg);\n -moz-transform: rotate(61.2deg);\n -ms-transform: rotate(61.2deg);\n -o-transform: rotate(61.2deg);\n transform: rotate(61.2deg);\n }\n .c100.p18 .bar {\n -webkit-transform: rotate(64.8deg);\n -moz-transform: rotate(64.8deg);\n -ms-transform: rotate(64.8deg);\n -o-transform: rotate(64.8deg);\n transform: rotate(64.8deg);\n }\n .c100.p19 .bar {\n -webkit-transform: rotate(68.4deg);\n -moz-transform: rotate(68.4deg);\n -ms-transform: rotate(68.4deg);\n -o-transform: rotate(68.4deg);\n transform: rotate(68.4deg);\n }\n .c100.p20 .bar {\n -webkit-transform: rotate(72deg);\n -moz-transform: rotate(72deg);\n -ms-transform: rotate(72deg);\n -o-transform: rotate(72deg);\n transform: rotate(72deg);\n }\n .c100.p21 .bar {\n -webkit-transform: rotate(75.60000000000001deg);\n -moz-transform: rotate(75.60000000000001deg);\n -ms-transform: rotate(75.60000000000001deg);\n -o-transform: rotate(75.60000000000001deg);\n transform: rotate(75.60000000000001deg);\n }\n .c100.p22 .bar {\n -webkit-transform: rotate(79.2deg);\n -moz-transform: rotate(79.2deg);\n -ms-transform: rotate(79.2deg);\n -o-transform: rotate(79.2deg);\n transform: rotate(79.2deg);\n }\n .c100.p23 .bar {\n -webkit-transform: rotate(82.8deg);\n -moz-transform: rotate(82.8deg);\n -ms-transform: rotate(82.8deg);\n -o-transform: rotate(82.8deg);\n transform: rotate(82.8deg);\n }\n .c100.p24 .bar {\n -webkit-transform: rotate(86.4deg);\n -moz-transform: rotate(86.4deg);\n -ms-transform: rotate(86.4deg);\n -o-transform: rotate(86.4deg);\n transform: rotate(86.4deg);\n }\n .c100.p25 .bar {\n -webkit-transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n transform: rotate(90deg);\n }\n .c100.p26 .bar {\n -webkit-transform: rotate(93.60000000000001deg);\n -moz-transform: rotate(93.60000000000001deg);\n -ms-transform: rotate(93.60000000000001deg);\n -o-transform: rotate(93.60000000000001deg);\n transform: rotate(93.60000000000001deg);\n }\n .c100.p27 .bar {\n -webkit-transform: rotate(97.2deg);\n -moz-transform: rotate(97.2deg);\n -ms-transform: rotate(97.2deg);\n -o-transform: rotate(97.2deg);\n transform: rotate(97.2deg);\n }\n .c100.p28 .bar {\n -webkit-transform: rotate(100.8deg);\n -moz-transform: rotate(100.8deg);\n -ms-transform: rotate(100.8deg);\n -o-transform: rotate(100.8deg);\n transform: rotate(100.8deg);\n }\n .c100.p29 .bar {\n -webkit-transform: rotate(104.4deg);\n -moz-transform: rotate(104.4deg);\n -ms-transform: rotate(104.4deg);\n -o-transform: rotate(104.4deg);\n transform: rotate(104.4deg);\n }\n .c100.p30 .bar {\n -webkit-transform: rotate(108deg);\n -moz-transform: rotate(108deg);\n -ms-transform: rotate(108deg);\n -o-transform: rotate(108deg);\n transform: rotate(108deg);\n }\n .c100.p31 .bar {\n -webkit-transform: rotate(111.60000000000001deg);\n -moz-transform: rotate(111.60000000000001deg);\n -ms-transform: rotate(111.60000000000001deg);\n -o-transform: rotate(111.60000000000001deg);\n transform: rotate(111.60000000000001deg);\n }\n .c100.p32 .bar {\n -webkit-transform: rotate(115.2deg);\n -moz-transform: rotate(115.2deg);\n -ms-transform: rotate(115.2deg);\n -o-transform: rotate(115.2deg);\n transform: rotate(115.2deg);\n }\n .c100.p33 .bar {\n -webkit-transform: rotate(118.8deg);\n -moz-transform: rotate(118.8deg);\n -ms-transform: rotate(118.8deg);\n -o-transform: rotate(118.8deg);\n transform: rotate(118.8deg);\n }\n .c100.p34 .bar {\n -webkit-transform: rotate(122.4deg);\n -moz-transform: rotate(122.4deg);\n -ms-transform: rotate(122.4deg);\n -o-transform: rotate(122.4deg);\n transform: rotate(122.4deg);\n }\n .c100.p35 .bar {\n -webkit-transform: rotate(126deg);\n -moz-transform: rotate(126deg);\n -ms-transform: rotate(126deg);\n -o-transform: rotate(126deg);\n transform: rotate(126deg);\n }\n .c100.p36 .bar {\n -webkit-transform: rotate(129.6deg);\n -moz-transform: rotate(129.6deg);\n -ms-transform: rotate(129.6deg);\n -o-transform: rotate(129.6deg);\n transform: rotate(129.6deg);\n }\n .c100.p37 .bar {\n -webkit-transform: rotate(133.20000000000002deg);\n -moz-transform: rotate(133.20000000000002deg);\n -ms-transform: rotate(133.20000000000002deg);\n -o-transform: rotate(133.20000000000002deg);\n transform: rotate(133.20000000000002deg);\n }\n .c100.p38 .bar {\n -webkit-transform: rotate(136.8deg);\n -moz-transform: rotate(136.8deg);\n -ms-transform: rotate(136.8deg);\n -o-transform: rotate(136.8deg);\n transform: rotate(136.8deg);\n }\n .c100.p39 .bar {\n -webkit-transform: rotate(140.4deg);\n -moz-transform: rotate(140.4deg);\n -ms-transform: rotate(140.4deg);\n -o-transform: rotate(140.4deg);\n transform: rotate(140.4deg);\n }\n .c100.p40 .bar {\n -webkit-transform: rotate(144deg);\n -moz-transform: rotate(144deg);\n -ms-transform: rotate(144deg);\n -o-transform: rotate(144deg);\n transform: rotate(144deg);\n }\n .c100.p41 .bar {\n -webkit-transform: rotate(147.6deg);\n -moz-transform: rotate(147.6deg);\n -ms-transform: rotate(147.6deg);\n -o-transform: rotate(147.6deg);\n transform: rotate(147.6deg);\n }\n .c100.p42 .bar {\n -webkit-transform: rotate(151.20000000000002deg);\n -moz-transform: rotate(151.20000000000002deg);\n -ms-transform: rotate(151.20000000000002deg);\n -o-transform: rotate(151.20000000000002deg);\n transform: rotate(151.20000000000002deg);\n }\n .c100.p43 .bar {\n -webkit-transform: rotate(154.8deg);\n -moz-transform: rotate(154.8deg);\n -ms-transform: rotate(154.8deg);\n -o-transform: rotate(154.8deg);\n transform: rotate(154.8deg);\n }\n .c100.p44 .bar {\n -webkit-transform: rotate(158.4deg);\n -moz-transform: rotate(158.4deg);\n -ms-transform: rotate(158.4deg);\n -o-transform: rotate(158.4deg);\n transform: rotate(158.4deg);\n }\n .c100.p45 .bar {\n -webkit-transform: rotate(162deg);\n -moz-transform: rotate(162deg);\n -ms-transform: rotate(162deg);\n -o-transform: rotate(162deg);\n transform: rotate(162deg);\n }\n .c100.p46 .bar {\n -webkit-transform: rotate(165.6deg);\n -moz-transform: rotate(165.6deg);\n -ms-transform: rotate(165.6deg);\n -o-transform: rotate(165.6deg);\n transform: rotate(165.6deg);\n }\n .c100.p47 .bar {\n -webkit-transform: rotate(169.20000000000002deg);\n -moz-transform: rotate(169.20000000000002deg);\n -ms-transform: rotate(169.20000000000002deg);\n -o-transform: rotate(169.20000000000002deg);\n transform: rotate(169.20000000000002deg);\n }\n .c100.p48 .bar {\n -webkit-transform: rotate(172.8deg);\n -moz-transform: rotate(172.8deg);\n -ms-transform: rotate(172.8deg);\n -o-transform: rotate(172.8deg);\n transform: rotate(172.8deg);\n }\n .c100.p49 .bar {\n -webkit-transform: rotate(176.4deg);\n -moz-transform: rotate(176.4deg);\n -ms-transform: rotate(176.4deg);\n -o-transform: rotate(176.4deg);\n transform: rotate(176.4deg);\n }\n .c100.p50 .bar {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n -o-transform: rotate(180deg);\n transform: rotate(180deg);\n }\n .c100.p51 .bar {\n -webkit-transform: rotate(183.6deg);\n -moz-transform: rotate(183.6deg);\n -ms-transform: rotate(183.6deg);\n -o-transform: rotate(183.6deg);\n transform: rotate(183.6deg);\n }\n .c100.p52 .bar {\n -webkit-transform: rotate(187.20000000000002deg);\n -moz-transform: rotate(187.20000000000002deg);\n -ms-transform: rotate(187.20000000000002deg);\n -o-transform: rotate(187.20000000000002deg);\n transform: rotate(187.20000000000002deg);\n }\n .c100.p53 .bar {\n -webkit-transform: rotate(190.8deg);\n -moz-transform: rotate(190.8deg);\n -ms-transform: rotate(190.8deg);\n -o-transform: rotate(190.8deg);\n transform: rotate(190.8deg);\n }\n .c100.p54 .bar {\n -webkit-transform: rotate(194.4deg);\n -moz-transform: rotate(194.4deg);\n -ms-transform: rotate(194.4deg);\n -o-transform: rotate(194.4deg);\n transform: rotate(194.4deg);\n }\n .c100.p55 .bar {\n -webkit-transform: rotate(198deg);\n -moz-transform: rotate(198deg);\n -ms-transform: rotate(198deg);\n -o-transform: rotate(198deg);\n transform: rotate(198deg);\n }\n .c100.p56 .bar {\n -webkit-transform: rotate(201.6deg);\n -moz-transform: rotate(201.6deg);\n -ms-transform: rotate(201.6deg);\n -o-transform: rotate(201.6deg);\n transform: rotate(201.6deg);\n }\n .c100.p57 .bar {\n -webkit-transform: rotate(205.20000000000002deg);\n -moz-transform: rotate(205.20000000000002deg);\n -ms-transform: rotate(205.20000000000002deg);\n -o-transform: rotate(205.20000000000002deg);\n transform: rotate(205.20000000000002deg);\n }\n .c100.p58 .bar {\n -webkit-transform: rotate(208.8deg);\n -moz-transform: rotate(208.8deg);\n -ms-transform: rotate(208.8deg);\n -o-transform: rotate(208.8deg);\n transform: rotate(208.8deg);\n }\n .c100.p59 .bar {\n -webkit-transform: rotate(212.4deg);\n -moz-transform: rotate(212.4deg);\n -ms-transform: rotate(212.4deg);\n -o-transform: rotate(212.4deg);\n transform: rotate(212.4deg);\n }\n .c100.p60 .bar {\n -webkit-transform: rotate(216deg);\n -moz-transform: rotate(216deg);\n -ms-transform: rotate(216deg);\n -o-transform: rotate(216deg);\n transform: rotate(216deg);\n }\n .c100.p61 .bar {\n -webkit-transform: rotate(219.6deg);\n -moz-transform: rotate(219.6deg);\n -ms-transform: rotate(219.6deg);\n -o-transform: rotate(219.6deg);\n transform: rotate(219.6deg);\n }\n .c100.p62 .bar {\n -webkit-transform: rotate(223.20000000000002deg);\n -moz-transform: rotate(223.20000000000002deg);\n -ms-transform: rotate(223.20000000000002deg);\n -o-transform: rotate(223.20000000000002deg);\n transform: rotate(223.20000000000002deg);\n }\n .c100.p63 .bar {\n -webkit-transform: rotate(226.8deg);\n -moz-transform: rotate(226.8deg);\n -ms-transform: rotate(226.8deg);\n -o-transform: rotate(226.8deg);\n transform: rotate(226.8deg);\n }\n .c100.p64 .bar {\n -webkit-transform: rotate(230.4deg);\n -moz-transform: rotate(230.4deg);\n -ms-transform: rotate(230.4deg);\n -o-transform: rotate(230.4deg);\n transform: rotate(230.4deg);\n }\n .c100.p65 .bar {\n -webkit-transform: rotate(234deg);\n -moz-transform: rotate(234deg);\n -ms-transform: rotate(234deg);\n -o-transform: rotate(234deg);\n transform: rotate(234deg);\n }\n .c100.p66 .bar {\n -webkit-transform: rotate(237.6deg);\n -moz-transform: rotate(237.6deg);\n -ms-transform: rotate(237.6deg);\n -o-transform: rotate(237.6deg);\n transform: rotate(237.6deg);\n }\n .c100.p67 .bar {\n -webkit-transform: rotate(241.20000000000002deg);\n -moz-transform: rotate(241.20000000000002deg);\n -ms-transform: rotate(241.20000000000002deg);\n -o-transform: rotate(241.20000000000002deg);\n transform: rotate(241.20000000000002deg);\n }\n .c100.p68 .bar {\n -webkit-transform: rotate(244.8deg);\n -moz-transform: rotate(244.8deg);\n -ms-transform: rotate(244.8deg);\n -o-transform: rotate(244.8deg);\n transform: rotate(244.8deg);\n }\n .c100.p69 .bar {\n -webkit-transform: rotate(248.4deg);\n -moz-transform: rotate(248.4deg);\n -ms-transform: rotate(248.4deg);\n -o-transform: rotate(248.4deg);\n transform: rotate(248.4deg);\n }\n .c100.p70 .bar {\n -webkit-transform: rotate(252deg);\n -moz-transform: rotate(252deg);\n -ms-transform: rotate(252deg);\n -o-transform: rotate(252deg);\n transform: rotate(252deg);\n }\n .c100.p71 .bar {\n -webkit-transform: rotate(255.6deg);\n -moz-transform: rotate(255.6deg);\n -ms-transform: rotate(255.6deg);\n -o-transform: rotate(255.6deg);\n transform: rotate(255.6deg);\n }\n .c100.p72 .bar {\n -webkit-transform: rotate(259.2deg);\n -moz-transform: rotate(259.2deg);\n -ms-transform: rotate(259.2deg);\n -o-transform: rotate(259.2deg);\n transform: rotate(259.2deg);\n }\n .c100.p73 .bar {\n -webkit-transform: rotate(262.8deg);\n -moz-transform: rotate(262.8deg);\n -ms-transform: rotate(262.8deg);\n -o-transform: rotate(262.8deg);\n transform: rotate(262.8deg);\n }\n .c100.p74 .bar {\n -webkit-transform: rotate(266.40000000000003deg);\n -moz-transform: rotate(266.40000000000003deg);\n -ms-transform: rotate(266.40000000000003deg);\n -o-transform: rotate(266.40000000000003deg);\n transform: rotate(266.40000000000003deg);\n }\n .c100.p75 .bar {\n -webkit-transform: rotate(270deg);\n -moz-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n -o-transform: rotate(270deg);\n transform: rotate(270deg);\n }\n .c100.p76 .bar {\n -webkit-transform: rotate(273.6deg);\n -moz-transform: rotate(273.6deg);\n -ms-transform: rotate(273.6deg);\n -o-transform: rotate(273.6deg);\n transform: rotate(273.6deg);\n }\n .c100.p77 .bar {\n -webkit-transform: rotate(277.2deg);\n -moz-transform: rotate(277.2deg);\n -ms-transform: rotate(277.2deg);\n -o-transform: rotate(277.2deg);\n transform: rotate(277.2deg);\n }\n .c100.p78 .bar {\n -webkit-transform: rotate(280.8deg);\n -moz-transform: rotate(280.8deg);\n -ms-transform: rotate(280.8deg);\n -o-transform: rotate(280.8deg);\n transform: rotate(280.8deg);\n }\n .c100.p79 .bar {\n -webkit-transform: rotate(284.40000000000003deg);\n -moz-transform: rotate(284.40000000000003deg);\n -ms-transform: rotate(284.40000000000003deg);\n -o-transform: rotate(284.40000000000003deg);\n transform: rotate(284.40000000000003deg);\n }\n .c100.p80 .bar {\n -webkit-transform: rotate(288deg);\n -moz-transform: rotate(288deg);\n -ms-transform: rotate(288deg);\n -o-transform: rotate(288deg);\n transform: rotate(288deg);\n }\n .c100.p81 .bar {\n -webkit-transform: rotate(291.6deg);\n -moz-transform: rotate(291.6deg);\n -ms-transform: rotate(291.6deg);\n -o-transform: rotate(291.6deg);\n transform: rotate(291.6deg);\n }\n .c100.p82 .bar {\n -webkit-transform: rotate(295.2deg);\n -moz-transform: rotate(295.2deg);\n -ms-transform: rotate(295.2deg);\n -o-transform: rotate(295.2deg);\n transform: rotate(295.2deg);\n }\n .c100.p83 .bar {\n -webkit-transform: rotate(298.8deg);\n -moz-transform: rotate(298.8deg);\n -ms-transform: rotate(298.8deg);\n -o-transform: rotate(298.8deg);\n transform: rotate(298.8deg);\n }\n .c100.p84 .bar {\n -webkit-transform: rotate(302.40000000000003deg);\n -moz-transform: rotate(302.40000000000003deg);\n -ms-transform: rotate(302.40000000000003deg);\n -o-transform: rotate(302.40000000000003deg);\n transform: rotate(302.40000000000003deg);\n }\n .c100.p85 .bar {\n -webkit-transform: rotate(306deg);\n -moz-transform: rotate(306deg);\n -ms-transform: rotate(306deg);\n -o-transform: rotate(306deg);\n transform: rotate(306deg);\n }\n .c100.p86 .bar {\n -webkit-transform: rotate(309.6deg);\n -moz-transform: rotate(309.6deg);\n -ms-transform: rotate(309.6deg);\n -o-transform: rotate(309.6deg);\n transform: rotate(309.6deg);\n }\n .c100.p87 .bar {\n -webkit-transform: rotate(313.2deg);\n -moz-transform: rotate(313.2deg);\n -ms-transform: rotate(313.2deg);\n -o-transform: rotate(313.2deg);\n transform: rotate(313.2deg);\n }\n .c100.p88 .bar {\n -webkit-transform: rotate(316.8deg);\n -moz-transform: rotate(316.8deg);\n -ms-transform: rotate(316.8deg);\n -o-transform: rotate(316.8deg);\n transform: rotate(316.8deg);\n }\n .c100.p89 .bar {\n -webkit-transform: rotate(320.40000000000003deg);\n -moz-transform: rotate(320.40000000000003deg);\n -ms-transform: rotate(320.40000000000003deg);\n -o-transform: rotate(320.40000000000003deg);\n transform: rotate(320.40000000000003deg);\n }\n .c100.p90 .bar {\n -webkit-transform: rotate(324deg);\n -moz-transform: rotate(324deg);\n -ms-transform: rotate(324deg);\n -o-transform: rotate(324deg);\n transform: rotate(324deg);\n }\n .c100.p91 .bar {\n -webkit-transform: rotate(327.6deg);\n -moz-transform: rotate(327.6deg);\n -ms-transform: rotate(327.6deg);\n -o-transform: rotate(327.6deg);\n transform: rotate(327.6deg);\n }\n .c100.p92 .bar {\n -webkit-transform: rotate(331.2deg);\n -moz-transform: rotate(331.2deg);\n -ms-transform: rotate(331.2deg);\n -o-transform: rotate(331.2deg);\n transform: rotate(331.2deg);\n }\n .c100.p93 .bar {\n -webkit-transform: rotate(334.8deg);\n -moz-transform: rotate(334.8deg);\n -ms-transform: rotate(334.8deg);\n -o-transform: rotate(334.8deg);\n transform: rotate(334.8deg);\n }\n .c100.p94 .bar {\n -webkit-transform: rotate(338.40000000000003deg);\n -moz-transform: rotate(338.40000000000003deg);\n -ms-transform: rotate(338.40000000000003deg);\n -o-transform: rotate(338.40000000000003deg);\n transform: rotate(338.40000000000003deg);\n }\n .c100.p95 .bar {\n -webkit-transform: rotate(342deg);\n -moz-transform: rotate(342deg);\n -ms-transform: rotate(342deg);\n -o-transform: rotate(342deg);\n transform: rotate(342deg);\n }\n .c100.p96 .bar {\n -webkit-transform: rotate(345.6deg);\n -moz-transform: rotate(345.6deg);\n -ms-transform: rotate(345.6deg);\n -o-transform: rotate(345.6deg);\n transform: rotate(345.6deg);\n }\n .c100.p97 .bar {\n -webkit-transform: rotate(349.2deg);\n -moz-transform: rotate(349.2deg);\n -ms-transform: rotate(349.2deg);\n -o-transform: rotate(349.2deg);\n transform: rotate(349.2deg);\n }\n .c100.p98 .bar {\n -webkit-transform: rotate(352.8deg);\n -moz-transform: rotate(352.8deg);\n -ms-transform: rotate(352.8deg);\n -o-transform: rotate(352.8deg);\n transform: rotate(352.8deg);\n }\n .c100.p99 .bar {\n -webkit-transform: rotate(356.40000000000003deg);\n -moz-transform: rotate(356.40000000000003deg);\n -ms-transform: rotate(356.40000000000003deg);\n -o-transform: rotate(356.40000000000003deg);\n transform: rotate(356.40000000000003deg);\n }\n .c100.p100 .bar {\n -webkit-transform: rotate(360deg);\n -moz-transform: rotate(360deg);\n -ms-transform: rotate(360deg);\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n .c100:hover {\n cursor: default;\n }\n .c100:hover > span {\n width: 3.33em;\n line-height: 3.33em;\n font-size: 0.3em;\n color: #307bbb;\n }\n .c100:hover:after {\n top: 0.04em;\n left: 0.04em;\n width: 0.92em;\n height: 0.92em;\n }\n .c100.dark {\n background-color: #777777;\n }\n .c100.dark .bar,\n .c100.dark .fill {\n border-color: #c6ff00 !important;\n }\n .c100.dark > span {\n color: #777777;\n }\n .c100.dark:after {\n background-color: #666666;\n }\n .c100.dark:hover > span {\n color: #c6ff00;\n }\n .c100.green .bar,\n .c100.green .fill {\n border-color: #4db53c !important;\n }\n .c100.green:hover > span {\n color: #4db53c;\n }\n .c100.green.dark .bar,\n .c100.green.dark .fill {\n border-color: #5fd400 !important;\n }\n .c100.green.dark:hover > span {\n color: #5fd400;\n }\n .c100.orange .bar,\n .c100.orange .fill {\n border-color: #dd9d22 !important;\n }\n .c100.orange:hover > span {\n color: #dd9d22;\n }\n .c100.orange.dark .bar,\n .c100.orange.dark .fill {\n border-color: #e08833 !important;\n }\n .c100.orange.dark:hover > span {\n color: #e08833;\n }\n)",
"Type": "blocks"
},
{
"Name": "welcome",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n Div(panel panel-primary){\n Div(list-group-item text-center){\n P(Class: h3 m0 text-bold, Body: $@1welcome_title$)\n }\n Div(list-group-item){\n Span(Class: h4, Body: $@1welcome_text$)\n Span(Class: h4 text-primary, Body: \" https://genesiskernel.readthedocs.io\")\n }\n }\n}",
"Type": "blocks"
},
{
"Name": "admin_menu",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "MenuItem(Title:$@1member_management$, Page:@1members_list_admin, Icon:\"icon-people\")\nMenuItem(Title:$@1ecosystems$, Page:@1ecosystems_list, Icon:\"icon-layers\")\nMenuItem(Title:$@1platform_parameters$, Page:@1sysparams_list, Icon:\"icon-settings\")\nMenuItem(Title:$@1roles$, Page:@1roles_list, Icon:\"icon-pie-chart\")\nMenuItem(Title:$@1groups$, Page:@1groups_list, Icon:\"icon-user-following\")\nMenuItem(Title:$@1tokens_refund$, Page:@1tokenrefund_list, Icon:\"icon-shuffle\")\nMenuItem(Title:$@1consortium_members$, Page:@1consortium_member_candidates, Icon:\"icon-graduation\")\nMenuItem(Title:$@1pa_settings$, Page:@1platform_apps_settings, Icon: \"icon-wrench\")",
"Type": "menu"
},
{
"Name": "default_menu",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "MenuItem(Title:$@1profile$, Page:@1profile_view, Icon:\"icon-wallet\")\nMenuItem(Title:$@1messenger$, Page:@1messages_list, Icon:\"icon-speech\")\nMenuItem(Title:$@1notifications$, Page:@1notifications_list, Icon:\"icon-flag\")\nMenuItem(Title:$@1ecosystem_members$, Page:@1members_list, Icon:\"icon-people\")\nMenuItem(Title:$@1votings$, Page:@1voting_list, Icon:\"icon-note\")",
"Type": "menu"
},
{
"Name": "consortium_member_requests",
"Columns": "[\n {\n \"name\": \"api_address\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"candidate_account\",\n \"conditions\": \"false\",\n \"type\": \"varchar\"\n },\n {\n \"name\": \"comment\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"date_created\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"deleted\",\n \"conditions\": \"ContractAccess(\\\"@1ConsortiumMemberDelete\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"description\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"pub_key\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"tcp_address\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1ConsortiumMemberRequest\\\")\", \"update\": \"ContractAccess(\\\"@1ConsortiumMemberDelete\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "groups",
"Columns": "[\n {\n \"name\": \"creator\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"date_created\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"date_deleted\",\n \"conditions\": \"ContractAccess(\\\"@1GroupsDelete\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"deleted\",\n \"conditions\": \"ContractAccess(\\\"@1GroupsDelete\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"group_access\",\n \"conditions\": \"ContractAccess(\\\"@1GroupAccessManager\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"group_info\",\n \"conditions\": \"ContractAccess(\\\"@1GroupsCreate\\\")\",\n \"type\": \"text\"\n },\n {\n \"name\": \"group_name\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"group_type\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"image_id\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n }\n]",
"Permissions": "{\"read\": \"true\", \"insert\": \"ContractAccess(\\\"@1GroupsCreate\\\")\", \"update\": \"ContractAccess(\\\"@1GroupsCreate\\\",\\\"@1GroupsDelete\\\",\\\"@1GroupAccessManager\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "groups_participants",
"Columns": "[\n {\n \"name\": \"appointed\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"date_created\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"date_deleted\",\n \"conditions\": \"ContractAccess(\\\"@1GroupsUnassign\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"deleted\",\n \"conditions\": \"ContractAccess(\\\"@1GroupsUnassign\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"groups_info\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"member\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n }\n]",
"Permissions": "{\"read\": \"true\", \"insert\": \"ContractAccess(\\\"@1GroupsAssign\\\")\", \"update\": \"ContractAccess(\\\"@1GroupsUnassign\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "tokens_refund",
"Columns": "[\n {\n \"name\": \"amount\",\n \"conditions\": \"false\",\n \"type\": \"money\"\n },\n {\n \"name\": \"attacker_account\",\n \"conditions\": \"false\",\n \"type\": \"varchar\"\n },\n {\n \"name\": \"blocked_at\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"closed_at\",\n \"conditions\": \"ContractAccess(\\\"@1TokensRefundAccept\\\",\\\"@1TokensRefundReject\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"note\",\n \"conditions\": \"false\",\n \"type\": \"text\"\n },\n {\n \"name\": \"result\",\n \"conditions\": \"ContractAccess(\\\"@1TokensRefundAccept\\\",\\\"@1TokensRefundReject\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"status\",\n \"conditions\": \"ContractAccess(\\\"@1TokensRefundAccept\\\",\\\"@1TokensRefundReject\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"consortium_member_account\",\n \"conditions\": \"false\",\n \"type\": \"varchar\"\n },\n {\n \"name\": \"victim_account\",\n \"conditions\": \"false\",\n \"type\": \"varchar\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1VotingRunTokenRefund\\\")\", \"update\": \"ContractAccess(\\\"@1TokensRefundAccept\\\",\\\"@1TokensRefundReject\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "voting_templates",
"Columns": "[\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"optional\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"subject\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"voting\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1VotingTemplateCreate\\\",\\\"@1VotingTemplatesInstall\\\")\", \"update\": \"false\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "votings",
"Columns": "[\n {\n \"name\": \"creator\",\n \"conditions\": \"false\",\n \"type\": \"json\"\n },\n {\n \"name\": \"date_ended\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"date_started\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"deleted\",\n \"conditions\": \"ContractAccess(\\\"@1VotingDelete\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"flags\",\n \"conditions\": \"ContractAccess(\\\"@1VotingDecisionCheck\\\", \\\"@1VotingNotificationSend\\\", \\\"@1VotingStatusUpdate\\\", \\\"@1VotingSubjectCheck\\\", \\\"@1VotingUpdate\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"optional\",\n \"conditions\": \"ContractAccess(\\\"@1VotingSubjectCandidates\\\", \\\"@1VotingSubjectDocument\\\", \\\"@1VotingSubjectContract\\\", \\\"@1VotingSubjectSettings\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"progress\",\n \"conditions\": \"ContractAccess(\\\"@1VotingUpdate\\\",\\\"@1VotingInvite\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"status\",\n \"conditions\": \"ContractAccess(\\\"@1VotingStatusUpdate\\\",\\\"@1VotingUpdate\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"voting\",\n \"conditions\": \"ContractAccess(\\\"@1VotingInvite\\\")\",\n \"type\": \"json\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1VotingCreate\\\")\", \"update\": \"ContractAccess(\\\"@1VotingDecisionCheck\\\",\\\"@1VotingDelete\\\",\\\"@1VotingInvite\\\",\\\"@1VotingNotificationSend\\\",\\\"@1VotingStatusUpdate\\\",\\\"@1VotingSubjectCandidates\\\",\\\"@1VotingSubjectCheck\\\",\\\"@1VotingSubjectDocument\\\",\\\"@1VotingSubjectContract\\\",\\\"@1VotingSubjectSettings\\\",\\\"@1VotingUpdate\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "votings_participants",
"Columns": "[\n {\n \"name\": \"decision\",\n \"conditions\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\", \\\"@1VotingDecisionAccept\\\", \\\"@1VotingDecisionReject\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"decision_date\",\n \"conditions\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\", \\\"@1VotingDecisionAccept\\\", \\\"@1VotingDecisionReject\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"member\",\n \"conditions\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\", \\\"@1VotingDecisionAccept\\\", \\\"@1VotingDecisionReject\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"rating\",\n \"conditions\": \"ContractAccess(\\\"@1VotingStatusUpdate\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"voting_id\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1VotingInvite\\\")\", \"update\": \"ContractAccess(\\\"@1VotingDecisionReject\\\",\\\"@1VotingDecisionAccept\\\",\\\"@1VotingCandidateAccept\\\",\\\"@1VotingStatusUpdate\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "votings_subject",
"Columns": "[\n {\n \"name\": \"ecosystem\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n },\n {\n \"name\": \"number_accept\",\n \"conditions\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\", \\\"@1VotingDecisionAccept\\\")\",\n \"type\": \"number\"\n },\n {\n \"name\": \"results\",\n \"conditions\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\", \\\"@1VotingDecisionAccept\\\", \\\"@1VotingDecisionReject\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"subject\",\n \"conditions\": \"ContractAccess(\\\"@1VotingSubjectContract\\\", \\\"@1VotingSubjectDocument\\\")\",\n \"type\": \"json\"\n },\n {\n \"name\": \"voting_id\",\n \"conditions\": \"false\",\n \"type\": \"number\"\n }\n]",
"Permissions": "{\"insert\": \"ContractAccess(\\\"@1VotingSubjectCandidates\\\",\\\"@1VotingSubjectContract\\\",\\\"@1VotingSubjectDocument\\\")\", \"update\": \"ContractAccess(\\\"@1VotingCandidateAccept\\\",\\\"@1VotingDecisionAccept\\\",\\\"@1VotingDecisionReject\\\",\\\"@1VotingSubjectContract\\\",\\\"@1VotingSubjectDocument\\\")\", \"new_column\": \"ContractConditions(\\\"@1AdminCondition\\\")\"}",
"Type": "tables"
},
{
"Name": "config",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "{\n \"name\": \"Basic\",\n \"conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"data\": [\n {\n \"Name\": \"default_menu\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"MenuItem(Title:$@1profile$, Page:@1profile_view, Icon:\\\"icon-wallet\\\")\\nMenuItem(Title:$@1messenger$, Page:@1messages_list, Icon:\\\"icon-speech\\\")\\nMenuItem(Title:$@1notifications$, Page:@1notifications_list, Icon:\\\"icon-flag\\\")\\nMenuItem(Title:$@1ecosystem_members$, Page:@1members_list, Icon:\\\"icon-people\\\")\\nMenuItem(Title:$@1votings$, Page:@1voting_list, Icon:\\\"icon-note\\\")\",\n \"Type\": \"menu\"\n },\n {\n \"Name\": \"admin_menu\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"MenuItem(Title:$@1member_management$, Page:@1members_list_admin, Icon:\\\"icon-people\\\")\\nMenuItem(Title:$@1roles$, Page:@1roles_list, Icon:\\\"icon-pie-chart\\\")\\nMenuItem(Title:$@1groups$, Page:@1groups_list, Icon:\\\"icon-user-following\\\")\\nMenuItem(Title:$@1pa_settings$, Page:@1platform_apps_settings, Icon: \\\"icon-wrench\\\")\",\n \"Type\": \"menu\"\n },\n {\n \"Name\": \"voting_rating_table\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"@1r_ratings\",\n \"Type\": \"app_params\"\n },\n {\n \"Name\": \"voting_rating_wallet\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"member\",\n \"Type\": \"app_params\"\n },\n {\n \"Name\": \"voting_rating_amount\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"amount\",\n \"Type\": \"app_params\"\n },\n {\n \"Name\": \"voting_rating_weight\",\n \"Conditions\": \"ContractConditions(\\\"DeveloperCondition\\\")\",\n \"Value\": \"2\",\n \"Type\": \"app_params\"\n }\n ]\n}",
"Type": "app_params"
},
{
"Name": "first_node",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "{\"api_address\":\"\",\"key_id\":\"\",\"public_key\":\"\",\"tcp_address\":\"\"}",
"Type": "app_params"
},
{
"Name": "groups_types",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1open_group,@1closed_group",
"Type": "app_params"
},
{
"Name": "investors_number",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "notification_closure",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1single,@1multiple",
"Type": "app_params"
},
{
"Name": "notification_icon",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "fa-bell,fa-comment,fa-envelope,fa-bookmark,fa-check,fa-exclamation-triangle,fa-info-circle",
"Type": "app_params"
},
{
"Name": "notification_sender",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1notification_sender_member,@1notification_sender_role",
"Type": "app_params"
},
{
"Name": "notification_type",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1personal_type,@1role_type",
"Type": "app_params"
},
{
"Name": "roles_types",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1assigned_role,@1elective_role,@1system_role",
"Type": "app_params"
},
{
"Name": "roles_types_selection",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1assigned_role,@1elective_role",
"Type": "app_params"
},
{
"Name": "tokenrefund_result",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1tokenrefund_result1,@1tokenrefund_result2",
"Type": "app_params"
},
{
"Name": "tokenrefund_status",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1voting,@1closed",
"Type": "app_params"
},
{
"Name": "type_tokens_transfer",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1resources_fees,@1emission_tokens,@1tokens_transfer,@1tokens_burn",
"Type": "app_params"
},
{
"Name": "type_voting",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1type_voting_custom,@1type_voting_system",
"Type": "app_params"
},
{
"Name": "type_voting_decisions",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1candidate_requests,@1candidate_manual,@1document,@1contract_run",
"Type": "app_params"
},
{
"Name": "type_voting_participants",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1vp_everybody,@1vp_manual,@1vp_role,@1vp_rolelist_all,@1vp_rolelist_one,@1vp_group",
"Type": "app_params"
},
{
"Name": "voting_rating_amount",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "amount",
"Type": "app_params"
},
{
"Name": "voting_rating_table",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "r_ratings",
"Type": "app_params"
},
{
"Name": "voting_rating_wallet",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "member",
"Type": "app_params"
},
{
"Name": "voting_rating_weight",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "2",
"Type": "app_params"
},
{
"Name": "voting_statuses",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "@1invalid,@1waiting,@1started,@1finished",
"Type": "app_params"
},
{
"Name": "voting_statuses_classes",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "text-danger,text-warning,text-success,text-success",
"Type": "app_params"
},
{
"Name": "voting_template_consortium_member",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "voting_template_decision",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "voting_template_ecosysparams",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "voting_template_platformparams",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "voting_template_tokenrefund",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "voting_template_ves",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "0",
"Type": "app_params"
},
{
"Name": "consortium_member_candidates",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1consortium_member_candidates).(this_table, @1consortium_member_requests)\nInclude(@1pager_header)\n\nSetTitle(\"$@1consortium_member_candidates$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1consortium_member_candidates_list_desc$\"))\nAddToolButton(Title: $@1create_request$, Icon: icon-plus, Page: @1consortium_member_request).Popup(50, $@1consortium_member_request_form$)\n\nIf(#search#){\n SetVar(where, {\"host_ip\": {\"$ilike\": \"#search#\"}, \"deleted\": 0})\n}.Else{\n SetVar(where, {\"deleted\": 0})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1host_ip))\n Include(@1search)\n}\n\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(template_id, AppParam(Ecosystem: 1, App: #application_id#, Name: voting_template_consortium_member))\nIf(#template_id# > 0){\n DBFind(\"@1voting_templates\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#template_id#\"}).Columns(\"subject->voters\").Vars(template)\n}\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_actions){\n If(And(#template_subject_voters# > 0, #template_subject_voters# == #role_id#)){\n Form(btn-group pull-right){\n Button(Contract: @1VotingRunNewConsortiumMember, Params: \"ConsortiumMemberId=#id#\", Page: @1voting_list, Class: btn btn-default fa fa-play)\n }\n }.Else{\n If(#template_id# > 0){\n Span($@1voting_not_participant$, text-muted)\n }.Else{\n Span($@1voting_template_not_found$, text-muted)\n }\n }\n}.Custom(_date){\n DateTime(DateTime: #date_created#, Format: YYYY-MM-DD HH:MI)\n}.Custom(_tcp_address){\n Span(Class: h6, Body: #tcp_address#)\n}.Custom(_api_address){\n Span(Class: h6, Body: #api_address#)\n}.Custom(_description){\n Span(Class: h6, Body: #description#)\n}.Custom(_comment){\n Span(Class: h6, Body: #comment#)\n}.Custom(custom_username){\n SetVar(user_member_name,)\n DBFind(\"@1members\").Where({\"account\": \"#candidate_account#\", \"ecosystem\": \"#ecosystem_id#\"}).Vars(user)\n If(#user_member_name# == \"\"){\n SetVar(user_member_name, #candidate_account#)\n }\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#candidate_account#\"){\n If(#user_image_id#>0){\n Image(Src: Binary().ById(#user_image_id#), Class: img-circle).Style(height: 30px; width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#user_member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right: 10px;)\n Span(#user_member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1name$=custom_username,$@1api_address$=_api_address,$@1tcp_address$=_tcp_address,$@1hardware_description$=_description,$@1comment$=_comment,$@1date_created$=_date,$@1voting$=_actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1consortium_member_candidates$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "consortium_member_request",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Div(row){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1tcp_address))\n Span(Class: text-danger, Body:*)\n }\n Div(col-md-8 text-left){\n Input(Name: TcpAddress, Placeholder: \"xxx.xxx.xxx.xxx:port\")\n }\n }\n Div(row mt-sm){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1api_address))\n Span(Class: text-danger, Body:*)\n }\n Div(col-md-8 text-left){\n Input(Name: ApiAddress, Placeholder: \"protocol://xxx.xxx.xxx.xxx:port\")\n }\n }\n Div(row mt-sm){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1node_founder_account))\n Span(Class: text-danger, Body:*)\n }\n Div(col-md-8 text-left){\n Input(Name: CandidateAccount, Disabled: true, Value: #account_id#)\n Div(Class: m0 h6 text-muted, Body: LangRes(@1node_founder_key_id): AddressToId(#account_id#))\n }\n }\n Div(row mt-sm){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1node_pub_key))\n Span(Class: text-danger, Body:*)\n }\n Div(col-md-8 text-left){\n Input(Name: PubKey, Type: textarea).Style(resize:vertical)\n }\n }\n Div(row mt-sm){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1hardware_description))\n }\n Div(col-md-8 text-left){\n Input(Name: Description, Type: textarea).Style(resize:vertical)\n }\n }\n Div(row mt-sm){\n Div(col-md-4 mt-sm text-right){\n Label(LangRes(@1comment))\n }\n Div(col-md-8 text-left){\n Input(Name: Comment, Type: textarea).Style(resize:vertical)\n }\n }\n\n Button(Contract: @1ConsortiumMemberRequest, Class: btn btn-primary pull-right mt, Page: @1consortium_member_candidates, Body: $@1send_request$)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1consortium_member_candidates)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "consortium_member_resign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Div(row){\n Div(col-sm-12 text-center h4){\n $@1consortium_member_removing_desc$\n }\n }\n DBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\n SetVar(role_consortium_member, AppParam(App: #system_app_id#, Name: \"role_consortium_member\"))\n DBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"member->account\": \"#account_id#\", \"role->id\": \"#role_consortium_member#\", \"deleted\": 0}).Columns(\"id\").Vars(consortium_member)\n If(#consortium_member_id# > 0){\n Button(Body: $@1resign$, Class: btn btn-danger pull-right mt-lg, Page: @1sysparams_list, Contract: @1ConsortiumMemberResign).Alert(Text: \"$@1want_resign$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n Button(Body: $@1back$, Class: btn btn-default pull-right mt-lg, Page: @1sysparams_list)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "contract_bind_request",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1notifications\").Where({\"id\": \"#notific_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"closed,page_params->contract_id\").Vars(notific)\n\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-default){\n Div(panel-heading text-center){\n Span(Class: h3, Body: $@1request_contract_binding$)\n }\n Div(panel-body){\n Div(list-group-item text-center){\n Div(text-muted m0 h5, Body: LangRes(@1contract_binding_des))\n Span(Class: h5 text-bold, Body: LangRes(@1contract) - #notific_page_params_contract_name#)\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n Button(Class: btn btn-danger mr-lg, Body: LangRes(@1request_reject), Contract: NotificationsClose, Page: notifications_list, Params: \"NotificId=#notific_id#\").Alert(Text: $@1want_reject_request$, ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n Button(Class: btn btn-success, Body: LangRes(@1contract_binding_accept), Contract: @1BindWallet, Page: notifications_list, Params: \"Id=#notific_page_params_contract_id#\").Alert(Text: $@1want_bind_contract$, ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }\n }\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "default_page",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#account_id# == #guest_account#){\n Include(@1apps_description)\n}.Else{\n Include(@1profile)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "ecosystem_add_members",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Label(Public Key)\n P(Class: text-muted h6 m0, Body: \"$@1keys_must_be_separated$\")\n Input(Name: Keys, Type: textarea)\n Button(Contract: @1MembershipAdd, Class: btn btn-primary pull-right mt, Page: @1members_list, Body: $@1members_add$)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1members_list)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "ecosystems_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1ecosystems_list).(this_table, @1ecosystems)\nInclude(@1pager_header)\n\nSetTitle(\"$@1ecosystems$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1ecosystems_list_desc$\"))\nAddToolButton(Title: $@1update_metrics$, Page: @1ecosystems_metrics_update, Icon: icon-refresh).Popup(Header: $@1update_metrics$, Width: \"30\")\n\nIf(#search#){\n SetVar(where, {\"name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1ecosystem_name))\n Include(@1search)\n}\n\nDBFind(\"@1buffer_data\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account_id#\", \"key\": \"metrics\"}).Vars(m)\nJsonToSource(src_metrics,#m_value#)\n\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(template_id, AppParam(Ecosystem:1, App:#application_id#, Name: voting_template_ves))\nIf(#template_id# > 0){\n DBFind(\"@1voting_templates\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#template_id#\"}).Columns(\"subject->voters\").Vars(template)\n}\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_id){\n Span(#id#)\n}.Custom(_name){\n Span(#name#)\n}.Custom(_metrics){\n If(#m_id#>0){\n SetVar(eco_id, #id#)\n ForList(src_metrics){\n If(#key# == #eco_id#){\n LinkPage(Body: #value#, Page: @1sysparams_metrics, PageParams: \"Id=#key#\")\n }\n }\n }\n}.Custom(valued){\n If(#is_valued# == 0){\n If(And(#template_subject_voters# > 0, #template_subject_voters# == #role_id#)){\n Button(Body: $@1start_voting_ves$, Class: btn-xs btn-link, Page: @1voting_list, Contract: @1VotingRunVes, Params: \"EcosystemId=#id#\")\n }.Else{\n If(#template_id# > 0){\n Span($@1voting_not_participant$, text-muted)\n }.Else{\n Span($@1voting_template_not_found$, text-muted)\n }\n } \n }.ElseIf(#is_valued#==1){\n $@1is_valued$\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1id$=_id,$@1ecosystem_name$=_name,$@1metrics$=_metrics,$@1valued$=valued\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1ecosystems$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "ecosystems_metrics_update",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Data(aggregates, \"id,name\"){\n max,$@1maximum$\n min,$@1minimum$\n avg,$@1average$\n }\n Div(row){\n Div(col-sm-3 mt-sm text-right){\n Label(For: Interval){\n LangRes(@1interval)\n }\n Span(Class: text-danger, Body:*)\n }\n Div(col-sm-9){\n Input(Name: Interval, Type: number)\n }\n }\n Div(row mt-sm){\n Div(col-sm-3 mt-sm text-right){\n Label(For: Aggregate){\n LangRes(@1sampling_type)\n }\n Span(Class: text-danger, Body:*)\n }\n Div(col-sm-9){\n Select(Name: Aggregate, Source: aggregates, NameColumn: name, ValueColumn: id)\n }\n }\n Button(Body: LangRes(@1update_metrics), Page: @1ecosystems_list, Class: btn btn-primary pull-right mt, Contract: @1MetricsUpdate)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1ecosystems_list)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_add_members",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n P(Class: text-muted h6 m0 mb-sm, Body: \"$@1keys_must_be_separated$\")\n Input(Name: Keys, Type: textarea)\n Button(Contract: @1GroupsAssignList, Class: btn btn-primary pull-right mt, Page: @1groups_view, Body: $@1members_add$, Params: \"GroupId=#v_group_id#\", PageParams: \"v_group_id=#v_group_id#\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1groups_view, PageParams: \"v_group_id=#v_group_id#\")\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_assign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"name\": \"Basic\", \"ecosystem\": 1}).Vars(application)\n\nIf(#Id#!=\"\"){\n SetVar(v_group_id, #Id#)\n}\n\nIf(#v_group_id#>0){\n DBFind(\"@1groups\", src_groups).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#v_group_id#\"}).Columns(\"id,group_name,group_type,group_access,creator->account,deleted\").Vars(prefix)\n If(#prefix_creator_account#==#account_id#){\n SetVar(manager_id, 1)\n }.ElseIf(And(#prefix_group_access#!=\"NULL\",#prefix_group_access#!=\"\",#prefix_group_access#!=\"[]\",#prefix_deleted#==0)){\n DBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #prefix_group_access#}}).Columns(\"id\").Vars(manager)\n }\n\n Form(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1group)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Type: hidden, Name: GroupId, Value: #prefix_id#)\n SetVar(Name: var_prefix_group_name, Value: LangRes(#prefix_group_name#))\n Input(Name: input_prefix_group_name, Value: #var_prefix_group_name#, Disabled: 1)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1type)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n SetVar(Name: var_prefix_group_type, Value: AppParam(Ecosystem:1, App:#application_id#, Name: groups_types, Index: #prefix_group_type#))\n Input(Name: input_prefix_group_type, Value: #var_prefix_group_type#, Disabled: 1)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1member)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Div(input-group){\n If(#MemberAccount#){\n Input(Name: account, Type: hidden, Value: #MemberAccount#)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccount#)\n }.Else{\n Input(Name: account, Type: hidden, Value: 0)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\")\n }\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=@1groups_assign,back_header=$@1assign$,Id=#v_group_id#,EcosystemId=#ecosystem_id#\").Popup(Header: $@1member$, Width: \"50\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n If(#manager_id#>0){\n Button(Body: LangRes(@1assign), Class: btn btn-primary pull-right mt, Page: @1groups_view, PageParams: \"v_group_id=#v_group_id#\", Contract: @1GroupsAssign, Params: \"MemberAccount=Val(account)\").Alert(Text: \"$@1want_assign_member_to_role$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1groups_view, PageParams: \"v_group_id=#v_group_id#\")\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\nDBFind(\"@1roles\", src_roles).Columns(\"id,role_name\").Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0}).Order(\"id\")\nIf(#back_page#==\"\"){\n SetVar(back_page, \"@1groups_list\")\n}\n\nIf(#GroupId#==\"\"){\n SetVar(title, $@1new_group$)\n DBFind(\"@1buffer_data\").Columns(value).Where({\"ecosystem\": \"#ecosystem_id#\", \"key\": \"group_access\", \"account\": \"#account_id#\"}).Columns(\"id,key,account,ecosystem,value->groups_access,value->group_information,value->group_type,value->group_name\").Vars(buffer)\n AppParam(Source: type_group, Ecosystem: 1, App: #application_id#, Name: groups_types)\n If(And(#buffer_value_groups_access#!=\"NULL\",#buffer_value_groups_access#!=\"\",#buffer_value_groups_access#!=\"[]\")){\n DBFind(\"@1roles\", src_roles_access).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #buffer_value_groups_access#}}).Columns(\"id,role_name\").Count(ra_count).Order(\"role_name\")\n }\n}.Else{\n SetVar(title, $@1edit_group$)\n DBFind(\"@1groups\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#GroupId#\"}).Columns(\"id,group_name,group_type,group_info,group_access\").Vars(gr_e)\n SetVar(type_group, AppParam(Ecosystem: 1, App: #application_id#, Name: groups_types, Index: #gr_e_group_type#))\n If(And(#gr_e_group_access#!=\"NULL\",#gr_e_group_access#!=\"\",#gr_e_group_access#!=\"[]\")){\n DBFind(\"@1roles\", src_roles_access).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #gr_e_group_access#}}).Columns(\"id,role_name\").Count(ra_count).Order(\"role_name\")\n }\n}\n\nForm(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1name)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n If(#GroupId#==\"\"){\n Input(Name: GroupName, Value: #buffer_value_group_name#).Validate(minLength:3, maxLength:30)\n InputErr(Name: GroupName, minLength: $@1validate_role_name$, maxLength: $@1validate_role_name$)\n }.Else{\n Input(Name: eGroupName, Value: #gr_e_group_name#, Disabled: 1)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1type)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n If(#GroupId#==\"\"){\n Select(Name: GroupType, Source: type_group, NameColumn: name, ValueColumn: id, Value: #buffer_value_group_type#)\n }.Else{\n Input(Name: eGroupType, Value: #type_group#, Disabled: 1)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt text-right){\n Label(){\n LangRes(@1group_info)\n }\n }\n Div(col-md-9 text-left){\n If(#GroupId#==\"\"){\n Input(Name: GroupInfo, Type: textarea, Value: #buffer_value_group_information#)\n }.Else{\n Input(Name: GroupInfo, Type: textarea, Value: #gr_e_group_info#)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1group_access)\n }\n }\n Div(col-md-9 text-left){\n Div(input-group mb-sm){\n Select(Name: roles_managers, Source: src_roles, NameColumn: role_name, ValueColumn: id)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-plus mtl buttons, Page: @1groups_create, Contract: @1GroupAccessManager, Params: \"ManagerRid=Val(roles_managers),Action=add,GroupId=#GroupId#\", PageParams: \"GroupId=#GroupId#\").Popup(50, #title#)\n }\n }\n If(#ra_count#>0){\n ForList(src_roles_access){\n SetVar(btn_class, \"bg-gray-lighter\")\n If(#id#==#role_id#){\n SetVar(btn_class, \"bg-primary\")\n }\n Button(Class: btn-xs #btn_class# mr-sm mb-sm, Page: @1groups_create, Contract: @1GroupAccessManager, Params: \"ManagerRid=#id#,Action=remove,GroupId=#GroupId#\", PageParams: \"GroupId=#GroupId#\", Body: Span(Class: fa fa-remove) #role_name#).Popup(50, #title#)\n }\n }\n }\n }\n If(#GroupId#==\"\"){\n Button(Body: LangRes(@1create), Class: btn btn-primary pull-right mt, Page: #back_page#, Contract: @1GroupsCreate)\n }.Else{\n Button(Body: LangRes(@1edit), Class: btn btn-primary pull-right mt, Page: #back_page#, Contract: @1GroupsCreate, Params:\"GroupId=#GroupId#\")\n }\n Button(Body: LangRes(@1back), Class: btn bg-gray-lighter pull-right mt, Page: #back_page#)\n}.Style(\n .buttons{border: 1px solid #dde6e9;}\n)\n",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1groups_list).(this_table, @1groups)\nInclude(@1pager_header)\n\nSetTitle($@1groups$)\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: $@1group_desc$))\nAddToolButton(Page: @1groups_create, Icon: icon-plus, Title: $@1create$).Popup(50, $@1new_group$)\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"group_name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\"})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, $@1groups$)\n Include(@1search)\n}\nDBFind(\"@1applications\").Columns(\"id,name\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\n\nDBFind(#this_table#, src_groups).Where(#where#).Order({\"deleted\": 1, \"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,group_name,image_id,creator->account,creator->member_name,date_created,date_deleted,deleted,group_access,group_info,group_type\").Custom(_id){\n If(#deleted# == 0){\n SetVar(style_text, \"text-normal\").(style_link, \"text-primary\")\n }.Else{\n SetVar(style_text, \"text-muted\").(style_link, \"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n}.Custom(_creator){\n If(And(#creator.member_name# != NULL, #creator.member_name# != \"\")){\n LinkPage(Class: #style_link# text-bold, Page: @1profile_view, PageParams: \"v_account=#creator.account#\"){\n #creator.member_name#\n }\n }\n}.Custom(_name){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1groups_view, PageParams: \"v_group_id=#id#\"){\n If(#image_id# > 0){\n Image(Src: Binary().ById(#image_id#), Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #group_name#\n }.Else{\n Div(Class: #style_link#){\n Span(Class: fa icon-settings fa-2x mr-sm)\n }.Style(\n display: inline-block;\n )\n Span(Class: btn-link text-bold pb-sm){\n Span(Class: #style_link#, Body: #group_name#)\n }.Style(\n display: inline-block;\n vertical-align: top;\n padding-top: 7px;\n padding-left: 4px;\n )\n }\n }\n}.Custom(_date){\n Div(#style_text# small){\n Div(text-nowrap){DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\")}\n If(#deleted# == 1){\n Div(text-nowrap){DateTime(DateTime: #date_deleted#, Format: \"DD.MM.YYYY HH:MI\")}\n }\n }\n}.Custom(_status){\n Span(Class: #style_text#){\n If(#deleted# == 0){\n LangRes(@1active)\n }.Else{\n LangRes(@1deleted)\n }\n }\n}.Custom(_access){\n If(#creator.account# == #account_id#){\n SetVar(access,done)\n }.Else{\n SetVar(access,)\n }\n If(And(#group_access#!=\"NULL\",#group_access# != \"\",#group_access#!=[])){\n DBFind(\"@1roles\", src_access_list).Where({\"id\": {\"$in\": #group_access#}}).Columns(\"id,role_name\").Count(access_count).Order(\"role_name\")\n Div(#style_text# breaker){\n ForList(src_access_list){\n If(#role_id# == #id#){\n SetVar(access,done)\n }\n If(#access_count# != #src_access_list_index#){\n Span(\"#role_name#,\",mr-sm)\n }.Else{\n #role_name#\n }\n }\n }\n }\n}.Custom(_actions){\n Div(text-right button-group text-nowrap){\n If(#access# == done){\n If(#deleted# == 0){\n Button(Class: btn bg-gray-lighter, Contract: @1GroupsDelete, Params: \"Ops=D,GroupId=#id#\", Page: @1groups_list){\n Em(Class: text-danger fa fa-1x fa-trash)\n }.Alert(Text: \"$@1sure_want_delete$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n Button(Class: btn bg-gray-lighter mh-sm, PageParams: \"GroupId=#id#\", Page: @1groups_create){\n Em(Class: text-default fa fa-1x fa-edit)\n }.Popup(50, $@1edit_group$)\n }.ElseIf(#deleted# == 1){\n Button(Class: btn bg-gray-lighter mh-sm, Contract: @1GroupsDelete, Params: \"Ops=R,GroupId=#id#\", Page: @1groups_list){\n Em(Class: text-info fa fa-1x fa-recycle)\n }\n }\n }\n }\n}.Custom(type_group){\n If(#deleted# == 0){\n Span(Body: AppParam(Ecosystem:1, App: #application_id#, Name: groups_types, Index:#group_type#))\n }.Else{\n Span(Body: AppParam(Ecosystem:1, App: #application_id#, Name: groups_types, Index:#group_type#), Class: text-muted)\n }\n}.Custom(join_group){\n If(#deleted# == 0){\n DBFind(\"@1groups_participants\").Columns(\"id,groups_info,groups_info->id,deleted,member,member->account\").Where({\"groups_info->id\": \"#id#\", \"deleted\": 0, \"member->account\": \"#account_id#\"}).Vars(j_l).Count(check_membership)\n If(And(#group_type# == 1, #check_membership# == 0)){\n Button(Body: $@1join_the_group$, Class: btn btn-link pull-right, Contract: @1GroupsAssign, Page: @1groups_view, PageParams: \"v_group_id=#id#\", Params: \"GroupId=#id#,MemberAccount=#account_id#\")\n }.ElseIf(And(#group_type# == 1,#check_membership# == 1)){\n Button(Body: $@1leave_the_group$, Class: btn btn-link pull-right, Contract: @1GroupsUnassign, Page: @1groups_list, Params:\"RowId=#j_l_id#\")\n }.ElseIf(And(#group_type# == 2,#check_membership# == 0)){\n Button(Body: $@1send_request$, Class: btn btn-link pull-right, Contract: @1GroupRequestMembership, Page: @1groups_view, PageParams:\"v_group_id=#id#\", Params: \"GroupId=#id#\")\n }\n }\n}.Custom(gr_info){\n If(#deleted# == 0){\n Span(Body: #group_info#)\n }.Else{\n Span(Body: #group_info#, Class: text-muted)\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_groups, \"$@1group$=_name,$@1type$=type_group,$@1id$=_id,$@1group_info$=gr_info,$@1creator$=_creator,$@1role_created_deleted$=_date,$@1status$=_status,$@1access$=_access,=join_group,=_actions\")\n }.ElseIf(#all_roles_count# > 0){\n Div(Class: text-center h4 text-muted){\n Div(Class: text-center h4 text-muted, Body: \"$@1groups$ $@1not_founded$\")\n }\n }.Else{\n Div(Class: text-center){\n Div(Class: text-center h4 text-muted, Body: \"$@1groups$ $@1not_founded$\")\n }\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_request_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"page_params->gr_id,page_params->decide,sender->image_id,recipient->member_name,recipient->account,recipient->image_id,sender->account,sender->member_name,closed\").Vars(notific)\n\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-default){\n Div(panel-heading text-center){\n If(#notific_page_params_decide# == 1){\n Span(Class: h3, Body: $@1your_request_approved$)\n }.ElseIf(#notific_page_params_decide# == -1){\n Span(Class: h3, Body: $@1your_request_denied$)\n }.Else{\n Span(Class: h3, Body: $@1request_group$)\n }\n }\n Div(panel-body){\n Div(form-group){\n Div(row){\n Div(col-md-12 mt-sm text-center){\n If(Or(#notific_page_params_decide# == 1,#notific_page_params_decide# == -1)){\n If(#notific_recipient_image_id# > 0){\n Image(Src: Binary().ById(#notific_recipient_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#notific_recipient_member_name#}\n }.Else{\n If(#notific_sender_image_id# > 0){\n Image(Src: Binary().ById(#notific_sender_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#notific_sender_member_name#}\n }\n }\n }\n }\n Div(list-group-item text-center){\n Div(text-muted m0 h5, Body: LangRes(@1address))\n If(Or(#notific_page_params_decide# == 1,#notific_page_params_decide# == -1)){\n Span(Class: h5 text-bold, Body: #notific_recipient_account#)\n }.Else{\n Span(Class: h5 text-bold, Body: #notific_sender_account#)\n }\n }\n Div(list-group-item text-center){\n DBFind(\"@1groups\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_page_params_gr_id#\"}).Vars(group)\n Div(text-muted m0 h5, Body: $@1group$)\n Span(Class: h5 text-bold, Body: #group_group_name# (#group_id#))\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n If(Or(#notific_page_params_decide# == 1,#notific_page_params_decide# == -1)){\n Button(Class: btn btn-primary mh-sm, Body: $@1close$, Contract: @1NotificationsClose, Page: @1notifications_list, Params: \"NotificId=#notific_id#\")\n }.Else{\n Button(Class: btn btn-danger mh-sm, Body: $@1reject$, Contract: @1GroupRequestDecide, Page: @1notifications_list, Params: \"NotificId=#notific_id#,Accept=0\")\n Button(Class: btn btn-success mh-sm, Body: $@1accept$, Contract: @1GroupRequestDecide, Page: @1notifications_list, Params: \"NotificId=#notific_id#,Accept=1\")\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "groups_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#page_par#!=\"\"){\n SetVar(Name: v_group_id, Value: #page_par#)\n}\n\nIf(#v_group_id# > 0){\n SetVar(this_page, @1groups_view).(this_table, @1groups_participants)\n Include(@1pager_header)\n\n DBFind(\"@1groups\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#v_group_id#\"}).Columns(\"group_name,group_type,deleted,group_access,creator->account,deleted\").Vars(prefix)\n If(#prefix_creator_account#==#account_id#){\n SetVar(manager_id,1)\n }.ElseIf(And(#prefix_group_access#!=\"NULL\",#prefix_group_access#!=\"\",#prefix_group_access#!=\"[]\",#prefix_deleted#==0)){\n DBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #prefix_group_access#}}).Columns(\"id\").Vars(manager)\n }\n\n If(#manager_id#>0){\n AddToolButton(Page: @1groups_assign, PageParams: \"v_group_id=#v_group_id#\", Icon: icon-plus, Title: $@1assign$).Popup(50, $@1assign$)\n AddToolButton(Page: @1groups_add_members, PageParams: \"v_group_id=#v_group_id#\", Icon: icon-plus, Title: $@1members_add$).Popup(50, $@1add_members_to_group$)\n }\n\n SetTitle(\"$@1group$\": #prefix_group_name#)\n Span(Class: h5 m0 mb ml-lg){\n LinkPage(Class: ml-sm, Body: $@1groups$, Page: @1groups_list)\n Span(Class: text-muted mh-sm, Body: /)\n Span(Class: text-muted, Body: #prefix_group_name#)\n }.Style(\n display: inline-block;\n )\n If(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"groups_info->id\": \"#v_group_id#\", \"member->member_name\": {\"$ilike\": \"#search#\"}})\n }.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"groups_info->id\": \"#v_group_id#\"})\n }\n\n Div(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1member)).(page_par, #v_group_id#)\n Include(@1search)\n }\n\n DBFind(#this_table#, src_participants).Where(#where#).Order({\"deleted\": 1, \"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,member->account,groups_info,groups_info->id,member->member_name,member->image_id,appointed->account,appointed->member_name,date_created,date_deleted,deleted\").Custom(custom_id){\n If(#deleted# == 0){\n SetVar(Name: style_text, Value: \"text-normal\")\n SetVar(Name: style_link, Value: \"text-primary\")\n }.Else{\n SetVar(Name: style_text, Value: \"text-muted\")\n SetVar(Name: style_link, Value: \"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n }.Custom(custom_appointed){\n If(And(#appointed.account# != \"\", #appointed.account# != NULL)){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#appointed.account#\"){\n Span(Body: #appointed.member_name#)\n }\n }\n }.Custom(custom_member){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#member.account#\"){\n If(#member.image_id#>0){\n Image(Src: Binary().ById(#member.image_id#), Class: img-circle).Style(width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#member.member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right:10px;)\n Span(#member.member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n }.Custom(custom_address){\n Span(Class: #style_text#, Body: #member.account#)\n }.Custom(custom_date){\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\"))\n If(#deleted# == 1){\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_deleted#, Format: \"DD.MM.YYYY HH:MI\"))\n }\n }.Custom(custom_status){\n If(#deleted# == 0){\n Span(Class: #style_text#, Body: LangRes(@1active))\n }.Else{\n Span(Class: #style_text#, Body: LangRes(@1deleted))\n }\n }.Custom(actions){\n Div(pull-right){\n If(#deleted#==0){\n Button(Class: btn bg-gray-lighter mh-sm, Contract: @1GroupsUnassign, Params: \"RowId=#id#\", Page: @1groups_view, PageParams: \"v_group_id=#v_group_id#\"){\n Em(Class: text-danger fa fa-1x fa-trash)\n }.Alert(Text: \"$@1sure_want_delete_member$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }.Count(count)\n\n Div(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_participants, \"$@1member$=custom_member,$@1address$=custom_address,$@1appointed$=custom_appointed,$@1appointed_deleted_member$=custom_date,$@1status$=custom_status,=actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1participants$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n }\n Div(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "members_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1members_list).(this_table, @1keys)\nInclude(@1pager_header)\n\nSetTitle(\"$@1ecosystem_members$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1ecosystem_members_list_desc$\"))\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nIf(And(#role_id# == #role_admin#, #ecosystem_id# != 1)){\n AddToolButton(Title: $@1members_add$, Page:@1ecosystem_add_members, Icon: icon-plus).Popup(50, $@1ecosystem_add_members$)\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0, \"$and\": [{\"account\": {\"$ilike\": \"#search#\"}}, {\"account\": {\"$neq\": \"#guest_account#\"}}]})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"account\": {\"$neq\": \"#guest_account#\"}, \"deleted\": 0})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1wallet))\n Include(@1search)\n}\n\nDBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"account\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(custom_id){\n SetVar(Name: style_text, Value: \"text-normal\")\n SetVar(Name: style_link, Value: \"text-primary\")\n Span(Class: h6 text-muted, Body: #account#)\n SetVar(m_account,)\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Vars(m)\n If(#m_account#){\n SetVar(image_id, #m_image_id#)\n SetVar(member_name, #m_member_name#)\n }.Else{\n SetVar(image_id, 0)\n SetVar(member_name, #account#)\n }\n}.Custom(custom_account){\n If(Or(#ecosystem_id# == 1, #custom_token_title# != \"\")){\n Button(Class: btn-xs btn-link, Page: @1tokens_send, PageParams: \"v_account=#account#\"){\n Span(Class: h5, Body: #account#)\n }.Popup(Header: $@1tokens_send$, Width: \"50\")\n }.Else{\n Span(Class: h5, Body: #account#)\n }\n}.Custom(custom_username){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\"){\n If(#image_id#>0){\n Image(Src: Binary().ById(#image_id#), Class: img-circle).Style(height: 30px; width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right:10px;)\n Span(#member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1name$=custom_username,$@1wallet$=custom_account\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1members$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "members_list_admin",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1members_list_admin).(this_table, @1keys)\nInclude(@1pager_header)\n\nSetTitle(\"$@1member_management$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1member_management_desc$\"))\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nIf(And(#role_id# == #role_admin#, #ecosystem_id# != 1)){\n AddToolButton(Title: $@1members_add$, Page: @1ecosystem_add_members, Icon: icon-plus).Popup(50, $@1ecosystem_add_members$)\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"$and\": [{\"account\": {\"$ilike\": \"#search#\"}}, {\"account\": {\"$neq\": \"#guest_account#\"}}]})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"account\": {\"$neq\": \"#guest_account#\"}})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1wallet))\n Include(@1search)\n}\n\nDBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"deleted\": 1, \"account\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(custom_id){\n If(#deleted# == 0){\n SetVar(style_text, \"text-normal\").(style_link, \"text-primary\")\n }.Else{\n SetVar(style_text,\"text-muted\").(style_link,\"text-muted\")\n }\n Span(Class: h6 text-muted, Body: #account#)\n}.Custom(custom_account){\n If(Or(#ecosystem_id# == 1, #custom_token_title# != \"\")){\n Button(Class: btn-xs btn-link, Page: @1tokens_send, PageParams: \"v_account=#account#,back_page=#this_page#\"){\n Span(Class: h5 #style_text#, Body: #account#)\n }.Popup(Header: $@1tokens_send$, Width: \"50\")\n }.Else{\n Span(Class: h5 #style_text#, Body: #account#)\n }\n}.Custom(custom_username){\n SetVar(m_account,)\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Vars(m)\n If(#m_account#){\n SetVar(image_id, #m_image_id#)\n SetVar(member_name, #m_member_name#)\n }.Else{\n SetVar(image_id, 0)\n SetVar(member_name, #account#)\n }\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\"){\n If(#image_id#>0){\n Image(Src: Binary().ById(#image_id#), Class: img-circle).Style(height: 30px; width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right: 10px;)\n Span(#member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n}.Custom(actions){\n If(#deleted#==0){\n Button(Body: LangRes(@1delete), Class: btn-xs btn-link pull-right, Page: #this_page#, Params: \"MemberAccount=#account#\", Contract: @1DeleteMember).Alert(Text: \"$@1want_delete_account$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n If(#blocked#==0){\n Button(Body: LangRes(@1block_account), Class: btn-xs btn-link pull-right, Page: #this_page#, Params: \"MemberAccount=#account#,Value=1\", Contract: @1BlockMember).Alert(Text: \"$@1want_block_account$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.Else{\n Button(Body: LangRes(@1unblock_account), Class: btn-xs btn-link pull-right, Page: #this_page#, Params: \"MemberAccount=#account#,Value=0\", Contract: @1BlockMember).Alert(Text: \"$@1want_unblock_account$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }.Else{\n Span(Class: h6 text-muted pull-right, Body: $@1deleted$)\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1name$=custom_username,$@1id$=custom_id,$@1wallet$=custom_account,=actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1members$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}\n",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "membership_admin_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1notifications\").Where({\"id\": \"#notific_id#\"}).Columns(\"page_params->ecosystem_id,sender->image_id,sender->account,sender->member_name,closed\").Vars(notific)\n DBFind(\"@1ecosystems\").Where({\"id\": \"#notific_page_params_ecosystem_id#\"}).Vars(ecosystem)\n\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-default){\n Div(panel-heading text-center){\n Span(Class: h3, Body: $@1membership_request$)\n }\n Div(panel-body){\n Div(form-group){\n Div(row){\n Div(col-md-12 mt-sm text-center){\n If(#notific_sender_image_id#>0){\n Image(Src: Binary().ById(#notific_sender_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#notific_sender_member_name#}\n }\n }\n }\n Div(list-group-item text-center){\n Div(text-muted m0 h5, Body: LangRes(@1address))\n Span(Class: h5 text-bold, Body: #notific_sender_account#)\n }\n Div(list-group-item text-center){\n Div(text-muted m0 h5, Body: LangRes(@1ecosystem))\n Span(Class: h5 text-bold, Body: `\"#ecosystem_name#\" (#ecosystem_id#)`)\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n Button(Class: btn btn-danger mh-sm, Body: $@1reject$, Contract: @1MembershipDecide, Page: @1default_page, Params: \"NotificId=#notific_id#,Accept=0\")\n Button(Class: btn btn-success mh-sm, Body: $@1accept$, Contract: @1MembershipDecide, Page: @1default_page, Params: \"NotificId=#notific_id#,Accept=1\")\n }\n }\n }\n }\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "membership_user_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"page_params->ecosystem_id,page_params->status,recipient->image_id,recipient->member_name,closed\").Vars(notific)\n DBFind(\"@1ecosystems\").Where({\"id\": \"#notific_page_params_ecosystem_id#\"}).Vars(ecosystem)\n\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-default){\n Div(panel-heading text-center){\n Span(Class: h3, Body: $@1membership_request$)\n }\n Div(panel-body){\n Div(form-group){\n Div(row){\n Div(col-md-12 mt-sm text-center){\n If(#notific_recipient_image_id# > 0){\n Image(Src: Binary().ById(#notific_recipient_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#notific_recipient_member_name#}\n }\n }\n }\n If(#notific_page_params_status# == 1){\n Div(list-group-item text-center){\n Div(Class: m0 h5 text-bold, Body: $@1request_to_membership$:)\n Div(Class: m0 h5 text-normal, Body: `\"#ecosystem_name#\" (#ecosystem_id#)`)\n Div(Class: m0 h5 text-bold, Body: $@1is_accepted$!)\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n Button(Class: btn btn-success, Body: $@1close$, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: \"@1default_page\")\n }\n }\n }\n }.Else{\n Div(list-group-item text-center){\n Div(Class: m0 h5 text-bold, Body: $@1request_to_membership$:)\n Div(Class: m0 h5 text-normal, Body: \"#ecosystem_name#\" (#ecosystem_id#))\n Div(Class: m0 h5 text-bold, Body: $@1is_rejected$!)\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n Button(Class: btn btn-danger, Body: $@1close$, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1default_page)\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "message_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1message_create)\n\nIf(#EcosystemId# == \"\"){\n SetVar(EcosystemId, #ecosystem_id#)\n}\nIf(#MemberAccount#){\n SetVar(MemberAccountInputValue, #MemberAccount#)\n}.Else{\n SetVar(MemberAccount, 0)\n SetVar(MemberAccountInputValue,)\n}\n\nIf(#RoleId#){\n SetVar(broadcast_type_value, \"role\")\n}.ElseIf(#GroupId#){\n SetVar(broadcast_type_value, \"group\")\n}.Else{\n SetVar(broadcast_type_value, \"member\")\n}\n\nForm(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1recipient)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Data(src_broadcast_type, \"type,translation\"){\n member,$@1member$\n role,$@1role$\n group,$@1group$\n }\n Select(Name: broadcast_type, Source: src_broadcast_type, NameColumn: translation, ValueColumn: type, Value: #broadcast_type_value#)\n }\n }\n Div(row mt){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1member)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: MemberAccount, Type: hidden, Value: #MemberAccount#)\n Div(input-group){\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccountInputValue#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams: \"back_page=#this_page#,back_header=$@1message_create$,EcosystemId=#EcosystemId#\").Popup(Header: $@1member$, Width: \"50\")\n }\n }\n }\n }.Show(\"broadcast_type=member\")\n Div(row mt){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n If(RoleId == \"\"){\n SetVar(RoleId, 0)\n SetVar(RoleName,)\n }.Else{\n Input(Name: Rid, Type: hidden, Value: #RoleId#)\n }\n Div(input-group){\n If(#RoleId# > 0){\n SetVar(Id, #RoleId#)\n DBFind(\"@1roles\").WhereId(#RoleId#).Columns(\"role_name\").Vars(r)\n }\n Input(Name: m_name, Disabled: 1, Value: #r_role_name#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_role, PageParams: \"back_page=@1message_create,back_header=$@1message_create$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1role$, Width: \"50\")\n }\n }\n }\n }.Show(\"broadcast_type=role\")\n Div(row mt){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1group)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n If(GroupId == \"\"){\n SetVar(GroupId, 0)\n SetVar(GroupName,)\n }.Else{\n Input(Name: GroupId, Type: hidden, Value: #GroupId#)\n }\n Div(input-group){\n If(#GroupId# > 0){\n SetVar(Id, #GroupId#)\n DBFind(\"@1groups\").WhereId(#GroupId#).Columns(\"group_name\").Vars(g)\n }\n Input(Name: m_name, Disabled: 1, Value: #g_group_name#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_group, PageParams: \"back_page=@1message_create,back_header=$@1message_create$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1group$, Width: \"50\")\n }\n }\n }\n }.Show(\"broadcast_type=group\")\n Div(row mt){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1message_subject)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Header, Value: \"\", Placeholder: $@1message_subject_type_here$)\n }\n }\n Div(row mt){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1message_text)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Type: Hidden, Name: EcosystemId, Value: \"#ecosystem_id#\")\n Input(Type: Hidden, Name: Sender, Value: \"1\")\n Input(Type: Hidden, Name: Icon, Value: \"icon-speech\")\n Input(Type: Hidden, Name: Params, Value: `{\"type\": \"message\"}`)\n Input(Type: Hidden, Name: Page, Value: \"@1message_view\")\n Input(Type: textarea, Name: Body, Value: \"\", Placeholder: $@1message_type_here$).Style(resize: vertical; min-height: 6em;)\n }\n }\n Div(row mt){\n Div(col-md-12){\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right, Page: @1messages_list, Contract: @1NotificationsSend, Params: \"Rid=0,GroupId=0,CurrentRid=#role_id#\")\n }.Show(\"broadcast_type=member\")\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right, Page: @1messages_list, Contract: @1NotificationsSend, Params: \"MemberAccount=0,GroupId=0,CurrentRid=#role_id#,Closure=2\")\n }.Show(\"broadcast_type=role\")\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right, Page: @1messages_list, Contract: @1NotificationsSend, Params: \"MemberAccount=0,Rid=0,CurrentRid=#role_id#\")\n }.Show(\"broadcast_type=group\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: @1messages_list)\n }\n }\n}.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n)",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "message_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#notific_id# > 0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"id,sender->account,sender->member_name,sender->image_id,recipient->account,recipient->member_name,notification->body,notification->header,page_params->thread,date_created,closed\").Vars(message)\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#message_sender_account#\"}).Vars(highlighted)\n If(#highlighted_account#){\n SetVar(message_sender_member_name, #highlighted_member_name#)\n SetVar(message_sender_image_id, #highlighted_image_id#)\n }\n\n If(#message_page_params_thread# > 0){\n SetVar(thread, #message_page_params_thread#)\n DBFind(\"@1notifications\",src_thread).Where({\"ecosystem\": \"#ecosystem_id#\", \"page_params->thread\": \"#message_page_params_thread#\"}).Order(\"id\").Count(\"thread_quantity\").Columns(\"id,sender->account,sender->member_name,sender->image_id,notification->body,date_created\")\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#message_page_params_thread#\"}).Columns(\"id,sender->account,sender->member_name,sender->image_id,recipient->account,notification->body,date_created\").Vars(init_message)\n }.Else{\n SetVar(thread, #message_id#)\n DBFind(\"@1notifications\",src_thread).Where({\"ecosystem\": \"#ecosystem_id#\", \"page_params->thread\": \"#message_id#\"}).Order(\"id\").Count(\"thread_quantity\").Columns(\"id,sender->account,sender->member_name,sender->image_id,notification->body,date_created\")\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#message_id#\"}).Columns(\"id,sender->account,sender->member_name,sender->image_id,recipient->account,notification->body,date_created\").Vars(init_message)\n }\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#init_message_sender_account#\"}).Vars(starter)\n If(#starter_account#){\n SetVar(init_message_sender_member_name, #starter_member_name#)\n SetVar(init_message_sender_image_id, #starter_image_id#)\n }\n\n If(#init_message_sender_account# != #account_id#){\n SetVar(reply_recipient, #init_message_sender_account#)\n }.Else{\n SetVar(reply_recipient, #init_message_recipient_account#)\n }\n If(#message_notification_header# == \"\"){\n SetVar(thread_name, $@1message_subject_empty$)\n }.Else{\n SetVar(thread_name, #message_notification_header#)\n }\n\n SetTitle($@1messenger$)\n Span(Class: h5 m0 ml-lg){\n LinkPage(Class: ml-sm, Body: $@1messenger$, Page: @1messages_list)\n Span(Class: text-muted mh, Body: /)\n Span(Class: text-muted, Body: $@1message_view$)\n }.Style(\n display: inline-block;\n )\n\n Form(){\n Div(content-wrapper){\n Div(row){\n Div(col-lg-6 col-lg-offset-3 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1){\n Form(panel panel-primary){\n Div(text-center pt){\n If(#message_sender_account# == #account_id#){\n Span(Class: h4 text-bold, Body: LangRes(@1message_from_you))\n }.Else{\n Span(Class: h4 text-bold, Body: LangRes(@1message_from) #message_sender_member_name#)\n }\n }\n Div(panel-body pt pb){\n Div(list-group-item wrapper-block){\n Div(avatar-block text-center){\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#message_sender_account#\"){\n If(#message_sender_image_id# > 0){\n Image(Src: Binary().ById(#message_sender_image_id#), Class: img-circle avatar)\n }.Else{\n Span(Class: fa icon-user fa-3x)\n }\n Div(preview m0 h5){#message_sender_member_name#}\n }\n }\n Div(message-block){\n Span(Class: h5, Body: #message_notification_body#)\n }\n Div(datetime-block text-muted){\n Span(Class: mb-sm h6, Body: DateTime(#message_date_created#,HH:MI DD.MM.YYYY))\n }\n }\n Div(row mt-lg){\n Div(col-md-12 text-left){\n Label(){\n If(#message_sender_account# != #account_id#){\n Span(Body: LangRes(@1reply_text))\n }.Else{\n Span(Body: LangRes(@1message_text))\n }\n }\n Input(Type: Hidden, Name: MemberAccount, Value: \"#reply_recipient#\")\n Input(Type: Hidden, Name: EcosystemId, Value: \"#ecosystem_id#\")\n Input(Type: Hidden, Name: Sender, Value: \"1\")\n Input(Type: Hidden, Name: Icon, Value: \"icon-speech\")\n Input(Type: Hidden, Name: Params, Value: `{\"type\":\"message\",\"thread\":\"#thread#\"}`)\n Input(Type: Hidden, Name: Page, Value: \"@1message_view\")\n Input(Type: Hidden, Name: Header, Value: \"#thread_name#\")\n Input(Type: textarea, Name: Body, Value: \"\", Placeholder: $@1message_type_here$).Style(resize: vertical; min-height: 6em;)\n }\n }\n If(#message_sender_account# == #account_id#){\n SetVar(send_button, $@1send$)\n }.Else{\n SetVar(send_button, $@1reply$)\n }\n If(And(#message_closed# == 0, Or(#message_sender_account# != #account_id#, #message_recipient_account# == #account_id#))){\n Div(mt text-right){\n Button(Body: LangRes(@1mark_read), Class: btn btn-default, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1messages_list)\n Button(Body: #send_button#, Class: btn btn-primary, Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#\", Page: @1message_view, PageParams: \"notific_id=#message_id#\").CompositeContract(@1NotificationsClose, [{\"NotificId\": #notific_id#}])\n }\n }.Else{\n Div(mt text-right){\n Button(Body: #send_button#, Class: btn btn-primary, Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#\", Page: @1message_view, PageParams: \"notific_id=#message_id#\")\n }\n }\n }\n }\n }\n }\n If(#thread_quantity# > 0){\n Div(row){\n Div(col-lg-6 col-lg-offset-3 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1){\n Div(list-group-item text-center){\n Span(Class: h4 text-bold, Body: #thread_name#)\n }\n Div(list-group-item wrapper-block){\n Div(avatar-block text-center){\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#init_message_sender_account#\"){\n If(#init_message_sender_image_id# > 0){\n Image(Src: Binary().ById(#init_message_sender_image_id#), Class: img-circle avatar)\n }.Else{\n Span(Class: fa icon-user fa-3x)\n }\n Div(preview m0 h5){#init_message_sender_member_name#}\n }\n }\n Div(message-block){\n Span(Class: h5, Body: #init_message_notification_body#)\n }\n Div(datetime-block text-muted){\n Span(Class: badge mr, Body: 1)\n Span(Class: mb-sm h6, Body: DateTime(#init_message_date_created#,HH:MI DD.MM.YYYY))\n }\n }\n ForList(src_thread){\n Div(list-group-item wrapper-block){\n Div(avatar-block text-center){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#sender.account#\"}).Vars(thread_message)\n If(#thread_message_account# == \"\"){\n SetVar(thread_message_member_name, #sender.member_name#)\n SetVar(thread_message_image_id, #sender.image_id#)\n }\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#sender.account#\"){\n If(#thread_message_image_id# > 0){\n Image(Src: Binary().ById(#thread_message_image_id#), Class: img-circle avatar)\n }.Else{\n Span(Class: fa icon-user fa-3x)\n }\n Div(preview m0 h5){#thread_message_member_name#}\n }\n }\n Div(message-block){\n Span(Class: h5, Body: #notification.body#)\n }\n Div(datetime-block text-muted){\n Span(Class: badge mr, Body: Calculate(#src_thread_index# + 1))\n Span(Class: mb-sm h6, Body: DateTime(#date_created#, HH:MI DD.MM.YYYY))\n }\n }\n }\n }\n }\n }\n }\n }.Style(\n .preview {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n .wrapper-block {min-height: 80px;}\n .avatar-block {\n position: absolute;\n width: 70px;\n }\n .message-block {\n margin-left: 85px;\n margin-bottom: 15px;\n }\n .datetime-block {\n position: absolute;\n bottom: 5px;\n right: 10px;\n }\n .avatar {\n max-width: 42px;\n max-height: 42px;\n border: 1px solid #bbb;\n }\n .badge {margin-top: -2px;}\n )\n}.Else{\n Div(col-md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "messages_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1notifications\",threads).Where({\"ecosystem\": \"#ecosystem_id#\", \"page_params->type\": \"message\", \"$or\": [{\"sender->account\": \"#account_id#\"}, {\"recipient->account\": \"#account_id#\"}]}).Order({\"id\": \"-1\"}).Limit(250).Count(threads_count).Columns(\"id,sender->account,sender->member_name,sender->image_id,recipient->account,recipient->member_name,notification->body,notification->header,page_params->thread,date_created,closed\")\n\nDiv(content-wrapper){\n Div(row){\n Div(col-lg-6 col-lg-offset-3 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1){\n Div(list-group-item text-center p0){\n Span(Class: h4 text-bold vc, Body: LangRes(@1message_active_threads))\n Button(Class: btn-xs btn-link plus-button p0 b0, Page: @1message_create){\n Span(Class: fa fa-2x icon-plus vc)\n }.Popup(50, $@1message_create$)\n }.Style(\n .plus-button {\n position: absolute;\n right: 10px;\n }\n )\n If(#threads_count# > 0){\n ForList(threads){\n If(#page_params.thread# > 0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"page_params->thread\": \"#page_params.thread#\"}).Order({\"id\": \"-1\"}).Limit(1).Columns(\"id\").Vars(last)\n }.Else{\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"page_params->thread\": \"#id#\"}).Count(thread_depth)\n }\n If(Or(#id# == #last_id#, #thread_depth# == 0)){\n If(And(#closed# == 0, Or(#sender.account# != #account_id#, #recipient.account# == #account_id#))){\n SetVar(status, \"unread\")\n }.Else{\n SetVar(status, \"read\")\n }\n Div(list-group-item col-sm-12 thread-block #status#){\n Div(avatar-block text-center){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#id#\"}).Columns(\"sender->account,recipient->account,sender->member_name,recipient->member_name,sender->image_id,recipient->image_id\").Vars(init_message)\n If(#init_message_sender_account# != #account_id#){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#init_message_sender_account#\"}).Vars(talker)\n If(#talker_account#){\n SetVar(talker_name, #talker_member_name#)\n SetVar(talker_picture, #talker_image_id#)\n }.Else{\n SetVar(talker_account, #init_message_sender_account#)\n SetVar(talker_name, #init_message_sender_member_name#)\n SetVar(talker_picture, #init_message_sender_image_id#)\n }\n }.Else{\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#init_message_recipient_account#\"}).Vars(talker)\n If(#talker_account#){\n SetVar(talker_name, #talker_member_name#)\n SetVar(talker_picture, #talker_image_id#)\n }.Else{\n SetVar(talker_account, #init_message_recipient_account#)\n SetVar(talker_name, #init_message_recipient_member_name#)\n SetVar(talker_picture, #init_message_recipient_image_id#)\n }\n }\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#talker_account#\"){\n If(#talker_picture# > 0){\n Image(Src: Binary().ById(#talker_picture#), Class: img-circle avatar)\n }.Else{\n Span(Class: fa icon-user fa-3x)\n }\n Div(preview m0 h5){#talker_name#}\n }\n }\n Div(message-block){\n LinkPage(Page: @1message_view, PageParams: \"notific_id=#id#\"){\n If(#notification.header# == \"\"){\n Div(Class: preview h4 m0, Body: LangRes(@1message_subject_empty))\n }.Else{\n Div(Class: preview h4 m0, Body: #notification.header#)\n }\n If(#sender.account# == #account_id#){\n Div(Class: preview text-muted, Body: $@1you$: #notification.body#)\n }.Else{\n Div(Class: preview text-muted, Body: #notification.body#)\n }\n }\n }\n Div(datetime-block text-muted){\n If(#status# == \"unread\"){\n Span(Class: badge mr, Body: LangRes(@1unread))\n }\n Span(Class: h6, Body: DateTime(#date_created#, HH:MI DD.MM.YYYY))\n }\n }\n }\n }\n }.Else{\n Div(list-group-item text-center text-muted){\n $@1messages_empty$\n }\n }\n }\n }.Style(\n .thread-block {height: 80px;}\n .avatar-block {\n position: absolute;\n width: 70px;\n }\n .message-block {margin-left: 85px;}\n .datetime-block {\n position: absolute;\n bottom: 5px;\n right: 10px;\n }\n .preview {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n .avatar {\n max-width: 42px;\n max-height: 42px;\n border: 1px solid #bbb;\n }\n .badge {margin-top: -2px;}\n .unread {background-color: #f7fafe;}\n .vc {line-height: 44px;}\n )\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1notifications\",notification_singles).Where({\"ecosystem\": \"#ecosystem_id#\", \"closed\": 0, \"notification->type\": 1, \"recipient->account\": \"#account_id#\"}).Columns(\"id,page_name,notification->icon,notification->header,notification->popup,notification->body\").Count(count_singles)\n\nDBFind(\"@1notifications\",notification_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"closed\": 0, \"notification->type\": 2, \"recipient->role_id\": \"#role_id#\", \"$or\": [{\"date_start_processing\": 0}, {\"processing_info->account\": \"#account_id#\"}]}).Columns(\"id,page_name,notification->icon,notification->header,notification->popup,notification->body,recipient->role_id\").Count(count_current_role)\n\nSetVar(limit,10).(limit_count,#limit#)\nSetVar(remaining,Calculate(#count_singles#+#count_current_role#-#limit#))\n\nIf(And(#limit_count#>0,#count_singles#>0)){\n ForList(notification_singles){\n If(#limit_count#>0){\n SetVar(limit_count,Calculate(#limit_count#-1))\n If(#notification.popup#==1){\n Div(list-group-item){\n Button(Class: btn-link m0 p0 b0 text-left vm, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Div(media-box clearfix){\n Div(pull-left){\n Em(Class: fa #notification.icon# fa-1x text-primary)\n }\n Div(media-box-body){\n Div(Class: m0 text-normal h6, Body: #notification.header#)\n Div(Class: m0 text-muted h6, Body: #notification.body#)\n }\n }\n }.Popup(Header: $@1notifications_view$, Width: \"40\")\n }.Style(.vm{vertical-align: middle;})\n }.Else{\n Div(list-group-item){\n Button(Class: btn-link m0 p0 b0 text-left vm, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Div(media-box clearfix){\n Div(pull-left){\n Em(Class: fa #notification.icon# fa-1x text-primary)\n }\n Div(media-box-body){\n Div(Class: m0 text-normal h6, Body: #notification.header#)\n Div(Class: m0 text-muted h6, Body: #notification.body#)\n }\n }\n }\n }.Style(.vm{vertical-align: middle;})\n }\n }\n }\n}\n\nIf(And(#limit_count#>0,#count_current_role#>0)){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_id#\"}).Columns(\"role_name\").Vars(role)\n Div(dropdown-heading b0){\n $@1role_notifics$ (#role_role_name#)\n }\n ForList(notification_roles){\n If(#limit_count#>0){\n SetVar(limit_count,Calculate(#limit_count#-1))\n If(#notification.popup#==1){\n Div(list-group-item){\n Button(Class: btn-link m0 p0 b0 text-left vm, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Div(media-box clearfix){\n Div(pull-left){\n Em(Class: fa #notification.icon# fa-1x text-primary)\n }\n Div(media-box-body){\n Div(Class: m0 text-normal h6, Body: #notification.header#)\n Div(Class: m0 text-muted h6, Body: #notification.body#)\n }\n }\n }.Popup(Header: $@1notifications_view$, Width: \"40\")\n }.Style(.vm{vertical-align: middle;})\n }.Else{\n Div(list-group-item){\n Button(Class: btn-link m0 p0 b0 text-left vm, Page: #page_name#, PageParams: \"notific_id=#id#\"){\n Div(media-box clearfix){\n Div(pull-left){\n Em(Class: fa #notification.icon# fa-1x text-primary)\n }\n Div(media-box-body){\n Div(Class: m0 text-normal h6, Body: #notification.header#)\n Div(Class: m0 text-muted h6, Body: #notification.body#)\n }\n }\n }\n }.Style(.vm{vertical-align: middle;})\n }\n }\n }\n}\n\nIf(#remaining#>0){\n Button(Class: btn btn-block btn-default, Page: @1notifications_list){\n $@1notifications_show_all$ (#remaining# $@1more$)\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_broadcast",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nDBFind(\"@1ecosystems\").Count(ecos_count)\nForm(){\n If(And(#role_id# == #role_admin#, #ecosystem_id# == 1, #ecos_count# > 1)){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1recipient)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Value: $@1ecosystems_administrators$, Disabled: true)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1header)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Header)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1body_text)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Body, Type: textarea).Style(resize: vertical;)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1popup))\n }\n }.Style(line-height: 18px;)\n Div(col-md-9 text-left){\n Input(Name: Popup, Type: checkbox, Value: false, Class: mt-sm)\n }\n }\n }.Else{\n Div(col-sm-12 alert alert-warning text-center){\n If(#role_id# != #role_admin#){\n LangRes(@1only_admin_action)\n }\n If(#ecosystem_id#!=1){\n LangRes(@1only_first_ecosystem_action)\n }\n If(#ecos_count#==1){\n LangRes(@1other_ecosystems_not_found)\n }\n }\n }\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: @1notifications_list, Contract: @1NotificationsBroadcast, Params: \"RoleId=#role_id#\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1notifications_list)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#page_par#!=\"\"){\n SetVar(Name: type, Value: #page_par#)\n}\n\nIf(Or(#type#==0,#type#==1)){\n}.Else{\n SetVar(Name: type, Value: 0)\n}\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1notifications_list_desc$\"))\nDiv(btn-group ml-lg){\n If(#type#==0){\n Button(Body: Em(Class: fa fa-bell-o) $@1personal_notifics$, Page: @1notifications_list, PageParams: \"type=0\", Class: btn bg-gray-lighter ml-sm)\n }.Else{\n Button(Body: Em(Class: fa fa-bell-o) $@1personal_notifics$, Page: @1notifications_list, PageParams: \"type=0\", Class: btn bg-gray ml-sm)\n }\n If(#type#==1){\n Button(Body: Em(Class: fa fa-bullhorn) $@1role_notifics$, Page: @1notifications_list, PageParams: \"type=1\", Class: btn bg-gray-lighter ml-sm)\n }.Else{\n Button(Body: Em(Class: fa fa-bullhorn) $@1role_notifics$, Page: @1notifications_list, PageParams: \"type=1\", Class: btn bg-gray ml-sm)\n }\n}\nIf(#type#==0){\n Include(@1notifications_single)\n}\nIf(#type#==1){\n Include(@1notifications_roles)\n}\n",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_roles_send",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page,@1notifications_roles_send).(back_page,@1notifications_list)\nDBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\n\nIf(#EcosystemId# == \"\"){\n SetVar(EcosystemId, #ecosystem_id#)\n}\n\nForm(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1ecosystem)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: EcosystemId, Type:hidden, Value: #EcosystemId#)\n Div(input-group){\n DBFind(\"@1ecosystems\").Columns(\"id,name\").WhereId(#EcosystemId#).Vars(e)\n Input(Name: e_name, Disabled: 1, Value: #e_name#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_ecosystem, PageParams:\"back_page=#this_page#,back_header=$@1send$,EcosystemId=#EcosystemId#,Type=ALL_LIST\").Popup(Header: $@1ecosystem$, Width: \"40\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1recipient)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n DBFind(\"@1roles\", source_roles).Where({\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0}).Columns(\"id,role_name\").Count(roles_count)\n If(#roles_count#>0){\n Select(Name: Rid, Source: source_roles, NameColumn: role_name, ValueColumn: id)\n }.Else{\n Div(mt-sm){\n $@1roles$ $@1not_founded$\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1closure_type)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: notification_closure, Source: src_closure_type)\n Select(Name: Closure, Source: src_closure_type, NameColumn: name, ValueColumn: id)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1sender)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: notification_sender, Source: src_sender)\n Select(Name: Sender, Source: src_sender, NameColumn: name, ValueColumn: id)\n }\n }\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1icon)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: notification_icon, Source: src_icon)\n Select(Name: Icon, Source: src_icon, NameColumn: name, ValueColumn: name)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1header)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Header, Value: \"Header text\").Validate(minLength:3, maxLength:255)\n InputErr(Name: Header, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1body_text))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Body, Type: textarea, Value: \"Body text\").Style(resize: vertical;)\n }\n }\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1page)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Page, Value: \"@1notifications_testpage\").Validate(minLength:3, maxLength:255)\n InputErr(Name: Page, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }.Show(\"Popup=false\")\n Div(col-md-9 text-left){\n Input(Name: PagePopup, Value: \"@1notifications_testpage_popup\").Validate(minLength:3, maxLength:255)\n InputErr(Name: PagePopup, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }.Show(\"Popup=true\")\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Params, Value: `{\"param_int\":\"10\",\"param_str\":\"my_string\"}`)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1popup))\n }\n }.Style(line-height: 18px;)\n Div(col-md-9 text-left){\n Input(Name: Popup, Type: checkbox, Value: false, Class: mt-sm)\n }\n }\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: #back_page#, PageParams: \"type=1\", Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#,Page=Val(Page)\")\n }.Show(\"Popup=false\")\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: #back_page#, PageParams: \"type=1\", Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#,Page=Val(PagePopup)\")\n }.Show(\"Popup=true\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"type=1\")\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_show",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\nSetTitle($@1notifications_view$)\n\nSetVar(type,0).(header,).(body,)\nDiv(content-wrapper){\n\n If(#notific_id#>0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"id,sender->type,notification->header,notification->body,date_start_processing,closed\").Vars(note)\n SetVar(type,#note_sender_type#)\n SetVar(header,#note_notification_header#)\n SetVar(body,#note_notification_body#)\n\n\n Div(row){\n Div(col-md-6 col-md-offset-3){\n Form(panel panel-primary){\n Div(panel-heading text-center){\n #header#\n }\n Div(panel-body){\n #body#\n }\n Div(panel-footer text-right){\n If(#type# == 1){\n If(#note_closed# == 0){\n Button(Body: LangRes(@1ok), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1default_page)\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1default_page)\n }\n }.ElseIf(#type# == 2){\n If(#note_closed#==0){\n If(#note_date_start_processing#==\"\"){\n Button(Body: LangRes(@1ok), Class: btn btn-primary, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: @1notifications_show)\n }.Else{\n Button(Body: LangRes(@1close), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1default_page)\n }\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1default_page)\n }\n }\n }\n }\n }\n }\n }.Else{\n Div(md-12 alert alert-danger text-center){\n LangRes(@1attention)\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_single_send",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page,@1notifications_single_send).(back_page,@1notifications_list)\nDBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\n\nIf(#EcosystemId# == \"\"){\n SetVar(EcosystemId, #ecosystem_id#)\n}\nIf(#MemberAccount#){\n SetVar(MemberAccountInputValue, #MemberAccount#)\n}.Else{\n SetVar(MemberAccount, 0)\n SetVar(MemberAccountInputValue,)\n}\n\nForm(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1ecosystem)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: EcosystemId, Type: hidden, Value: #EcosystemId#)\n Div(input-group){\n DBFind(\"@1ecosystems\").Columns(\"id,name\").WhereId(#EcosystemId#).Vars(e)\n Input(Name: e_name, Disabled: 1, Value: #e_name#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_ecosystem, PageParams:\"back_page=#this_page#,back_header=$@1send$,EcosystemId=#EcosystemId#,Type=ALL_LIST\").Popup(Header: $@1ecosystem$, Width: \"40\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1recipient)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: MemberAccount, Type: hidden, Value: #MemberAccount#)\n Div(input-group){\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccountInputValue#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=#this_page#,back_header=$@1send$,EcosystemId=#EcosystemId#\").Popup(Header: $@1member$, Width: \"50\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1sender)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: notification_sender, Source: src_sender)\n Select(Name: Sender, Source: src_sender, NameColumn: name, ValueColumn: id)\n }\n }\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1icon)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: notification_icon, Source: src_icon)\n Select(Name: Icon, Source: src_icon, NameColumn: name, ValueColumn: name)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1header)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Header, Value: \"Header text\").Validate(minLength:3, maxLength:255)\n InputErr(Name: Header, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1body_text))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Body, Type: textarea, Value: \"Body text\").Style(resize: vertical;)\n }\n }\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1page)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Page, Value: \"@1notifications_testpage\").Validate(minLength:3, maxLength:255)\n InputErr(Name: Page, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }.Show(\"Popup=false\")\n Div(col-md-9 text-left){\n Input(Name: PagePopup, Value: \"@1notifications_testpage_popup\").Validate(minLength:3, maxLength:255)\n InputErr(Name: PagePopup, minLength: $@1validate_name$, maxLength: $@1validate_role_name$)\n }.Show(\"Popup=true\")\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Params, Value: `{\"param_int\":\"10\",\"param_str\":\"my_string\"}`)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1popup))\n }\n }.Style(line-height: 18px;)\n Div(col-md-9 text-left){\n Input(Name: Popup, Type: checkbox, Value: false, Class: mt-sm)\n }\n }\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: #back_page#, Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#,Page=Val(Page)\")\n }.Show(\"Popup=false\")\n Div(){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: #back_page#, Contract: @1NotificationsSend, Params: \"CurrentRid=#role_id#,Page=Val(PagePopup)\")\n }.Show(\"Popup=true\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_testpage",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\n\n If(#notific_id#>0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"id,sender->type,notification->type,notification->header,notification->body,page_params->param_int,page_params->param_str,date_start_processing,closed\").Vars(prefix)\n SetVar(sender_type,#prefix_sender_type#).(notification_type,#prefix_notification_type#).(notific_header,#prefix_notification_header#).(notific_body,#prefix_notification_body#).(notific_val_int,#prefix_page_params_param_int#).(notific_val_str,#prefix_page_params_param_str#)\n }.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n SetVar(notific_id,\"0\").SetVar(sender_type,\"0\").(notification_type,\"0\").(notific_header,\"null\").(notific_body,\"null\").(notific_val_int,\"null\").(notific_val_str,\"null\")\n }\n\n Div(row){\n Div(col-md-6 col-md-offset-3){\n Form(){\n Div(list-group-item text-center){\n Span(Class: h3, Body: #notific_header#)\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1id))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_id#)\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1type))\n }\n Div(col-md-6 mt-sm text-left){\n If(#notification_type# > 0){\n Span(Class: h4, Body: AppParam(Ecosystem: 1, App:#application_id#, Name: notification_type, Index: #notification_type#))\n }.Else{\n Span(Class: h4, Body: #notification_type#)\n }\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1sender))\n }\n Div(col-md-6 mt-sm text-left){\n If(#sender_type# > 0){\n If(#sender_type# == 1){\n Span(Class: h4, Body: $@1member$)\n }\n If(#sender_type# == 2){\n Span(Class: h4, Body: $@1role$)\n }\n }.Else{\n Span(Class: h4, Body: #sender_type#)\n }\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1body_text))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_body#)\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1value_number))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_val_int#)\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1value_string))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_val_str#)\n }\n }\n }\n Div(list-group-item text-right){\n If(#prefix_closed# == 0){\n If(#notification_type# == 1){\n Button(Body: LangRes(@1close), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1notifications_list).Alert(Text: \"$@1want_close_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.ElseIf(#notification_type# == 2){\n If(#prefix_date_start_processing# == 0){\n Button(Body: LangRes(@1begin), Class: btn btn-primary, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_start_processing_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.Else{\n Button(Body: LangRes(@1close), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_close_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }.Else{\n If(#notification_type# == 1){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1notifications_list, PageParams: \"type=0\")\n }.ElseIf(#notification_type# == 2){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1notifications_list, PageParams: \"type=1\")\n }\n }\n }\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "notifications_testpage_popup",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\n\nIf(#notific_id#>0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"id,sender->type,notification->type,notification->header,notification->body,page_params->param_int,page_params->param_str,date_start_processing,closed\").Vars(prefix)\n SetVar(sender_type,#prefix_sender_type#).(notification_type,#prefix_notification_type#).(notific_header,#prefix_notification_header#).(notific_body,#prefix_notification_body#).(notific_val_int,#prefix_page_params_param_int#).(notific_val_str,#prefix_page_params_param_str#)\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n SetVar(notific_id,\"0\").SetVar(sender_type,\"0\").(notification_type,\"0\").(notific_header,\"null\").(notific_body,\"null\").(notific_val_int,\"null\").(notific_val_str,\"null\")\n}\n\nForm(){\n Div(list-group-item text-center){\n Span(Class: h3, Body: #notific_header#)\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1id))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_id#)\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1type))\n }\n Div(col-md-6 mt-sm text-left){\n If(#notification_type# > 0){\n Span(Class: h4, Body: AppParam(Ecosystem: 1, App:#application_id#, Name: notification_type, Index: #notification_type#))\n }.Else{\n Span(Class: h4, Body: #notification_type#)\n }\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1sender))\n }\n Div(col-md-6 mt-sm text-left){\n If(#sender_type# > 0){\n If(#sender_type# == 1){\n Span(Class: h4, Body: $@1member$)\n }\n If(#sender_type# == 2){\n Span(Class: h4, Body: $@1role$)\n }\n }.Else{\n Span(Class: h4, Body: #sender_type#)\n }\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1body_text))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_body#)\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1value_number))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_val_int#)\n }\n }\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Span(Class: h4, Body: LangRes(@1value_string))\n }\n Div(col-md-6 mt-sm text-left){\n Span(Class: h4, Body: #notific_val_str#)\n }\n }\n }\n Div(list-group-item text-right){\n If(#prefix_closed# == 0){\n If(#notification_type# == 1){\n Button(Body: LangRes(@1close), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1notifications_list).Alert(Text: \"$@1want_close_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.ElseIf(#notification_type# == 2){\n If(#prefix_date_start_processing# == 0){\n Button(Body: LangRes(@1begin), Class: btn btn-primary, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_start_processing_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.Else{\n Button(Body: LangRes(@1close), Class: btn btn-primary, Contract: @1NotificationsClose, Params: \"NotificId=#notific_id#\", Page: @1notifications_list, PageParams: \"type=1\").Alert(Text: \"$@1want_close_notification$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }.Else{\n If(#notification_type# == 1){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1notifications_list, PageParams: \"type=0\")\n }.ElseIf(#notification_type# == 2){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1notifications_list, PageParams: \"type=1\")\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "platform_apps_settings",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(app)\n\nSetVar(this_page, \"@1platform_apps_settings\").(role_admin,0).(role_consortium_member_candidate,0).(role_consortium_member,0).(role_delegate,0).(role_developer,0).(role_investor_with_voting_rights,0).(role_creates_roles,0)\nSetVar(role_admin, AppParam(App: #app_id#, Name: \"role_admin\"))\nSetVar(role_consortium_member_candidate, AppParam(App: #app_id#, Name: \"role_consortium_member_candidate\"))\nSetVar(role_consortium_member, AppParam(App: #app_id#, Name: \"role_consortium_member\"))\nSetVar(role_delegate, AppParam(App: #app_id#, Name: \"role_delegate\"))\nSetVar(role_developer, AppParam(App: #app_id#, Name: \"role_developer\"))\nSetVar(role_investor_with_voting_rights, AppParam(App: #app_id#, Name: \"role_investor_with_voting_rights\"))\nSetVar(role_creates_roles, AppParam(App: #app_id#, Name: \"role_creates_roles\"))\n\nDBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0}).Columns(\"role_name,id\").Limit(100)\n\nSetVar(row,\"row mt-sm\").(col_left,\"col-sm-4 text-right mt-sm\").(col_right,\"col-sm-8 text-left\")\n\nDiv(content-wrapper){\n Div(row){\n Div(col-lg-6 col-lg-offset-3 col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1){\n Form(panel panel-primary){\n Div(panel-body){\n Div(text-center text-bold h4 m0){\n LangRes(@1pa_settings)\n }\n Div(text-center text-muted){\n LangRes(@1pa_settings_description)\n }\n Div(row mt-lg){\n Div(#col_left#){\n Label(){\n \"Admin\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleAdmin, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_admin#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_admin# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_admin#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n Div(#row#){\n Div(#col_left#){\n Label(){\n \"Developer\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleDeveloper, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_developer#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_developer# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_developer#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n If(#ecosystem_id# == 1){\n Div(#row#){\n Div(#col_left#){\n Label(){\n \"Consortium Member Candidate\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleConsortiumMemberCandidate, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_consortium_member_candidate#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_consortium_member_candidate# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_consortium_member_candidate#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n Div(#row#){\n Div(#col_left#){\n Label(){\n \"Consortium Member\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleConsortiumMember, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_consortium_member#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_consortium_member# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_consortium_member#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n Div(#row#){\n Div(#col_left#){\n Label(){\n \"Delegate\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleDelegate, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_delegate#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_delegate# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_delegate#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n Div(#row#){\n Div(#col_left#){\n Label(){\n \"Investor with Voting Rights\"\n }\n }\n Div(#col_right#){\n Select(Name: RoleInvestor, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_investor_with_voting_rights#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_investor_with_voting_rights# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_investor_with_voting_rights#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n }\n Div(#row#){\n Div(#col_left#){\n Label(){\n LangRes(@1role_creates_roles)\n }\n }\n Div(#col_right#){\n Select(Name: RoleCreatesRoles, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #role_creates_roles#)\n Div(m0 h6 text-muted){\n SetVar(r_name, $@1role_not_found$)\n If(#role_creates_roles# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#role_creates_roles#\"}).Columns(\"role_name\").Vars(r)\n SetVar(r_name, #r_role_name#)\n }\n LangRes(@1current_value): #r_name#\n }\n }\n }\n }\n Div(panel-footer text-right){\n Button(Body: $@1apply_settings$, Class: btn btn-primary, Page: #this_page#, Contract: @1PlatformAppsSettings)\n }\n }\n }\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "profile_edit",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(member_image_id, 0)\nDBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account_id#\"}).Columns(\"account,member_name,image_id,member_info->information\").Vars(member)\nDBFind(\"@1buffer_data\").Columns(\"value->id,value->member_name,value->image_id,value->member_info_information\").Where({\"ecosystem\": \"#ecosystem_id#\", \"key\": \"edit_profile_form\", \"account\": \"#account_id#\"}).Vars(buffer)\nIf(#buffered# == 1){\n SetVar(member_member_name, #buffer_value_member_name#)\n SetVar(member_member_info_information, #buffer_value_member_info_information#)\n}\nIf(#uploaded# == 1){\n DBFind(\"@1buffer_data\").Columns(\"value->binary_id\").Where({\"ecosystem\": \"#ecosystem_id#\", \"key\": \"avatar\", \"account\": \"#account_id#\"}).Vars(avatar)\n SetVar(member_image_id, #avatar_value_binary_id#)\n}.ElseIf(#buffered# == 1){\n SetVar(member_image_id, #buffer_value_image_id#)\n}\n\nForm(){\n Div(row){\n Div(col-md-4 mt-sm text-center){\n SetVar(ParamNames, \"id;member_name;image_id;member_info_information\")\n Button(Class: btn btn-link, Page: @1upload_page, PageParams: \"back_page=@1profile_edit,back_page_popup=50,back_page_popup_header=$@1editing_profile$,application_id=#application_id#,buffer_key=avatar\", Contract: @1FormStateSave, Params: \"AppId=#application_id#,FormName=edit_profile_form,ParamNames=#ParamNames#,Param1=#account_id#,Param2=Val(Name),Param3=Val(ImageId),Param4=Val(Info)\"){\n If(#member_image_id# > 0){\n Input(Name: ImageId, Type: hidden, Value: #member_image_id#)\n Image(Src: Binary().ById(#member_image_id#), Class: img-thumbnail).Style(width: 140px; border: 1px solid #5A5D63;)\n Div(Body: $@1edit_avatar$)\n }.Else{\n Input(Name: ImageId, Type: hidden, Value: 0)\n Span(Class: fa icon-user fa-5x).Style(margin-top:20px;)\n Div(Body: $@1edit_avatar$)\n }\n }.Popup(Header: $@1avatar$, Width: 30)\n }\n Div(col-md-8 mt-sm){\n Div(form-group){\n Label(){\n Span(Body: LangRes(@1member_name)).(Class: text-danger, Body: *)\n }\n If(#member_account#){\n Input(Name: Name, Value: #member_member_name#, Disabled: true)\n }.Else{\n Input(Name: Name, Value: #member_member_name#).Validate(minLength:5, maxLength:20)\n InputErr(Name: Name, minLength: $@1validate_member_name$, maxLength: $@1validate_member_name$)\n }\n }\n Div(form-group){\n Label(){\n Span(Body: LangRes(@1information))\n }\n Input(Name: Info, Type: textarea, Value: #member_member_info_information#).Style(resize: vertical;)\n }\n }\n }\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: @1profile_view, Contract: @1ProfileEdit).Alert(Text: \"$@1want_save_changes$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: @1profile_view)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "profile_transactions",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1profile_transactions).(this_table, @1history)\nInclude(@1pager_header)\n\nSetTitle($@1transactions_history$)\n\nIf(#ecosystem_id# == 1){\n SetVar(token_title, \"APLA\")\n}.Else{\n DBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\n SetVar(token_title, #custom_token_title#)\n}\nIf(#wallet#){\n SetVar(wallet_address, #wallet#)\n SetVar(wallet, AddressToId(#wallet#))\n}.Else{\n SetVar(wallet, 0)\n}\nSetVar(account_key, AddressToId(#account_id#))\n\nIf(#new_filter#){\n If(#show_fees#!=\"true\"){\n SetVar(filter1, `, {\"type\": {\"$neq\": 1}}`)\n }\n If(#wallet# != 0){\n SetVar(filter2, `, {\"$or\": [{\"$and\": [{\"sender_id\": #account_key#}, {\"recipient_id\": #wallet#}]}, {\"$and\": [{\"sender_id\": #wallet#}, {\"recipient_id\": #account_key#}]}]}`)\n }.Else{\n SetVar(filter2, `, {\"$or\": [{\"sender_id\": #account_key#}, {\"recipient_id\": #account_key#}]}`)\n }\n If(#lower_limit#>0){\n If(#upper_limit#>0){\n SetVar(filter3, `, {\"amount\": [{\"$gte\": Calculate(Exp: #lower_limit#*1000000000000000000, Type: money)}, {\"$lte\": Calculate(Exp: #upper_limit#*1000000000000000000, Type: money)}]}`)\n }.Else{\n SetVar(filter3, `, {\"amount\": {\"$gte\": Calculate(Exp: #lower_limit#*1000000000000000000, Type: money)}}`)\n }\n }.ElseIf(#upper_limit#>0){\n SetVar(filter3, `, {\"amount\": {\"$lte\": Calculate(Exp: #upper_limit#*1000000000000000000, Type: money)}}`)\n }\n SetVar(filters, {\"$and\": [{\"ecosystem\": \"#ecosystem_id#\"} #filter1# #filter2# #filter3#]})\n SetVar(page_par, #filters#)\n}.ElseIf(#page_par#){\n SetVar(filters, #page_par#)\n}.Else{\n SetVar(filters, {\"$and\": [{\"ecosystem\": \"#ecosystem_id#\"}, {\"type\": {\"$neq\": 1}}, {\"$or\": [{\"sender_id\": #account_key#}, {\"recipient_id\": #account_key#}]}]})\n}\n\nIf(#search#){\n SetVar(where, {\"$and\": [#filters#, {\"comment\": {\"$ilike\": \"#search#\"}}]})\n}.Else{\n SetVar(where, #filters#)\n}\n\nDiv(mr-lg text-right){\n Button(Page: @1profile_transactions_filter, Class: btn bg-gray-lighter mr-sm, PageParams: \"show_fees=#show_fees#,MemberAccount=#wallet_address#,lower_limit=#lower_limit#,upper_limit=#upper_limit#\", Body: Em(Class: fa fa-filter) $@1filter$).Popup(Header: $@1filter$, Width: \"50\")\n If(#page_par#){\n Button(Page: #this_page#, Class: btn bg-gray-lighter mr-sm, Body: Em(Class: fa fa-close))\n }\n}.Style(margin-top: -33px; z-index: 1001;)\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1comment))\n Include(@1search)\n}\n\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\n\nDBFind(\"@1history\", src_history).Where(#where#).Order({\"id\": \"-1\"}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(sender_wallet){\n If(#sender_id# != 0){\n SetVar(sender_address, Address(#sender_id#))\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#sender_address#\"){\n #sender_address#\n }\n }\n}.Custom(recipient_wallet){\n SetVar(recipient_address, Address(#recipient_id#))\n LinkPage(Page: @1profile_view, PageParams: \"v_account=#recipient_address#\"){\n #recipient_address#\n }\n}.Custom(amount_apl){\n Span(Money(#amount#) #token_title#)\n}.Custom(_type){\n AppParam(Ecosystem: 1, App: #application_id#, Name: type_tokens_transfer, Index: #type#)\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_history, \"$@1block$=block_id,$@1sender$=sender_wallet,$@1recipient$=recipient_wallet,$@1amount$=amount_apl,$@1comment$=comment,$@1type$=_type\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1transactions_history_empty$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "profile_transactions_filter",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page,@1profile_transactions_filter)\n\nIf(#EcosystemId# == \"\"){\n SetVar(EcosystemId, #ecosystem_id#)\n}\nIf(#MemberAccount#){\n SetVar(MemberAccountInputValue, #MemberAccount#)\n SetVar(MemberAccount, AddressToId(#MemberAccount#))\n}.Else{\n SetVar(MemberAccount, 0)\n}\n\nIf(#ecosystem_id# == 1){\n SetVar(token_title, \"APLA\")\n}.Else{\n DBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\n SetVar(token_title, #custom_token_title#)\n}\n\nForm(){\n Div(row){\n Div(col-md-4 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1wallet))\n }\n }\n Div(col-md-8){\n Input(Name: wallet, Type: hidden, Value: #MemberAccount#)\n Div(input-group){\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccountInputValue#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=#this_page#,back_header=$@1filter$,EcosystemId=#EcosystemId#\").Popup(Header: $@1member$, Width: \"50\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n Div(Class: m0 h6 text-muted, Body: LangRes(@1transactions_filter_wallet_desc))\n }\n }\n Div(row mt){\n Div(col-md-4 mt-sm text-right){\n Label(){\n Span(Body: $@1amount_range$ (#token_title#))\n }\n }\n Div(col-sm-3 pr0){\n If(#lower_limit# > 0){\n Input(Name: lower_limit, Placeholder: \"$@1for_example$: 0.1\", Value: #lower_limit#)\n }.Else{\n Input(Name: lower_limit, Placeholder: \"$@1for_example$: 0.1\")\n }\n Div(Class: m0 h6 text-muted, Body: LangRes(@1transactions_filter_lower_desc))\n }\n Div(col-sm-2 ph0 mt-sm text-center){\n Label(Body: \"< $@1amount$ <\")\n }\n Div(col-sm-3 pl0){\n If(#upper_limit# > 0){\n Input(Name: upper_limit, Placeholder: \"$@1for_example$: 100\", Value: #upper_limit#)\n }.Else{\n Input(Name: upper_limit, Placeholder: \"$@1for_example$: 100\")\n }\n Div(Class: m0 h6 text-muted, Body: LangRes(@1transactions_filter_upper_desc))\n }\n }\n Div(row){\n Div(col-md-4 mt text-right){\n Label(){\n Span(Body: LangRes(@1resources_fees_show))\n }\n }\n Div(col-md-8){\n If(#show_fees# == \"true\"){\n Input(Name: show_fees, Type: \"checkbox\", Value: \"true\")\n }.Else{\n Input(Name: show_fees, Type: \"checkbox\", Value: \"false\")\n }\n }\n }\n Button(Body: LangRes(@1filter), Class: btn btn-primary pull-right, Page: @1profile_transactions, PageParams: \"new_filter=1,show_fees=Val(show_fees),wallet=#MemberAccountInputValue#,lower_limit=Val(lower_limit),upper_limit=Val(upper_limit)\")\n Button(Body: LangRes(@1clear), Class: btn btn-default pull-right, Page: @1profile_transactions)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "profile_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#account_id# == #guest_account#){\n Include(@1apps_description)\n}.Else{\n Include(@1profile)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "roles_assign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"name\": \"Basic\", \"ecosystem\": 1}).Vars(application)\n\nIf(#Id#!=\"\"){\n SetVar(v_role_id, #Id#)\n}\n\nIf(#v_role_id#>0){\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#v_role_id#\"}).Columns(\"id,role_name,role_type,roles_access,creator->account,deleted\").Vars(prefix)\n If(#prefix_creator_account#==#account_id#){\n SetVar(manager_id, 1)\n }.ElseIf(And(#prefix_roles_access#!=\"NULL\",#prefix_roles_access#!=\"\",#prefix_roles_access#!=\"[]\",#role_id#>0,#prefix_deleted#==0,#prefix_role_type#!=2)){\n DBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #prefix_roles_access#}}).Columns(\"id\").Vars(manager)\n }\n\n Form(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1role)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Type: hidden, Name: Rid, Value: #prefix_id#)\n SetVar(Name: var_prefix_role_name, Value: LangRes(#prefix_role_name#))\n Input(Name: input_prefix_role_name, Value: #var_prefix_role_name#, Disabled: 1)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1type)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n SetVar(Name: var_prefix_role_type, Value: AppParam(Ecosystem:1, App:#application_id#, Name: roles_types, Index: #prefix_role_type#))\n Input(Name: input_prefix_role_type, Value: #var_prefix_role_type#, Disabled: 1)\n If(#prefix_role_type#==2){\n P(Class: m0 text-danger h6, Body: LangRes(@1elective_role_voting_only))\n }\n }\n }\n If(#prefix_role_type#!=2){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1member)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Div(input-group){\n If(#MemberAccount#){\n Input(Name: account, Type: hidden, Value: #MemberAccount#)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccount#)\n }.Else{\n Input(Name: account, Type: hidden, Value: 0)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\")\n }\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=@1roles_assign,back_header=$@1assign$,Id=#v_role_id#,EcosystemId=#ecosystem_id#\").Popup(Header: $@1member$, Width: \"50\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n }\n If(And(#manager_id#>0,#prefix_role_type#!=2)){\n Button(Body: LangRes(@1assign), Class: btn bg-primary pull-right mt, Page: @1roles_view, PageParams: \"v_role_id=#v_role_id#\", Contract: @1RolesAssign, Params: \"MemberAccount=Val(account)\").Alert(Text: \"$@1want_assign_member_to_role$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n Button(Body: LangRes(@1back), Class: btn bg-gray-lighter pull-right mt, Page: @1roles_view, PageParams: \"v_role_id=#v_role_id#\")\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "roles_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\nDBFind(\"@1roles\", src_roles).Columns(\"id,role_name\").Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0}).Order(\"id\")\nIf(#back_page#==\"\"){\n SetVar(back_page, \"@1roles_list\")\n}\n\nIf(#rid#==\"\"){\n SetVar(title, $@1new_role$)\n DBFind(\"@1buffer_data\").Where({\"ecosystem\": \"#ecosystem_id#\", \"key\": \"roles_access\", \"account\": \"#account_id#\"}).Columns(\"id,key,account,ecosystem,value->roles_access,value->role_type,value->role_name\").Vars(buffer)\n AppParam(Source: app_roles_types, Ecosystem: 1, App: #application_id#, Name: roles_types_selection)\n If(And(#buffer_value_roles_access#!=\"NULL\",#buffer_value_roles_access#!=\"\",#buffer_value_roles_access#!=\"[]\")){\n DBFind(\"@1roles\", src_roles_access).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #buffer_value_roles_access#}}).Columns(\"id,role_name\").Count(ra_count).Order(\"role_name\")\n }\n}.Else{\n SetVar(title, $@1edit_role$)\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#rid#\"}).Columns(\"roles_access,role_type,role_name\").Vars(r)\n SetVar(role_type, AppParam(Ecosystem: 1, App: #application_id#, Name: roles_types, Index: #r_role_type#))\n If(And(#r_roles_access#!=\"NULL\",#r_roles_access#!=\"\",#r_roles_access#!=\"[]\")){\n DBFind(\"@1roles\", src_roles_access).Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": {\"$in\": #r_roles_access#}}).Columns(\"id,role_name\").Count(ra_count).Order(\"role_name\")\n }\n}\n\nForm(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1name)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n If(#rid#==\"\"){\n Input(Name: Name, Value: #buffer_value_role_name#).Validate(minLength:3, maxLength:30)\n InputErr(Name: Name, minLength: $@1validate_role_name$, maxLength: $@1validate_role_name$)\n }.Else{\n Input(Name: Name, Value: #r_role_name#, Disabled: 1)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1type)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n If(#rid#==\"\"){\n Select(Name: Type, Source: app_roles_types, NameColumn: name, ValueColumn: id, Value: #buffer_value_role_type#)\n }.Else{\n Input(Name: Type, Value: #role_type#, Disabled: 1)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1roles_access)\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Div(input-group mb-sm){\n Select(Name: roles_managers, Source: src_roles, NameColumn: role_name, ValueColumn: id)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-plus mtl buttons, Page: @1roles_create, PageParams: \"rid=#rid#,back_page=#back_page#\", Contract: @1RolesAccessManager, Params: \"Rid=#rid#,ManagerRid=Val(roles_managers),Action=add\").Popup(50, #title#)\n }\n }\n If(#ra_count#>0){\n ForList(src_roles_access){\n SetVar(btn_class, \"bg-gray-lighter\")\n If(#id#==#role_id#){\n SetVar(btn_class, \"bg-primary\")\n }\n Button(Class: btn-xs #btn_class# mr-sm mb-sm, Page: @1roles_create, PageParams: \"rid=#rid#\", Contract: @1RolesAccessManager, Params: \"Rid=#rid#,ManagerRid=#id#,Action=remove\", Body: Span(Class: fa fa-remove) #role_name#).Popup(50, #title#)\n }\n }\n }\n }\n If(#rid#==\"\"){\n Button(Body: LangRes(@1create), Class: btn bg-primary pull-right mt, Page: #back_page#, PageParams: \"vID=#vID#\", Contract: @1RolesCreate)\n }\n Button(Body: LangRes(@1back), Class: btn bg-gray-lighter pull-right mt, Page: #back_page#, PageParams: \"vID=#vID#\")\n}.Style(\n .buttons{border: 1px solid #dde6e9;}\n)",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "roles_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1roles_list).(this_table, @1roles)\nInclude(@1pager_header)\n\nSetTitle(\"$@1roles$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1roles_list_desc$\"))\nAddToolButton(Page: @1roles_create, Icon: icon-plus, Title: $@1create$).Popup(50, $@1new_role$)\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"role_name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\"})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1role))\n Include(@1search)\n}\n\nDBFind(#this_table#).Where({\"ecosystem\": \"#ecosystem_id#\"}).Count(all_roles_count)\nDBFind(#this_table#, src_roles).Where(#where#).Order({\"deleted\": 1, \"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,role_name,role_type,image_id,creator->account,creator->member_name,date_created,date_deleted,deleted,roles_access\").Custom(_id){\n If(#deleted# == 0){\n SetVar(style_text,\"text-normal\").(style_link, \"text-primary\")\n }.Else{\n SetVar(style_text,\"text-muted\").(style_link, \"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n}.Custom(_creator){\n If(And(#creator.member_name#!=NULL,#creator.member_name#!=\"\")){\n LinkPage(Class: #style_link# text-bold, Page: @1profile_view, PageParams: \"v_account=#creator.account#\"){\n #creator.member_name#\n }\n }\n}.Custom(_name){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#id#\"){\n If(#image_id#>0){\n Image(Src: Binary().ById(#image_id#), Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #role_name#\n }.Else{\n Div(Class: #style_link#){\n Span(Class: fa icon-settings fa-2x mr-sm)\n }.Style(\n display: inline-block;\n )\n Span(Class: btn-link text-bold pb-sm){\n Span(Class: #style_link#, Body: #role_name#)\n }.Style(\n display: inline-block;\n vertical-align: top;\n padding-top: 7px;\n padding-left: 4px;\n )\n }\n }\n}.Custom(_date){\n Div(#style_text# small){\n Div(text-nowrap){DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\")}\n If(#deleted# == 1){\n Div(text-nowrap){DateTime(DateTime: #date_deleted#, Format: \"DD.MM.YYYY HH:MI\")}\n }\n }\n}.Custom(_type){\n DBFind(\"@1applications\").Where({\"name\": \"Basic\", \"ecosystem\": 1}).Columns(\"name,id\").Vars(application)\n Span(Class: #style_text#, Body: AppParam(Ecosystem: 1, App: #application_id#, Name: roles_types, Index: #role_type#))\n}.Custom(_status){\n Span(Class:#style_text#){\n If(#deleted# == 0){\n LangRes(@1active)\n }.Else{\n LangRes(@1deleted)\n }\n }\n}.Custom(_access){\n If(#creator.account# == #account_id#){\n SetVar(access,done)\n }.Else{\n SetVar(access,)\n }\n If(And(#roles_access#!=\"NULL\",#roles_access#!=\"\",#roles_access#!=\"[]\")){\n DBFind(\"@1roles\", src_access_list).Where({\"id\": {\"$in\": #roles_access#}}).Columns(\"id,role_name\").Count(access_count).Order(\"role_name\")\n Div(#style_text# breaker){\n ForList(src_access_list){\n If(And(#role_id#==#id#)){\n SetVar(access,done)\n }\n If(#access_count#!=#src_access_list_index#){\n Span(\"#role_name#,\",mr-sm)\n }.Else{\n #role_name#\n }\n }\n }\n }\n}.Custom(_actions){\n Div(text-right button-group text-nowrap){\n If(#access#==\"done\"){\n If(And(#deleted#==0,#role_type#!=3)){\n Button(Class: btn bg-gray-lighter, Contract: @1RolesDelete, Params: \"Ops=D,Rid=#id#\", Page: @1roles_list){\n Em(Class: text-danger fa fa-1x fa-trash)\n }.Alert(Text: \"$@1sure_want_delete$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }.ElseIf(#deleted#==1){\n Button(Class: btn bg-gray-lighter mh-sm, Contract: @1RolesDelete, Params: \"Ops=R,Rid=#id#\", Page: @1roles_list){\n Em(Class: btn-default fa fa-1x fa-recycle)\n }\n }\n If(#deleted#==0){\n Button(Class: btn bg-gray-lighter mh-sm, PageParams: \"rid=#id#\", Page: @1roles_create){\n Em(Class: text-default fa fa-1x fa-edit)\n }.Popup(50, $@1edit_role$)\n }\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_roles, \"$@1role$=_name,$@1type$=_type,$@1id$=_id,$@1creator$=_creator,$@1role_created_deleted$=_date,$@1status$=_status,$@1roles_access$=_access,=_actions\")\n }.ElseIf(#all_roles_count# > 0){\n Div(Class: text-center h4 text-muted){\n Div(Class: text-center h4 text-muted, Body: \"$@1roles$ $@1not_founded$\")\n }\n }.Else{\n Div(Class: text-center h4 text-muted){\n Button(Body: $@1install_default_roles$, Class: btn btn-primary, Page: @1roles_list, Contract: @1RolesInstall)\n }\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}\n",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "roles_request",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"role_type\": 1, \"deleted\": 0}).Columns(\"id,role_name\").Count(roles_count)\n If(#roles_count#==0){\n Div(Body: LangRes(@1no_assigned_roles))\n }.Else{\n Select(Name: Rid, Source: src_roles, NameColumn: role_name, ValueColumn: id)\n }\n }\n }\n If(#roles_count#>0){\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Contract: @1RolesRequest, Page: @1profile_view)\n }\n Button(Body: LangRes(@1close), Class: btn btn-default pull-right mt, Page: @1profile_view)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "roles_request_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Div(content-wrapper){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": #notific_id#}).Columns(\"page_params->rid,sender->image_id,sender->account,sender->member_name,closed\").Vars(notific)\n\n Div(row){\n Div(col-sm-8 col-sm-offset-2 col-lg-6 col-lg-offset-3){\n Form(panel panel-default){\n Div(panel-heading text-center){\n Span(Class: h3, Body: $@1request_to_role$)\n }\n Div(panel-body){\n Div(form-group){\n Div(row){\n Div(col-md-12 mt-sm text-center){\n If(#notific_sender_image_id#>0){\n Image(Src: Binary().ById(#notific_sender_image_id#), Class: img-thumbnail).Style(width: 120px; border: 1px solid #5A5D63;)\n }.Else{\n Span(Class: fa icon-user fa-5x)\n }\n Div(m0 h4 text-bold){#notific_sender_member_name#}\n }\n }\n }\n Div(list-group-item text-center){\n Div(text-muted m0 h5, Body: LangRes(@1address))\n Span(Class: h5 text-bold, Body: #notific_sender_account#)\n }\n Div(list-group-item text-center){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_page_params_rid#\"}).Columns(\"role_name\").Vars(r)\n Div(text-muted m0 h5, Body: LangRes(@1role))\n Span(Class: h5 text-bold, Body: #notific_page_params_rid# - #r_role_name#)\n }\n If(#notific_closed# == 0){\n Div(row){\n Div(col-md-12 mt-lg text-center){\n Input(Name: MemberAccount, Class: hidden, Value: #notific_sender_account#)\n Input(Name: Rid, Class: hidden, Value: #notific_page_params_rid#)\n Button(Class: btn btn-danger mh-sm, Body: $@1reject$, Contract: @1RolesRequestDecision, Page: @1roles_list, Params: \"NotificId=#notific_id#,Decision=0\")\n Button(Class: btn btn-success mh-sm, Body: $@1accept$, Contract: @1RolesRequestDecision, Page: @1roles_list, Params: \"NotificId=#notific_id#,Decision=1\")\n }\n }\n }\n }\n }\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "roles_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#page_par#!=\"\"){\n SetVar(Name: v_role_id, Value: #page_par#)\n}\n\nIf(#v_role_id#>0){\n SetVar(this_page, @1roles_view).(this_table, @1roles_participants)\n Include(@1pager_header)\n\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#v_role_id#\"}).Columns(\"role_name,role_type,deleted,roles_access,creator->account\").Vars(prefix)\n If(#prefix_creator_account#==#account_id#){\n SetVar(manager_id,1)\n }.ElseIf(And(#prefix_roles_access#!=\"NULL\",#prefix_roles_access#!=\"\",#prefix_roles_access#!=\"[]\",#role_id#>0,#prefix_deleted#==0,#prefix_role_type#!=2)){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": [{\"$in\": #prefix_roles_access#}, {\"$eq\": \"#role_id#\"}]}).Columns(\"id\").Vars(manager)\n }\n\n If(#manager_id#>0){\n AddToolButton(Page: @1roles_assign, PageParams: \"v_role_id=#v_role_id#\", Icon: icon-plus, Title: $@1assign$).Popup(50, $@1assign$)\n }\n\n SetTitle(\"$@1role$\": #prefix_role_name#)\n Span(Class: h5 m0 mb ml-lg){\n LinkPage(Class: ml-sm, Body: $@1roles$, Page: @1roles_list)\n Span(Class: text-muted mh-sm, Body: /)\n Span(Class: text-muted, Body: #prefix_role_name#)\n }.Style(\n display: inline-block;\n )\n\n If(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"role->id\": \"#v_role_id#\", \"member->member_name\": {\"$ilike\": \"#search#\"}})\n }.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"role->id\": \"#v_role_id#\"})\n }\n\n Div(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1member)).(page_par, #v_role_id#)\n Include(@1search)\n }\n\n DBFind(#this_table#, src_participants).Where(#where#).Order({\"deleted\": 1, \"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,member->account,member->member_name,member->image_id,appointed->account,appointed->member_name,appointed->voting_id,appointed->voting_name,date_created,date_deleted,deleted\").Custom(custom_id){\n If(#deleted# == 0){\n SetVar(Name: style_text, Value: \"text-normal\")\n SetVar(Name: style_link, Value: \"text-primary\")\n }.Else{\n SetVar(Name: style_text, Value: \"text-muted\")\n SetVar(Name: style_link, Value: \"text-muted\")\n }\n Span(Class: #style_text#, Body: #id#)\n }.Custom(custom_appointed){\n If(And(#appointed.account# != \"\", #appointed.account# != NULL)){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#appointed.account#\"){\n Span(Body: #appointed.member_name#)\n }\n }\n If(#appointed.voting_id#>0){\n LinkPage(Class:#style_link# h5 text-bold, Page: @1voting_view, PageParams: \"vID=#appointed.voting_id#\"){\n Span(Body: #appointed.voting_name#)\n }\n }\n }.Custom(custom_member){\n LinkPage(Class: #style_link# h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#member.account#\"){\n If(#member.image_id#>0){\n Image(Src: Binary().ById(#member.image_id#), Class: img-circle).Style(width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(#member.member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right:10px;)\n Span(#member.member_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n }.Custom(custom_address){\n Span(Class: #style_text#, Body: #member.account#)\n }.Custom(custom_date){\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_created#, Format: \"DD.MM.YYYY HH:MI\"))\n Div(Class: #style_text# h6 m0, Body: DateTime(DateTime: #date_deleted#, Format: \"DD.MM.YYYY HH:MI\"))\n }.Custom(custom_status){\n If(#deleted# == 0){\n Span(Class: #style_text#, Body: LangRes(@1active))\n }.Else{\n Span(Class: #style_text#, Body: LangRes(@1deleted))\n }\n }.Custom(actions){\n Div(pull-right){\n If(#deleted#==0){\n Button(Class: btn bg-gray-lighter mh-sm, Contract: @1RolesUnassign, Params: \"RowId=#id#\", Page: @1roles_view, PageParams: \"v_role_id=#v_role_id#\"){\n Em(Class: text-danger fa fa-1x fa-trash)\n }.Alert(Text: \"$@1sure_want_delete_member$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n }.Count(count)\n\n Div(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_participants, \"$@1member$=custom_member,$@1address$=custom_address,$@1appointed$=custom_appointed,$@1appointed_deleted_member$=custom_date,$@1status$=custom_status,=actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1participants$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n }\n Div(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "select_ecosystem",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#Type# == \"ALL_LIST\"){\n DBFind(\"@1ecosystems\", items).Limit(250).Columns(\"name,id\")\n SetVar(name_column, \"name\")\n SetVar(value_column, \"id\")\n}\nIf(#Type# == \"ONLY_MY\"){\n SetVar(account_key, AddressToId(#account_id#))\n DBFind(\"@1parameters\", items).Where({\"$and\": [{\"ecosystem\": {\"$neq\": 1}}, {\"$or\": [{\"$and\": [{\"name\": \"founder_account\"}, {\"value\": \"#account_key#\"}]}, {\"$and\": [{\"name\": \"delegate_account\"}, {\"value\": \"#account_key#\"}]}]}]}).Columns(\"ecosystem\").Custom(\"custom_name\"){\n DBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem#\"}).Vars(eco)\n Span(#eco_name#)\n }\n SetVar(name_column, \"custom_name\")\n SetVar(value_column, \"ecosystem\")\n}\n\nForm(){\n Div(row){\n Div(col-md-12 text-left){\n Select(Name: EcosystemId, Source: items, NameColumn: #name_column#, ValueColumn: #value_column#, Value: #EcosystemId#)\n }\n }\n If(#back_header#){\n Button(Body: LangRes(@1select), Class: btn btn-primary pull-right mt, Page: #back_page#, PageParams: \"EcosystemId=Val(EcosystemId)\").Popup(Header: #back_header#, Width: 50)\n If(#go_home# == 1) {\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1ec_list)\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#\").Popup(Header: #back_header#, Width: 50)\n }\n }.Else{\n Button(Body: LangRes(@1select), Class: btn btn-primary pull-right mt, Page: #back_page#, PageParams: \"EcosystemId=Val(EcosystemId)\")\n If(#go_home# == 1) {\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1ec_list)\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#\")\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "select_group",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1select_group).(this_table, @1groups).(current_header, $@1groups$).(pager_limit, 10)\nInclude(@1pager_header)\n\nIf(#page_par#){\n SetVar(EcosystemId, #page_par#)\n}.Else{\n SetVar(page_par, #EcosystemId#)\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0, \"group_name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0})\n}\n\nDiv(){\n Form(input-group){\n Div(input-group-addon){\n LangRes(@1name)\n }\n Input(Name: search, Value: #search#, Placeholder: $@1text_to_search$)\n Div(input-group-btn){\n If(#search#!=\"\"){\n Button(Class: btn bg-gray-lighter fa fa-close mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,Id=#Id#\").Popup(Header: #current_header#, Width: \"50\")\n }\n Button(Class: btn bg-gray-lighter mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,search=Val(search),Id=#Id#\", Body: Em(Class: fa fa-search) $@1search$).Popup(Header: #current_header#, Width: \"50\")\n }\n }\n}.Style(\n .buttons {\n border: 1px solid #dde6e9;\n }\n)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_id){\n Span(Class: h6 text-muted, Body: #id#)\n}.Custom(_name){\n If(#back_header#!=\"\"){\n Button(Class: btn-xs btn-link, Page: #back_page#, PageParams: \"GroupId=#id#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #group_name#)\n }.Popup(Header: #back_header#, Width: 50)\n }.Else{\n Button(Class: btn-xs btn-link, Page: #back_page#, PageParams: \"GroupId=#id#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #group_name#)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n If(#count# > 0){\n Table(src,\"=_name\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1groups$ $@1not_founded$\")\n }\n}\nDiv(){\n Include(@1pager_for_popup)\n If(#back_header#!=\"\"){\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\").Popup(Header: #back_header#, Width: \"50\")\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\")\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "select_role",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1select_role).(this_table, @1roles).(current_header, $@1roles$).(pager_limit, 10)\nInclude(@1pager_header)\n\nIf(#page_par#){\n SetVar(EcosystemId, #page_par#)\n}.Else{\n SetVar(page_par, #EcosystemId#)\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0, \"role_name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0})\n}\n\nDiv(){\n Form(input-group){\n Div(input-group-addon){\n LangRes(@1name)\n }\n Input(Name: search, Value: #search#, Placeholder: $@1text_to_search$)\n Div(input-group-btn){\n If(#search#!=\"\"){\n Button(Class: btn bg-gray-lighter fa fa-close mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,Id=#Id#\").Popup(Header: #current_header#, Width: \"50\")\n }\n Button(Class: btn bg-gray-lighter mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,search=Val(search),Id=#Id#\", Body: Em(Class: fa fa-search) $@1search$).Popup(Header: #current_header#, Width: \"50\")\n }\n }\n}.Style(\n .buttons {\n border: 1px solid #dde6e9;\n }\n)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_id){\n Span(Class: h6 text-muted, Body: #id#)\n}.Custom(_name){\n If(#back_header#!=\"\"){\n Button(Class: btn-xs btn-link, Page: #back_page#, PageParams: \"RoleId=#id#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #role_name#)\n }.Popup(Header: #back_header#, Width: 50)\n }.Else{\n Button(Class: btn-xs btn-link, Page: #back_page#, PageParams: \"RoleId=#id#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #role_name#)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n If(#count# > 0){\n Table(src,\"=_name\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1roles$ $@1not_founded$\")\n }\n}\nDiv(){\n Include(@1pager_for_popup)\n If(#back_header#!=\"\"){\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\").Popup(Header: #back_header#, Width: \"50\")\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\")\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "select_wallet",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1select_wallet).(this_table, @1keys).(current_header, $@1member$).(pager_limit, 10)\nInclude(@1pager_header)\n\nIf(#page_par#){\n SetVar(EcosystemId, #page_par#)\n}.Else{\n SetVar(page_par, #EcosystemId#)\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"deleted\": 0, \"$and\": [{\"account\": {\"$ilike\": \"#search#\"}}, {\"account\": {\"$neq\": \"#guest_account#\"}}]})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#EcosystemId#\", \"account\": {\"$neq\": \"#guest_account#\"}, \"deleted\": 0})\n}\n\nDiv(){\n Form(input-group){\n Div(input-group-addon){\n LangRes(@1wallet)\n }\n Input(Name: search, Value: #search#, Placeholder: $@1text_to_search$)\n Div(input-group-btn){\n If(#search#){\n Button(Class: btn bg-gray-lighter fa fa-close mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,Id=#Id#\").Popup(Header: #current_header#, Width: \"50\")\n }\n Button(Class: btn bg-gray-lighter mtl buttons, Page: #this_page#, PageParams: \"back_page=#back_page#,back_header=#back_header#,parent_back_page=#parent_back_page#,EcosystemId=#EcosystemId#,search=Val(search),Id=#Id#\", Body: Em(Class: fa fa-search) $@1search$).Popup(Header: #current_header#, Width: \"50\")\n }\n }\n}.Style(\n .buttons{border: 1px solid #dde6e9;}\n)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"account\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(custom_id){\n Span(Class: h6 text-muted, Body: #account#)\n SetVar(m_account,)\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Vars(m)\n If(#m_account#){\n SetVar(image_id, #m_image_id#)\n SetVar(member_name, #m_member_name#)\n }.Else{\n SetVar(image_id, 0)\n SetVar(member_name, #account#)\n }\n}.Custom(custom_account){\n If(#back_header#!=\"\"){\n Button(Class: btn-xs btn-link pull-right, Page: #back_page#, PageParams: \"MemberAccount=#account#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #account#)\n }.Popup(Header: #back_header#, Width: 50)\n }.Else{\n Button(Class: btn-xs btn-link pull-right, Page: #back_page#, PageParams: \"MemberAccount=#account#,EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\"){\n Span(Class: h5 text-bold, Body: #account#)\n }\n }\n}.Custom(custom_ecosystem){\n Span(Class: text-muted h5, Body: $@1ecosystem$ #EcosystemId#)\n}.Custom(custom_username){\n If(#image_id#>0){\n Image(Src: Binary().ById(#image_id#), Class: img-circle).Style(height: 30px; width: 30px; border: 1px solid #5A5D63; margin-right: 10px;)\n Span(Class: h5, Body: #member_name#)\n }.Else{\n Div(){\n Span(Em(Class: fa icon-user fa-2x)).Style(margin-right: 10px;)\n Span(Class: h5, Body: #member_name#)\n }.Style(display:flex; align-items:center;)\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive){\n Div(){\n If(#count# > 0){\n Table(src, \"=custom_username,=custom_ecosystem,=custom_account\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1members$ $@1not_founded$\")\n }\n }.Style(\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(){\n Include(@1pager_for_popup)\n If(#back_header#!=\"\"){\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\").Popup(Header: #back_header#, Width: \"50\")\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"EcosystemId=#EcosystemId#,Id=#Id#,parent_back_page=#parent_back_page#\")\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "sysparams_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1sysparams_list).(this_table, @1system_parameters)\nInclude(@1pager_header)\n\nSetTitle(\"$@1platform_parameters$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1platform_params_desc$\"))\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_consortium_member, AppParam(App: #system_app_id#, Name: \"role_consortium_member\"))\nDBFind(\"@1roles_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"member->account\": \"#account_id#\", \"role->id\": \"#role_consortium_member#\", \"deleted\": 0}).Columns(\"id\").Vars(consortium_member)\nIf(#consortium_member_id#>0){\n AddToolButton(Title: $@1consortium_member_resign$, Icon: icon-pin, Page: @1consortium_member_resign).Popup(50, $@1consortium_member_resign$)\n}\n\nIf(#search#){\n SetVar(where, {\"name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1name))\n Include(@1search)\n}\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_actions){\n SetVar(sp_id,0)\n DBFind(\"@1contracts\").Where({\"ecosystem\": 1, \"name\": \"#name#\"}).Columns(id).Vars(sp)\n If(#sp_id#>0){\n Span(Class: pull-right){\n LinkPage(Class: text-primary h4, Body: Em(Class: fa fa-cogs), Page: @1sysparams_voting, PageParams: \"param_index=#id#,param_name=#name#\")\n }\n }.Else{\n Span(Class: pull-right){\n $@1contract_404$\n }\n }\n}.Custom(_name){\n Div(){\n #name#\n }.Style(min-width:200px;)\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1name$=_name,$@1value$=value,=_actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1platform_parameters$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "sysparams_metrics",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1ecosystems\").WhereId(#Id#).Vars(eco)\n\nDiv(content-wrapper){\n Div(breadcrumb){\n LinkPage(Body: LangRes(@1ecosystems), Page: @1ecosystems_list)\n Span(\"/\",mh-sm)\n Span(LangRes(@1metrics), text-muted)\n }\n SetVar(title,\"LangRes(@1metrics)\")\n SetTitle(#title#)\n Div(container){\n If(#Id#){\n SetVar(title, LangRes(@1metrics): #eco_name# (#Id#))\n SetTitle(#title#)\n Data(tables, \"Name,Metric\"){\n pages,ecosystem_pages\n members,ecosystem_members\n tx,ecosystem_tx\n }\n ForList(tables){\n DBFind(\"@1metrics\", src_metric).Where({\"key\": \"#Id#\", \"metric\": \"#Metric#\"}).Order(\"time\").Count(count)\n If(#count#>0){\n Div(h3){LangRes(#Name#)}\n Table(src_metric,\"$@1timestam$=time,$@1value$=value\")\n }\n }\n }.Else{\n Div(alert alert-warning){\n Ecosystem id not found\n }\n }\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "sysparams_voting",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetTitle($@1voting$: #param_name#)\nSpan(Class: h5 m0 mb ml-lg){\n LinkPage(Class: ml-sm, Body: $@1system_params$, Page: @1sysparams_list)\n Span(Class: text-muted mh-sm, Body: /)\n Span(Class: text-muted, Body: #param_name#)\n}.Style(\n display: inline-block;\n)\n\nForm(content-wrapper){\n If(#param_name#==\"\"){\n Div(text-danger text-center text-bold){\n LangRes(@1attention)\n }\n }\n\n DBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\n If(#param_name# == full_nodes){\n SetVar(template_id, AppParam(Ecosystem:1, App:#application_id#, Name: voting_template_consortium_member))\n }.Else{\n SetVar(template_id, AppParam(Ecosystem:1, App:#application_id#, Name: voting_template_platformparams))\n }\n If(#template_id#){\n DBFind(\"@1voting_templates\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#template_id#\"}).Columns(\"subject->voters\").Vars(template)\n }\n\n If(#template_id# > 0){}.Else{\n Div(text-danger text-center text-bold){\n Div(mb-sm){\n LangRes(@1voting_template_not_found)\n }\n LinkPage(Page: @1voting_templates_list, Class: btn btn-info){\n LangRes(@1template_set)\n }\n }\n }\n\n If(#template_id# > 0){\n If(#param_name# != full_nodes){\n DBFind(\"@1system_parameters\").Where({\"name\": \"#param_name#\"}).Vars(param)\n Div(form-group){\n Label($@1name$)\n Input(Name: Name, Value: #param_name#, Disabled: true)\n }\n Div(form-group){\n Label($@1value$)\n Input(Name: OldValue, Value: #param_value#, Disabled: true)\n }\n Div(form-group){\n Label($@1new_value$) \n Input(Name: Value, Type: textarea)\n }\n Div(text-left){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1sysparams_list)\n If(And(#template_subject_voters#>0,#template_subject_voters#==#role_id#)){\n Button(Body: LangRes(@1voting), Class: btn btn-primary pull-right, Contract: @1VotingRunEditPlatformParam, Page: @1voting_list)\n }.Else{\n If(#template_id# > 0){\n Span($@1voting_not_participant$, text-muted pull-right)\n }.Else{\n Span($@1voting_template_not_found$, text-muted pull-right)\n }\n }\n }\n }.Else{\n SetVar(full_nodes, SysParam(full_nodes))\n SetVar(first_node, AppParam(Ecosystem: 1, App :#application_id#, Name: first_node)).(first_node_set,)\n If(#full_nodes# == \"\"){\n JsonToSource(src_first_node, #first_node#)\n ForList(src_first_node){\n If(#value# == \"\"){\n SetVar(first_node_set, error)\n }\n }\n If(#first_node_set# == error){\n Div(text-center){\n ForList(src_first_node){\n If(#value#==\"\"){\n Div(){first node: '#key#' empty}\n }\n }\n }\n Div(text-center){\n DBFind(\"@1app_params\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"first_node\"}).Vars(first_node_param)\n Button(Page: @1app_params_edit, Class: btn btn-info, PageParams: \"id=#first_node_param_id#,back_page=@1sysparams_list\", Body: $@1install_first_node$)\n }\n }\n }.Else{\n ArrayToSource(src_full_nodes, `#full_nodes#`)\n ForList(src_full_nodes){\n JsonToSource(src_node, `#value#`)\n Div(list-group-item){\n Div(row){\n Div(col-md-9 text-left){\n Label(){node #key#}\n ForList(src_node){\n P(Class: h6 m0, Body: Strong(#key#:) #value#)\n }\n }\n Div(col-md-3 text-right mt-lg){\n If(And(#template_subject_voters#>0,#template_subject_voters#==#role_id#)){\n SetVar(Index, Calculate(#src_full_nodes_index# - 1))\n Button(Body: $@1delete$, Class: btn btn-danger mt, Contract: @1VotingRunRemoveConsortiumMember, Params: \"Index=#Index#\" Page: @1voting_list)\n }.Else{\n Div(mt-lg){\n If(#template_id# > 0){\n Span($@1voting_not_participant$, text-muted)\n }.Else{\n Span($@1voting_template_not_found$, text-muted)\n }\n }\n }\n }\n }\n }.Style(word-break: break-all;)\n }\n }\n }\n }\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "tokenrefund_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Div(row){\n Div(col-sm-3 text-right mt-sm){\n Label(For: Amount){\n LangRes(@1amount)\n }\n }\n Div(col-sm-9){\n Input(Name: Amount, Type: number)\n }\n }\n Div(row mt-sm){\n Div(col-sm-3 text-right mt-sm){\n Label(For: VictimAccount){\n LangRes(@1tokens_refund_victim)\n }\n }\n Div(col-sm-9){\n Input(Name: VictimAccount, Placeholder: $@1wallet_address$)\n }\n }\n Div(row mt-sm){\n Div(col-sm-3 text-right mt-sm){\n Label(For: SuspectAccount){\n LangRes(@1tokens_refund_attacker)\n }\n }\n Div(col-sm-9){\n Input(Name: SuspectAccount, Placeholder: $@1wallet_address$)\n }\n }\n Div(row mt-sm){\n Div(col-sm-3 text-right mt-sm){\n Label(For: Note){\n LangRes(@1description)\n }\n }\n Div(col-sm-9){\n Input(Name: Note, Type: textarea)\n }\n }\n Button(Body: $@1request_refund$, Contract: @1VotingRunTokenRefund, Page: @1tokenrefund_list, Class: btn pull-right btn-primary mt)\n Button(Body: LangRes(@1back), Class: btn pull-right btn-default mt, Page: @1tokenrefund_list)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "tokenrefund_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1tokenrefund_list).(this_table, @1tokens_refund)\nInclude(@1pager_header)\n\nSetTitle(\"$@1tokens_refunds_list$\")\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(tid, AppParam(App: #application_id#, Name: voting_template_tokenrefund, Ecosystem: 1))\nIf(#tid# > 0){\n DBFind(\"@1voting_templates\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#tid#\"}).Columns(\"subject->voters\").Vars(template)\n}\nIf(And(#template_subject_voters#>0,#template_subject_voters#==#role_id#)){\n Span(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: $@1tokens_refunds_list_desc$))\n AddToolButton(Title: $@1create_request$, Icon: icon-plus, Page: @1tokenrefund_create).Popup(50, $@1create_request$)\n}.Else{\n If(#template_subject_voters#>0){\n Span(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: $@1tokens_refunds_list_allowed_role$ #template_subject_voters#))\n }.Else{\n Span(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: $@1template_id_not_found$))\n }\n}\n\nIf(#search#){\n SetVar(where, {\"note\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1description))\n Include(@1search)\n}\n\nDBFind(#this_table#, src_refunds_list).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Custom(_status){\n If(#status#>0){\n SetVar(sta, AppParam(Ecosystem:1, App:#application_id#, Name: tokenrefund_status, Index: #status#))\n LangRes(#sta#)\n }\n}.Custom(_result){\n If(#result# > 0){\n SetVar(res,AppParam(Ecosystem:1, App:#application_id#, Name: tokenrefund_result, Index: #result#))\n LangRes(#res#)\n }\n}.Custom(_blocked){\n DateTime(Format: YYYY-MM-DD HH:MI:SS, DateTime: #blocked_at#)\n}.Custom(_closed){\n DateTime(Format: YYYY-MM-DD HH:MI:SS, DateTime: #closed_at#)\n}.Custom(_accounts){\n Div(){$@1tokens_refund_victim$: #victim_account#}\n Div(){$@1tokens_refund_attacker$: #attacker_account#}\n}.Custom(_amount){\n Money(#amount#)\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src_refunds_list, \"$@1accounts$=_accounts,$@1description$=note,$@1consortium_member$=consortium_member_account,$@1blocked_at$=_blocked,$@1closed$=_closed,$@1result$=_result,$@1amount$=_amount,$@1status$=_status\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1tokens_refunds$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "admin_menu",
"Type": "pages"
},
{
"Name": "tokens_send",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, \"@1tokens_send\")\n\nIf(#back_page# == \"\"){\n If(#parent_back_page# != \"\"){\n SetVar(back_page, #parent_back_page#)\n }.Else{\n SetVar(back_page, \"@1members_list\")\n }\n}\nIf(#MemberAccount#){\n SetVar(v_account, #MemberAccount#)\n}\nIf(#v_account#){\n SetVar(Name: v_address, Value: #v_account#)\n}\n\nDBFind(\"@1keys\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account_id#\", \"deleted\": 0}).Vars(tokens)\nDBFind(\"@1ecosystems\").Where({\"id\": \"#ecosystem_id#\"}).Vars(custom)\nIf(#ecosystem_id# == 1){\n SetVar(token_title, \"APLA\")\n}.Else{\n SetVar(token_title, #custom_token_title#)\n}\n\nIf(Or(#ecosystem_id# == 1, #custom_token_title# != \"\")){\n Form(){\n Div(row){\n Div(col-sm-3 mt-sm text-right){\n Label($@1sender$)\n Span(Class: text-danger, Body:*)\n }\n Div(col-sm-9){\n SetVar(m_a, #account_id# (Money(#tokens_amount#) #token_title#))\n Input(Name: Sender, Disabled: 1, Value: #m_a#)\n Div(Class: m0 h6 text-muted, Body: $@1send_tokens_my_balance$)\n }\n }\n Div(row mt){\n Div(col-sm-3 mt-sm text-right){\n Label($@1recipient$)\n Span(Class: text-danger, Body:*)\n }\n Div(col-sm-9){\n Div(input-group){\n Input(Name: Recipient, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #v_address#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=#this_page#,back_header=$@1tokens_send$,parent_back_page=#back_page#,EcosystemId=#ecosystem_id#\").Popup(Header: $@1member$, Width: \"50\")\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n }\n }\n }\n Div(row mt-sm){\n Div(col-sm-3 mt-sm text-right){\n Label(){\n Span(Body: $@1amount$ (#token_title#))\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-sm-9){\n Input(Name: Amount, Type: Number, Value: #v_amount#)\n }\n }\n Button(Body: LangRes(@1send), Class: btn btn-primary pull-right mt, Page: #back_page#, Contract: @1TokensSend).Alert(Text: \"$@1want_send_tokens$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#)\n }\n}.Else{\n Form(){\n Div(row){\n Div(col-sm-12){\n Span(Body: $@1ecosystem_no_tokens$)\n }\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#)\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "upload_page",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "Form(){\n Div(row){\n Div(col-sm-12){\n Input(Name: FileData, Type: file).Validate(required: \"1\")\n Div(Class: text-danger){\n InputErr(Name: FileData, required: $@1file_not_selected$)\n }\n }\n }\n If(#back_page_popup# == 50){\n Button(Body: LangRes(@1button_upload), Class: btn btn-primary pull-right mt, Contract: @1BufferFileUpload, Params: \"AppId=#application_id#,BufferKey=#buffer_key#,FileName=#file_name#\", Page: #back_page#, PageParams:\"buffered=1,uploaded=1\").Popup(Header: #back_page_popup_header#, Width: 50)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"buffered=1\").Popup(Header: #back_page_popup_header#, Width: 50)\n }.ElseIf(#back_page_popup# == 30){\n Button(Body: LangRes(@1button_upload), Class: btn btn-primary pull-right mt, Contract: @1BufferFileUpload, Params: \"AppId=#application_id#,BufferKey=#buffer_key#,FileName=#file_name#\", Page: #back_page#, PageParams:\"buffered=1,uploaded=1\").Popup(Header: #back_page_popup_header#, Width: 30)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"buffered=1\").Popup(Header: #back_page_popup_header#, Width: 30)\n }.ElseIf(Or(#back_page_popup# == 40, #back_page_popup# == 1)){\n Button(Body: LangRes(@1button_upload), Class: btn btn-primary pull-right mt, Contract: @1BufferFileUpload, Params: \"AppId=#application_id#,BufferKey=#buffer_key#,FileName=#file_name#\", Page: #back_page#, PageParams:\"buffered=1,uploaded=1\").Popup(Header: #back_page_popup_header#, Width: 40)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"buffered=1\").Popup(Header: #back_page_popup_header#, Width: 40)\n }.Else{\n Button(Body: LangRes(@1button_upload), Class: btn btn-primary pull-right mt, Contract: @1BufferFileUpload, Params: \"AppId=#application_id#,BufferKey=#buffer_key#,FileName=#file_name#\", Page: #back_page#, PageParams:\"buffered=1,uploaded=1\")\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #back_page#, PageParams: \"buffered=1\")\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(this_page, \"@1voting_create\")\n\nForm(){\n If(#type_decision#>0){\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vote_count_type)\n }\n }\n Div(col-md-9 text-left){\n If(#count_type_voters#==1){\n Input(Name: InputCountTypeVoters, Disabled: 1, Value: $@1number_votes$)\n Input(Name: CountTypeVoters, Type: hidden, Value: 1)\n }.Else{\n Input(Name: InputCountTypeVoters, Disabled: 1, Value: $@1percent_votes$)\n Input(Name: CountTypeVoters, Type: hidden, Value: 0)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_subject)\n }\n }\n Div(col-md-9 text-left){\n SetVar(var_type_voting_decisions, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Index: #type_decision#))\n Input(Name: Input_TypeVotingDecisions, Disabled: 1, Value: #var_type_voting_decisions#)\n Input(Name: TypeDecision, Type: hidden, Value: #type_decision#)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1participants)\n }\n }\n Div(col-md-9 text-left){\n SetVar(var_type_participants, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Index: #type_participants#))\n Input(Name: Input_TypeParticipants, Disabled: 1, Value: #var_type_participants#)\n Input(Name: TypeParticipants, Type: hidden, Value: #type_participants#)\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1name)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Name, Value: \"New voting\")\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_quorum)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n If(#count_type_voters#==1){\n Input(Name: Quorum, Value: 3, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_quorum_number_desc$\n }\n }.Else{\n Input(Name: Quorum, Value: 30, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_quorum_desc$\n }\n }\n }\n }\n If(Or(#type_participants#==1,#type_participants#==2,#type_participants#==3,#type_participants#==4)){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_rating)\n }\n }\n Div(col-md-9 mt-sm text-left){\n Input(Name: Rating, Placeholder: $@1voting_rating_desc$, Type: checkbox, Value: false, Class: m0 text-muted)\n }\n }\n }\n }\n If(Or(#count_type_voters#==1,#type_decision#==1,#type_decision#==2)){\n SetVar(hide_volume, 1)\n }\n If(#hide_volume# != 1){\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_volume)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Volume, Value: 51, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_volume_desc$\n }\n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1date_start)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: StartDate, Type: date)\n }\n Div(col-md-6){\n Input(Name: StartTime, Type: time, Value: \"00:00\")\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1date_end)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: EndDate, Type: date)\n }\n Div(col-md-6){\n Input(Name: EndTime, Type: time, Value: \"00:00\")\n }\n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1description)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Description, Type: textarea).Style(resize:vertical)\n }\n }\n }\n Input(Name: Type, Type: hidden, Value: 1)\n If(#type_decision# == 1){\n SetVar(next_page,\"@1voting_decision_candidates\")\n }.ElseIf(#type_decision# == 2){\n SetVar(next_page,\"@1voting_decision_election\")\n }.ElseIf(#type_decision# == 3){\n SetVar(next_page,\"@1voting_decision_document\")\n }.ElseIf(#type_decision# == 4){\n SetVar(next_page,\"@1voting_decision_contract\")\n }\n Button(Body: LangRes(@1create), Class: btn btn-primary pull-right mt, Page: #next_page#, Contract: @1VotingCreate, Params: \"CountTypeVoters=#count_type_voters#\").Popup(60, $@1voting_subject$)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #this_page#).Popup(60, $@1new_voting$)\n }.Else{\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vote_count_type)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 mt-sm text-left){\n If(#count_type_voters#==1){\n Button(Body: $@1percent_votes$, Page: #this_page#, PageParams: \"count_type_voters=0\", Class: btn-xs btn-default mr-lg).Popup(60, $@1new_voting$)\n Button(Body: $@1number_votes$, Page: #this_page#, PageParams: \"count_type_voters=1\", Class: btn-xs btn-primary disabled).Popup(60, $@1new_voting$)\n }.Else{\n Button(Body: $@1percent_votes$, Page: #this_page#, PageParams: \"count_type_voters=0\", Class: btn-xs btn-primary disabled mr-lg).Popup(60, $@1new_voting$)\n Button(Body: $@1number_votes$, Page: #this_page#, PageParams: \"count_type_voters=1\", Class: btn-xs btn-default).Popup(60, $@1new_voting$) \n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt text-right){\n Label(){\n LangRes(@1voting_subject)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n If(#count_type_voters#==1){\n Data(numbers_type_decisions, \"value,name\"){\n 3,$@1document$\n 4,$@1contract_run$\n }\n RadioGroup(Name: type_decision, Source: numbers_type_decisions, NameColumn: name, ValueColumn: value)\n }.Else{\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Source: procent_type_decisions)\n RadioGroup(Name: type_decision, Source: procent_type_decisions, NameColumn: name, ValueColumn: id)\n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1participants)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Source: type_voting_participants)\n Select(Name: type_participants, Source: type_voting_participants, NameColumn: name, ValueColumn: id, Value: 2)\n }\n }\n }\n Button(Body: LangRes(@1next), Class: btn btn-primary pull-right mt, Page: #this_page#, PageParams: \"count_type_voters=#count_type_voters#,type_decision=Val(type_decision),type_participants=Val(type_participants)\").Popup(60, $@1new_voting$)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1voting_list)\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_decision_candidates",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#vID# == \"\"){\n DBFind(\"@1buffer_data\").Columns(\"value->voting_id\").Where({\"key\": \"voting\", \"account\": \"#account_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Vars(buffer)\n If(#buffer_value_voting_id#>0){\n SetVar(vID, #buffer_value_voting_id#)\n SetVar(toPageInvite, 1)\n }\n}\nIf(#vID# > 0){\n If(#back_page#){}.Else{\n SetVar(back_page,@1voting_view)\n }\n DBFind(\"@1votings\").WhereId(#vID#).Columns(\"id,voting->name,optional->role_id,optional->role_vacancies,optional->contract_accept,optional->contract_reject,optional->contract_accept_params,optional->contract_reject_params\").Vars(instance)\n DBFind(\"@1votings_subject\").Where({\"voting_id\": \"#vID#\", \"subject->account\": \"#account_id#\"}).Columns(\"id\").Vars(already_candidate)\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"role_type\": 2, \"deleted\": 0}).Columns(\"id,role_name\").Count(elective_roles_count)\n If(#elective_roles_count#>0){\n Form(){\n Input(Name: MemberAccount, Type: hidden, Value: 0)\n Input(Name: VotingId, Type: hidden, Value: #vID#)\n\n If(#already_candidate_id#>0){\n SetVar(hidden,hidden)\n }.Else{\n SetVar(hidden,)\n }\n Div(row mt-sm #hidden#){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1candidates))\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n If(#apply# == 1){\n Input(Name: applied, Disabled: 1, Value: $@1applied_already$)\n }.Else{\n Div(input-group){\n Input(Name: can_apply_voting, Disabled: 1, Value: $@1can_apply_voting$)\n Div(input-group-btn){\n Button(Body: LangRes(@1apply), Class: btn bg-gray-lighter buttons, Page: @1voting_decision_candidates, PageParams: \"vID=#vID#,back_page=#back_page#,apply=1\", Contract: @1VotingSubjectCandidates).Popup(50, $@1subject_voting$)\n }.Style(\n .buttons{border: 1px solid #dde6e9;}\n )\n }\n }\n }\n }\n DBFind(\"@1votings_subject\",src_voting_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->account,subject->member_name\").Count(members_count).Custom(_address){\n #subject.account#\n }.Custom(_member){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#subject.account#\"){\n Span(Body: #subject.member_name#)\n }\n }\n If(Or(#members_count#>0,#apply#==1)){\n Div(row){\n Div(col-sm-9 col-sm-offset-3){\n Table(src_voting_subject, \"$@1candidates$=_member,=_address\").Style(margin-bottom: 5px;)\n }\n }\n }\n Div(form-group){\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role))\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Select(Name: RoleId, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #instance_optional_role_id#)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1vacancies))\n Span(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Vacancies, Type: number, Value: #instance_optional_role_vacancies#)\n }\n }\n }\n Div(form-group){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_accept))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractAcceptName, Value: #instance_optional_contract_accept#, Placeholder: \"$@1contract_accept_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractAcceptName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractAcceptParams, Value: #instance_optional_contract_accept_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_reject))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractRejectName, Value: #instance_optional_contract_reject#, Placeholder: \"$@1contract_reject_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractRejectName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractRejectParams, Value: #instance_optional_contract_reject_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n }\n If(#toPageInvite#==1){\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: @1voting_invite, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectSettings).Popup(60, $@1participants_add$)\n }.Else{\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: #back_page#, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectSettings)\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"vID=#vID#\")\n }\n }.Else{\n Div(row){\n Div(col-md-12 text-center h4){\n P(LangRes(@1elective_roles_not_found))\n Button(Class: btn btn-link, Page: @1roles_create, PageParams: \"vID=#vID#,back_page=#back_page#\"){\n Span(Class: h4, Body: LangRes(@1create_role))\n }.Popup(50, $@1edit_role$)\n }\n }\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_decision_contract",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#vID# == \"\"){\n DBFind(\"@1buffer_data\").Columns(\"value->voting_id\").Where({\"key\": \"voting\", \"account\": \"#account_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Vars(buffer)\n If(#buffer_value_voting_id#>0){\n SetVar(vID, #buffer_value_voting_id#)\n SetVar(toPageInvite, 1)\n }\n}\nIf(#vID# > 0){\n If(#back_page#){}.Else{\n SetVar(back_page,@1voting_view)\n }\n\n DBFind(\"@1votings\", src_voting).WhereId(#vID#).Columns(\"id,voting->name\").Vars(instance)\n DBFind(\"@1votings_subject\", src_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->contract_accept,subject->contract_reject,subject->contract_accept_params,subject->contract_reject_params\").Vars(prefix)\n\n If(#prefix_id#>0){\n }.Else{\n SetVar(prefix_subject_contract_accept,)\n SetVar(prefix_subject_contract_accept_params,)\n SetVar(prefix_subject_contract_reject,)\n SetVar(prefix_subject_contract_reject_params,)\n }\n\n Form(){\n Input(Name: VotingId, Type: hidden, Value: #vID#)\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_accept)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractAcceptName, Value: #prefix_subject_contract_accept#, Placeholder: \"$@1contract_accept_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: ContractAcceptName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractAcceptParams, Value: #prefix_subject_contract_accept_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_reject)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractRejectName, Value: #prefix_subject_contract_reject#, Placeholder: \"$@1contract_reject_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: ContractRejectName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: ContractRejectParams, Value: #prefix_subject_contract_reject_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n }\n If(#toPageInvite#==1){\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: @1voting_invite, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectContract).Popup(60, $@1participants_add$)\n }.Else{\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: #back_page#, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectContract)\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"vID=#vID#\")\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_decision_document",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#vID# == \"\"){\n DBFind(\"@1buffer_data\").Columns(\"value->voting_id\").Where({\"key\": \"voting\", \"account\": \"#account_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Vars(buffer)\n If(#buffer_value_voting_id#>0){\n SetVar(vID, #buffer_value_voting_id#)\n SetVar(toPageInvite, 1)\n }\n}\nIf(#vID# > 0){\n If(#back_page#){}.Else{\n SetVar(back_page,@1voting_view)\n }\n\n DBFind(\"@1votings\", src_voting).WhereId(#vID#).Columns(\"id,voting->name,optional->contract_accept,optional->contract_reject,optional->contract_accept_params,optional->contract_reject_params\").Vars(instance)\n DBFind(\"@1votings_subject\", src_voting_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->text\").Vars(prefix)\n\n If(#prefix_id#>0){\n }.Else{\n SetVar(Name: prefix_subject_text, Value: \"\")\n }\n\n Form(){\n Input(Name: VotingId, Type: hidden, Value: #vID#)\n Div(form-group){\n Div(row){\n Div(col-md-12 mt-sm){\n Label(){\n Span(Body: LangRes(@1text_document))\n Span(Class: text-danger, Body:*)\n }\n Input(Name: TextDocument, Type: textarea, Value: #prefix_subject_text#).Style(resize: vertical;)\n }\n }\n }\n Div(form-group){\n Div(row mb-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_accept))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractAcceptName, Value: #instance_optional_contract_accept#, Placeholder: \"$@1contract_accept_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractAcceptName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row mb-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractAcceptParams, Value: #instance_optional_contract_accept_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n Div(row mb-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_reject))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: OptContractRejectName, Value: #instance_optional_contract_reject#, Placeholder: \"$@1contract_reject_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractRejectName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 mc-sm text-left){\n Input(Name: OptContractRejectParams, Value: #instance_optional_contract_reject_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n }\n If(#toPageInvite#==1){\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: @1voting_invite, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectDocument).Popup(60, $@1participants_add$)\n }.Else{\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: #back_page#, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectDocument)\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"vID=#vID#\")\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_decision_election",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#vID# == \"\"){\n DBFind(\"@1buffer_data\").Columns(\"value->voting_id\").Where({\"key\": \"voting\", \"account\": \"#account_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Vars(buffer)\n If(#buffer_value_voting_id#>0){\n SetVar(vID, #buffer_value_voting_id#)\n }\n}\nIf(#vID# > 0){\n If(#candidates#==\"\"){\n SetVar(candidates,0)\n }\n If(#back_page#){}.Else{\n SetVar(back_page,@1voting_view)\n }\n DBFind(\"@1votings\", src_voting).WhereId(#vID#).Columns(\"id,voting->name,optional->role_id,optional->role_vacancies,optional->contract_accept,optional->contract_reject,optional->contract_accept_params,optional->contract_reject_params\").Vars(instance)\n DBFind(\"@1votings_subject\", src_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->account,subject->member_name\").Custom(_address){\n SetVar(candidates,\"#candidates#,#subject.account#\")\n #subject.account#\n }.Custom(_member){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#subject.account#\"){\n Span(Body: #subject.member_name#)\n }\n }\n\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"role_type\": 2, \"deleted\": 0}).Columns(\"id,role_name\").Count(elective_roles_count)\n If(#elective_roles_count# > 0){\n Form(){\n Input(Name: VotingId, Type: hidden, Value: #vID#)\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1candidates)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 mc-sm text-left){\n Div(input-group){\n If(#MemberAccount#){\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccount#)\n }.Else{\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\")\n }\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams: \"back_page=@1voting_decision_election,back_header=$@1voting_subject$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1member$, Width: \"50\")\n If(#MemberAccount#){\n Button(Class: btn bg-gray-lighter fa fa-plus buttons, Page: @1voting_decision_election, PageParams: \"vID=#vID#,back_page=#back_page#\", Contract: @1VotingSubjectCandidates, Params: \"MemberAccount=#MemberAccount#\").Popup(50, $@1subject_voting$)\n }\n }.Style(\n .buttons{border: 1px solid #dde6e9;}\n )\n }\n }\n }\n If(Or(#members_count#>0,#candidates#!=0)){\n Div(row){\n Div(col-sm-9 col-sm-offset-3){\n Table(src_subject, \"$@1candidates$=_member,=_address\").Style(margin-bottom: 5px;)\n }\n }\n }\n }\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 mb-sm text-left){\n Select(Name: RoleId, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #instance_optional_role_id#)\n }\n }\n\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1vacancies)).(Class: text-danger, Body:*)\n }\n }\n Div(col-md-9 mc-sm text-left){\n Input(Name: Vacancies, Class: form-control, Type: Number, Value: #instance_optional_role_vacancies#)\n }\n }\n }\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_accept))\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: OptContractAcceptName, Value: #instance_optional_contract_accept#, Placeholder: \"$@1contract_accept_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractAcceptName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: OptContractAcceptParams, Value: #instance_optional_contract_accept_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_reject))\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: OptContractRejectName, Value: #instance_optional_contract_reject#, Placeholder: \"$@1contract_reject_des$\").Validate(minLength:3, maxLength:255)\n InputErr(Name: OptContractRejectName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 mc-sm text-left){\n Input(Name: OptContractRejectParams, Value: #instance_optional_contract_reject_params#, Placeholder: \"$@1contract_params_des$\")\n }\n }\n }\n If(#toPageInvite#==1){\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: @1voting_invite, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectSettings).Popup(60, $@1participants_add$)\n }.Else{\n Button(Body: LangRes(@1save), Class: btn btn-primary pull-right, Page: #back_page#, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectSettings)\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"vID=#vID#\")\n }\n }.Else{\n Div(row){\n Div(col-md-12 text-center h4){\n P(LangRes(@1elective_roles_not_found))\n Button(Class: btn btn-link, Page: @1roles_create, PageParams: \"vID=#vID#,back_page=#back_page#\"){\n Span(Class: h4, Body: LangRes(@1create_role))\n }.Popup(50, $@1edit_role$)\n }\n }\n }\n}.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_invite",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "If(#Id# > 0){\n SetVar(vID, #Id#)\n}\nIf(Id==\"\"){\n SetVar(Id, 0)\n}\n\nIf(#vID# > 0){\n Form(){\n If(#back_page#==\"\"){\n SetVar(back_page,@1voting_view)\n }\n DBFind(\"@1votings\").WhereId(#vID#).Columns(\"id,voting->name,voting->type_participants\").Vars(instance)\n DBFind(\"@1votings_participants\", src_participants).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,member->account,member->member_name,member->role_id\").Count(participants_count).Custom(_id){\n #member.account#\n }.Custom(_name){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#member.account#\", Body: #member.member_name#)\n }.Custom(_sent){\n $@1voting_role_added$\n }.Custom(_member_roles){\n SetVar(rl_id,0)\n DBFind(\"@1roles\").Columns(\"id,role_name,image_id\").WhereId(#member.role_id#).Vars(rl)\n LinkPage(Class: text-primary h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#rl_id#\"){\n If(#rl_image_id#>0){\n Image(Src: Binary().ById(#rl_image_id#), Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #rl_role_name#\n }.Else{\n Div(){\n Span(Class: fa icon-settings fa-2x mr-sm).(#rl_role_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n }\n If(#participants_count#>0){\n Div(list-group-item mb-lg){\n If(#instance_voting_type_participants# == 5){\n Table(src_participants, \"$@1role$=_member_roles,=_sent\")\n }.ElseIf(#instance_voting_type_participants# == 4){\n Table(src_participants, \"$@1role$=_member_roles,=_sent,$@1member$=_name,=_id,\")\n }.Else{\n Table(src_participants, \"$@1member$=_name,=_id\")\n }\n }\n }\n\t\tInput(Name: VotingId, Type: hidden, Value: #vID#)\n\t\t \n\t\tIf(#instance_voting_type_participants#==2){\n\t\t\tDiv(row mb){\n\t\t\t\tDiv(col-md-3 mt-sm text-right){\n\t\t\t\t\tLabel(){\n\t\t\t\t\t\tLangRes(@1member)\n\t\t\t\t\t\tSpan(Class: text-danger, Body:*)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tDiv(col-md-9 text-left){\n\t\t\t\t\tDiv(input-group){\n\t\t\t\t\t\tIf(#MemberAccount#){\n\t\t\t\t\t\t\tSetVar(Id, #MemberAccount#)\n Input(Name: VarId, Type: hidden, Value: #MemberAccount#)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\", Value: #MemberAccount#)\n }.Else{\n Input(Name: VarId, Type: hidden, Value: 0)\n Input(Name: m_name, Disabled: 1, Placeholder: \"xxxx-xxxx-xxxx-xxxx-xxxx\")\n }\n\t\t\t\t\t\tDiv(input-group-btn){\n\t\t\t\t\t\t\tButton(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_wallet, PageParams:\"back_page=@1voting_invite,back_header=$@1participants_add$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1member$, Width: \"50\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tIf(Or(#instance_voting_type_participants#==3,#instance_voting_type_participants#==4,#instance_voting_type_participants#==5)){\n\t\t\tDiv(row mb){\n\t\t\t\tDiv(col-md-3 mt-sm text-right){\n\t\t\t\t\tLabel(){\n\t\t\t\t\t\tLangRes(@1role)\n\t\t\t\t\t\tSpan(Class: text-danger, Body:*)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tDiv(col-md-9 text-left){\n\t\t\t\t\tIf(RoleId == \"\"){\n\t\t\t\t\t\tSetVar(RoleId, 0)\n\t\t\t\t\t\tSetVar(RoleName,)\n\t\t\t\t\t}.Else{\n\t\t\t\t\t\tInput(Name: VarId, Type: hidden, Value: #RoleId#)\n\t\t\t\t\t}\n\t\t\t\t\tDiv(input-group){\n\t\t\t\t\t\tIf(#RoleId#>0){\n\t\t\t\t\t\t\tSetVar(Id, #RoleId#)\n\t\t\t\t\t\t\tDBFind(\"@1roles\").WhereId(#RoleId#).Columns(\"role_name\").Vars(r)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tInput(Name: m_name, Disabled: 1, Value: #r_role_name#)\n\t\t\t\t\t\tDiv(input-group-btn){\n\t\t\t\t\t\t\tButton(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_role, PageParams:\"back_page=@1voting_invite,back_header=$@1participants_add$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1roles$, Width: \"50\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tIf(#instance_voting_type_participants#==6){\n\t\t\tDiv(row mb){\n\t\t\t\tDiv(col-md-3 mt-sm text-right){\n\t\t\t\t\tLabel(){\n\t\t\t\t\t\tLangRes(@1group)\n\t\t\t\t\t\tSpan(Class: text-danger, Body:*)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tDiv(col-md-9 text-left){\n\t\t\t\t\tIf(GroupId == \"\"){\n\t\t\t\t\t\tSetVar(GroupId, 0)\n\t\t\t\t\t\tSetVar(GroupName,)\n\t\t\t\t\t}.Else{\n\t\t\t\t\t\tInput(Name: VarId, Type: hidden, Value: #GroupId#)\n\t\t\t\t\t}\n\t\t\t\t\tDiv(input-group){\n\t\t\t\t\t\tIf(#GroupId# > 0){\n\t\t\t\t\t\t\tSetVar(Id, #GroupId#)\n\t\t\t\t\t\t\tDBFind(\"@1groups\").WhereId(#GroupId#).Columns(\"group_name\").Vars(g)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tInput(Name: m_name, Disabled: 1, Value: #g_group_name#)\n\t\t\t\t\t\tDiv(input-group-btn){\n\t\t\t\t\t\t\tButton(Class: btn bg-gray-lighter fa fa-caret-down buttons, Page: @1select_group, PageParams:\"back_page=@1voting_invite,back_header=$@1participants_add$,EcosystemId=#ecosystem_id#,Id=#vID#\").Popup(Header: $@1groups$, Width: \"50\")\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n Div(text-right){\n Button(Body: $@1back$, Class: btn btn-default, Page: #back_page#, PageParams: \"vID=#vID#\")\n If(Or(#MemberAccount# != \"\", #RoleId# != \"\", #GroupId# != \"\")){\n Button(Body: $@1send$, Class: btn btn-primary, Page: @1voting_invite, PageParams: \"vID=#vID#,back_page=#back_page#\", Contract: @1VotingInvite).Popup(50, $@1participants_add$)\n }\n }\n }.Style(\n .buttons {\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n )\n}.Else{\n Div(alert alert-danger mb-lg text-center){\n Span(Body: LangRes(@1attention))\n }\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right, Page: #back_page#, PageParams: \"vID=#vID#\")\n}\n",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1voting_list).(this_table, @1votings)\nInclude(@1pager_header)\n\nSetTitle(\"$@1voting_list$\")\nSpan(Class: text-muted h5 m0 mb ml-lg, Body: Span(Class: ml-sm, Body: \"$@1votings_list_desc$\"))\nAddToolButton(Title: $@1templates_list$, Page: @1voting_templates_list, Icon: icon-pin)\nAddToolButton(Title: $@1create$, Page: @1voting_create, Icon: icon-plus).Popup(60, $@1new_voting$)\nDBFind(\"@1applications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"name\": \"System\"}).Vars(system_app)\nSetVar(role_admin, AppParam(App: #system_app_id#, Name: \"role_admin\"))\nIf(#role_id# == #role_admin#){\n Div(btn-group ml-lg){\n Button(Body: Em(Class: fa fa-refresh) $@1update_votings_statuses$, Class: btn bg-gray ml-sm, Page: #this_page#, Contract: @1VotingStatusUpdate)\n }\n}\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0, \"voting->type\": {\"$in\": [1, 2]}, \"voting->name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0, \"voting->type\": {\"$in\": [1, 2]}})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1voting))\n Include(@1search)\n}\n\nSetVar(INVALID,1).(WAITING,2).(STARTED,3).(FINISHED,4)\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\n\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": \"-1\"}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"id,voting->name,voting->type,voting->type_decision,voting->type_participants,flags->success,flags->decision,flags->full_data,progress->percent_success,progress->number_participants,creator->account,creator->member_name,date_started,date_ended,deleted,status,voting->count_type_voters,voting->volume,progress->number_voters\").Count(count_votings).Custom(_id){\n Span(Class: h5, Body: #id#)\n}.Custom(_name){\n LinkPage(Page: @1voting_view, PageParams: \"vID=#id#\"){\n Span(Class: h5 text-bold m0, Body: #voting.name#)\n }\n}.Custom(_subject){\n SetVar(decision, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Index: #voting.type_decision#))\n Div(h6 m0){\n If(Or(#status#==#STARTED#,#status#==#FINISHED#,#voting.type#==2)){\n #decision#\n }.Else{\n If(#voting.type_decision# == 1){\n SetVar(link_page,\"@1voting_decision_candidates\")\n }.ElseIf(#voting.type_decision# == 2){\n SetVar(link_page,\"@1voting_decision_election\")\n }.ElseIf(#voting.type_decision# == 3){\n SetVar(link_page,\"@1voting_decision_document\")\n }.ElseIf(#voting.type_decision# == 4){\n SetVar(link_page,\"@1voting_decision_contract\")\n }\n Button(Class: btn-xs btn-link p0 text-bold text-left, Page: #link_page#, PageParams: \"vID=#id#,back_page=#this_page#\"){\n If(#flags.full_data# == 1){\n Span(Class: text-primary, Body: #decision#)\n }.Else{\n Span(Class: text-danger, Body: #decision#)\n }\n }.Popup(60, $@1voting_subject$)\n }\n }\n}.Custom(_participants){\n SetVar(participants, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Index: #voting.type_participants#))\n Div(h6 m0){\n If(Or(#status#==#STARTED#,#status#==#FINISHED#,#voting.type#==2)){\n #participants#\n }.Else{\n Button(Class: btn-xs btn-link p0 text-bold text-left, Page: @1voting_invite, PageParams: \"vID=#id#,back_page=#this_page#\"){\n If(#progress.number_participants# > 0){\n Span(Class: text-primary, Body: #participants#)\n }.Else{\n Span(Class: text-danger, Body: #participants#)\n }\n }.Popup(60, $@1participants_add$)\n }\n }\n}.Custom(_creator){\n LinkPage(Class: text-primary h6, Page: @1profile_view, PageParams: \"v_account=#creator.account#\", Body: #creator.member_name#)\n}.Custom(_date){\n P(Class: text-center h6 m0, Body: DateTime(DateTime: #date_started#, Format: \"DD.MM.YYYY HH:MI\"))\n P(Class: text-center h6 m0, Body: DateTime(DateTime: #date_ended#, Format: \"DD.MM.YYYY HH:MI\"))\n}.Custom(_type){\n Div(h6 m0 p0){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting, Index: #voting.type#) /\n If(#voting.count_type_voters#==1){\n $@1number_votes$\n }.Else{\n $@1percent_votes$\n }\n }\n}.Custom(_progress){\n Div(text-center h5 text-bold){\n #progress.percent_success# %\n }\n}.Custom(_decision){\n Div(text-center){\n If(#flags.decision# == 0){\n If(And(#status# = =#FINISHED#, #creator.account# == #account_id#)){\n Button(Body: LangRes(@1decision), Class: btn btn-primary, Contract: @1VotingDecisionCheck, Params: \"VotingId=#id#\", Page: #this_page#)\n }.Else{\n Div(text-muted){LangRes(@1no)}\n }\n }.ElseIf(#flags.decision# == -2){\n Div(text-muted){LangRes(@1not_enough_votes)}\n }.ElseIf(#flags.decision# == 1){\n Div(text-success){LangRes(@1accepted)}\n }.ElseIf(#flags.decision# == -1){\n Div(text-danger){LangRes(@1rejected)}\n }\n }\n}.Custom(_status){\n SetVar(status_class, AppParam(Ecosystem:1, App:#application_id#, Name:voting_statuses_classes, Index:#status#))\n Div(text-center #status_class#){\n If(#status#==#STARTED#){\n Button(Class: btn btn-link icon-eye, Page: @1voting_view, PageParams: \"vID=#id#\")\n }.Else{\n If(And(#status# == #INVALID#, Or(#flags.full_data# == 0, #progress.number_participants# == 0))){\n LangRes(@1not_filled)\n }.Else{\n AppParam(Ecosystem: 1, App: #application_id#, Name: voting_statuses, Index: #status#)\n }\n }\n }\n}.Custom(_actions){\n Div(text-right){\n If(And(#creator.account# == #account_id#, #status# == #INVALID#)){\n Button(Class: fa fa-trash btn btn-default, Contract: @1VotingDelete, Params: \"VotingId=#id#\", Page: #this_page#).Alert(Text: \"$@1want_delete_voting$\", ConfirmButton: $@1yes$, CancelButton: $@1no$, Icon: question)\n }\n }\n}.Count(count)\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1voting$=_name,$@1type$=_type,$@1voting_subject$=_subject,$@1participants$=_participants,$@1date_start$ / $@1date_end$=_date,$@1creator$=_creator,$@1progress$=_progress,$@1decision$=_decision,$@1status$=_status,=_actions\")\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1votings$ $@1not_founded$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_template_create",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1voting_template_create)\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nSetVar(name, \"New voting\").(typevoting, 0).(volume, 50).(quorum, 51).(vacancies, 1)\n\nIf(#TemplateId#>0){\n DBFind(\"@1voting_templates\").Where({\"id\": \"#TemplateId#\", \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"voting->count_type_voters,voting->name,voting->volume,voting->quorum,voting->type_decision,voting->type_participants,voting->type,voting->rating,subject->candidates,subject->vacancies,subject->voters,subject->contract_accept,subject->contract_reject,optional->contract_accept,optional->contract_reject,optional->init_contract,optional->contract_accept_params,optional->contract_reject_params,optional->init_contract_params\").Vars(template)\n\n If(#CountTypeVoters# == \"\"){\n SetVar(CountTypeVoters, #template_voting_count_type_voters#)\n }\n If(#TypeDecision# == \"\"){\n SetVar(ValTypeDec, #template_voting_type_decision#)\n }\n If(#TypeParticipants# == \"\"){\n SetVar(TypeParticipants, #template_voting_type_participants#)\n }\n SetVar(voters, #template_subject_voters#)\n SetVar(name, #template_voting_name#)\n SetVar(quorum, #template_voting_quorum#)\n If(#template_voting_rating# == 1){\n SetVar(rating, \"true\")\n }\n SetVar(volume, #template_voting_volume#)\n SetVar(candidates, #template_subject_candidates#)\n SetVar(vacancies, #template_subject_vacancies#)\n SetVar(contract_accept, #template_subject_contract_accept#)\n SetVar(contract_reject, #template_subject_contract_reject#)\n SetVar(init_contract, #template_optional_init_contract#)\n SetVar(init_params, #template_optional_init_contract_params#)\n SetVar(optional_accept_contract, #template_optional_contract_accept#)\n SetVar(optional_accept_params, #template_optional_contract_accept_params#)\n SetVar(optional_reject_contract, #template_optional_contract_reject#)\n SetVar(optional_reject_params, #template_optional_contract_reject_params#)\n}\n\nForm(){\n If(#TypeDecision#>0){\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vote_count_type)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n If(#CountTypeVoters#==1){\n Input(Name: InputCountTypeVoters, Disabled: 1, Value: $@1number_votes$)\n Input(Name: CountTypeVoters, Type: hidden, Value: 1)\n }.Else{\n Input(Name: InputCountTypeVoters, Disabled: 1, Value: $@1percent_votes$)\n Input(Name: CountTypeVoters, Type: hidden, Value: 0)\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_subject)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n SetVar(var_type_voting_decisions, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Index: #TypeDecision#))\n Input(Name: Input_TypeVotingDecisions, Disabled: 1, Value: #var_type_voting_decisions#)\n Input(Name: TypeDecision, Type: hidden, Value: #TypeDecision#)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1participants)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n SetVar(var_type_participants, AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Index: #TypeParticipants#))\n Input(Name: InputTypeVotingParticipants, Disabled: 1, Value: #var_type_participants#)\n Input(Name: TypeParticipants, Type: hidden, Value: #TypeParticipants#)\n }\n }\n If(#TypeParticipants#==3){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voters_role)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n DBFind(\"@1roles\", src_roles1).Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0}).Order(\"id\").Custom(name){\n #role_name#\n }\n Select(Name: Voters, Source: src_roles1, NameColumn: name, ValueColumn: id, Value: #voters#)\n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1name)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: VotingName, Value: #name#)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_quorum)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n If(#CountTypeVoters#==1){\n Input(Name: Quorum, Value: #quorum#, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_quorum_number_desc$\n }\n }.Else{\n Input(Name: Quorum, Value: #quorum#, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_quorum_desc$\n }\n }\n }\n }\n If(Or(#TypeParticipants#==1,#TypeParticipants#==2,#TypeParticipants#==3,#TypeParticipants#==4)){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_rating)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 mt-sm text-left){\n Input(Name: Rating, Placeholder: $@1voting_rating_desc$, Type: checkbox, Value: #rating#, Class: m0 text-muted)\n }\n }\n }\n }\n If(Or(#CountTypeVoters#==1,#TypeDecision#==1,#TypeDecision#==2)){\n SetVar(hide_volume, 1)\n }\n If(#hide_volume# != 1){\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_volume)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Volume, Value: #volume#, Type: number)\n Div(m0 h6 text-muted){\n $@1voting_volume_desc$\n }\n }\n }\n }\n }\n\n If(Or(#TypeDecision#==1,#TypeDecision#==2)){\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vacancies)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Vacancies, Value: #vacancies#, Type: number)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1candidates_role)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n DBFind(\"@1roles\", src_roles2).Where({\"role_type\": 2, \"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0}).Order(\"id\").Custom(name){\n #role_name#\n }\n Select(Name: Candidates, Source: src_roles2, NameColumn: name, ValueColumn: id, Value: #candidates#)\n }\n }\n }\n }\n If(#TypeDecision#==4){\n Div(list-group-item){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1contract_accept)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-12){\n Input(Name: ContractAccept, Placeholder: $@1contract$, Value: #contract_accept#)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1contract_reject)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-12){\n Input(Name: ContractReject, Placeholder: $@1contract$, Value: #contract_reject#)\n }\n }\n }\n }\n }\n }\n\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_init_contract)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: InitContract, Placeholder: $@1contract$, Value: #init_contract#)\n }\n Div(col-md-6){\n Input(Name: ParamsInit, Placeholder: $@1arguments$, Value: #init_params#)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1contract_accept)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: OptionalContractAccept, Placeholder: $@1contract$, Value: #optional_accept_contract#)\n }\n Div(col-md-6){\n Input(Name: OptionalParamsAccept, Placeholder: $@1arguments$, Value: #optional_accept_params#)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1contract_reject)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: OptionalContractReject, Placeholder: $@1contract$, Value: #optional_reject_contract#)\n }\n Div(col-md-6){\n Input(Name: OptionalParamsReject, Placeholder: $@1arguments$, Value: #optional_reject_params#)\n }\n }\n }\n }\n }\n Button(Body: LangRes(@1create), Class: btn btn-primary pull-right mt, Page: @1voting_templates_list, Contract: @1VotingTemplateCreate)\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: #this_page#, PageParams: \"TemplateId=#TemplateId#\").Popup(60, $@1voting_template_create$)\n }.Else{\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vote_count_type)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 mt-sm text-left){\n If(#CountTypeVoters#==1){\n Button(Body: $@1percent_votes$, Page: #this_page#, PageParams: \"CountTypeVoters=0,TemplateId=#TemplateId#\", Class: btn-xs btn-default mr-lg).Popup(60, $@1voting_template_create$)\n Button(Body: $@1number_votes$, Page: #this_page#, PageParams: \"CountTypeVoters=1,TemplateId=#TemplateId#\", Class: btn-xs btn-primary disabled).Popup(60, $@1voting_template_create$)\n }.Else{\n Button(Body: $@1percent_votes$, Page: #this_page#, PageParams: \"CountTypeVoters=0,TemplateId=#TemplateId#\", Class: btn-xs btn-primary disabled mr-lg).Popup(60, $@1voting_template_create$)\n Button(Body: $@1number_votes$, Page: #this_page#, PageParams: \"CountTypeVoters=1,TemplateId=#TemplateId#\", Class: btn-xs btn-default).Popup(60, $@1voting_template_create$) \n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt text-right){\n Label(){\n LangRes(@1voting_subject)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n If(#CountTypeVoters#==1){\n Data(numbers_type_decisions, \"value,name\"){\n 3,$@1document$\n 4,$@1contract_run$\n }\n RadioGroup(Name: TypeDecision, Value: #ValTypeDec#, Source: numbers_type_decisions, ValueColumn: value, NameColumn: name)\n }.Else{\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Source: procent_type_decisions)\n RadioGroup(Name: TypeDecision, Value: #ValTypeDec#, Source: procent_type_decisions, ValueColumn: id, NameColumn: name) \n }\n }\n }\n }\n Div(list-group-item){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1participants)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Source: src_typepart)\n Select(Name: TypeParticipants, Source: src_typepart, NameColumn: name, ValueColumn: id, Value: #TypeParticipants#)\n }\n }\n }\n Button(Body: LangRes(@1next), Class: btn btn-primary pull-right mt, Page: #this_page#, PageParams: \"CountTypeVoters=#CountTypeVoters#,TypeDecision=Val(TypeDecision),TypeParticipants=Val(TypeParticipants),TemplateId=#TemplateId#\").Popup(60, $@1voting_template_create$)\n If(#TemplateId#>0){\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1voting_template_view, PageParams: \"TemplateId=#TemplateId#\")\n }.Else{\n Button(Body: LangRes(@1back), Class: btn btn-default pull-right mt, Page: @1voting_templates_list)\n }\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_template_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nIf(#TemplateId#>0){\n DBFind(\"@1voting_templates\").Where({\"id\": \"#TemplateId#\", \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"voting->count_type_voters,voting->name,voting->volume,voting->quorum,voting->type_decision,voting->type_participants,voting->type,voting->rating,subject->candidates,subject->vacancies,subject->voters,subject->contract_accept,subject->contract_reject,optional->contract_accept,optional->contract_reject,optional->init_contract,optional->contract_accept_params,optional->contract_reject_params,optional->init_contract_params\").Vars(template)\n If(#template_subject_voters#>0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#template_subject_voters#\"}).Columns(\"role_name\").Vars(vid)\n SetVar(v_role, \"#vid_role_name#\")\n }\n If(#template_subject_candidates#>0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#template_subject_candidates#\"}).Columns(\"role_name\").Vars(cid)\n SetVar(c_role, \"#cid_role_name#\")\n }\n}\n\nSetTitle(\"$@1template$\": #template_voting_name#)\nSpan(Class: h5 m0 mb ml-lg){\n LinkPage(Class: ml-sm, Body: $@1voting$, Page: @1voting_list)\n Span(Class: text-muted mh-sm, Body: /)\n LinkPage(Class: ml-sm, Body: $@1voting_templates$, Page: @1voting_templates_list)\n Span(Class: text-muted mh-sm, Body: /)\n Span(Class: text-muted, Body: #template_voting_name#)\n}.Style(\n display: inline-block;\n)\n\nDiv(content-wrapper){\n If(#template_id# > 0){\n Div(row){\n Div(col-lg-10 col-lg-offset-1){\n Form(panel panel-primary){\n Div(list-group-item text-center){\n P(Class: h3 text-bold m0, Body: #template_voting_name#)\n Div(row){\n Div(col-md-12){\n Div(Class: t5 text-muted m0, Body: AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Index: #template_voting_type_decision#))\n }\n }\n }\n Div(list-group-item text-center){\n P(Class: h5 text-bold m0 mb, Body: $@1voting$)\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1type)\n }\n Div(col-md-6 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting, Index: #template_voting_type#)\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1vote_count_type)\n }\n Div(col-md-6 text-left){\n If(#template_voting_count_type_voters#==1){\n $@1number_votes$\n }.Else{\n $@1percent_votes$\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1voting_rating)\n }\n Div(col-md-6 text-left){\n If(#template_voting_rating#==1){\n $@1yes$ Span(Class:text-muted, Body: ($@1voting_rating_desc$))\n }.Else{\n $@1no$ Span(Class:text-muted, Body: ($@1voting_rating_not_used$))\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1voting_quorum)\n }\n Div(col-md-6 text-left){\n If(#template_voting_count_type_voters#==1){\n #template_voting_quorum#\n }.Else{\n #template_voting_quorum#%\n }\n }\n }\n If(And(#template_voting_count_type_voters#!=1,#template_voting_type_decision#!=1,#template_voting_type_decision#!=2)){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1voting_volume)\n }\n Div(col-md-6 text-left){\n #template_voting_volume#%\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1participants)\n }\n Div(col-md-6 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Index: #template_voting_type_participants#)\n }\n }\n If(#template_voting_type_participants#==3){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1voters_role)\n }\n Div(col-md-6 text-left){\n #v_role#\n }\n }\n }\n }\n If(Or(#template_voting_type_decision#==1,#template_voting_type_decision#==2)){\n Div(list-group-item text-center){\n P(Class: h5 text-bold m0 mb, Body: $@1voting_subject$)\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1vacancies)\n }\n Div(col-md-6 text-left){\n #template_subject_vacancies#\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1candidates_role)\n }\n Div(col-md-6 text-left){\n #c_role#\n }\n }\n }\n }\n If(#template_voting_type_decision#==4){\n Div(list-group-item text-center){\n P(Class: h5 text-bold m0 mb, Body: $@1voting_subject$)\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_accept)\n }\n Div(col-md-6 text-left){\n If(#template_subject_contract_accept# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_subject_contract_accept#\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_reject)\n }\n Div(col-md-6 text-left){\n If(#template_subject_contract_reject# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_subject_contract_reject#\n }\n }\n }\n }\n }\n Div(list-group-item text-center){\n P(Class: h5 m0 mb){\n Span(Class: text-bold, Body: $@1params$)\n Span(Class: text-normal text-muted ml, Body: $@1optional$)\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1voting_init_contract)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_init_contract# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_init_contract#\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_init_contract_params# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_init_contract_params#\n }\n }\n }\n Div(row mt t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_accept)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_contract_accept# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_contract_accept#\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_contract_accept_params# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_contract_accept_params#\n }\n }\n }\n Div(row mt t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_reject)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_contract_reject# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_contract_reject#\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#template_optional_contract_reject_params# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #template_optional_contract_reject_params#\n }\n }\n }\n }\n If(#template_voting_type# == 1){\n Div(list-group-item){\n Div(row){\n Div(col-md-6 mt-sm text-right){\n Label(){\n $@1duration$ ($@1days$)\n }\n }\n Div(col-md-6 text-left){\n Input(Name: Duration, Type: number, Value: 3)\n }\n }\n If(#template_voting_type_decision#==3){\n Div(row mt-sm){\n Div(col-md-6 mt-sm text-right){\n Label(){\n LangRes(@1text_document)\n }\n }\n Div(col-md-6 text-left){\n Input(Name: TextDocument, Type: textarea).Style(resize: vertical;)\n }\n }\n }\n }\n }\n Div(list-group-item){\n Button(Body: LangRes(@1back), Class: btn btn-default, Page: @1voting_templates_list)\n Div(pull-right){\n Button(Class: fa fa-copy btn btn-default, Page: @1voting_template_create, PageParams: \"TemplateId=#TemplateId#\").Popup(60, $@1voting_template_create$)\n If(#template_voting_type# == 1){\n Button(Body: $@1voting_start_button$, Class: btn btn-primary, Page: @1voting_list, Contract: @1VotingTemplateRun, Params: \"TemplateId=#TemplateId#\")\n }\n }\n }\n }\n }\n }\n }.Else{\n Div(col-md-12 alert alert-danger text-center){\n LangRes(@1attention)\n }\n }\n}.Style(\n .t3 {font-size:24px;}\n .t4 {font-size:18px;}\n .t5 {font-size:14px;}\n .t6 {font-size:12px;}\n .break {word-break: break-all;}\n)",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_templates_list",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, @1voting_templates_list).(this_table, @1voting_templates)\nInclude(@1pager_header)\n\nSetTitle(\"$@1voting_templates$\")\nSpan(Class: h5 m0 mb ml-lg){\n LinkPage(Class: ml-sm, Body: $@1votings$, Page: @1voting_list)\n Span(Class: text-muted mh, Body: /)\n Span(Class: text-muted, Body: $@1voting_templates$)\n}.Style(\n display: inline-block;\n)\n\nIf(#search#){\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"voting->type\": {\"$in\": [1, 2]}, \"voting->name\": {\"$ilike\": \"#search#\"}})\n}.Else{\n SetVar(where, {\"ecosystem\": \"#ecosystem_id#\", \"voting->type\": {\"$in\": [1, 2]}})\n}\n\nDiv(list-group-item ml-lg mr-lg pt-lg){\n SetVar(search_name, LangRes(@1template))\n Include(@1search)\n}\n\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\n\nSetVar(all_templates_count, 0)\nDBFind(#this_table#).Where({\"ecosystem\": \"#ecosystem_id#\"}).Count(all_templates_count)\nDBFind(#this_table#, src).Where(#where#).Order({\"id\": 1}).Limit(#pager_limit#).Offset(#pager_offset#).Columns(\"voting->name,voting->type_participants,voting->type_decision,voting->type\").Custom(_participants){\n P(Class: m0 h6, Body: AppParam(Ecosystem:1, App:#application_id#, Name:type_voting_participants, Index: #voting.type_participants#))\n}.Custom(_decision){\n P(Class: m0 h6, Body: AppParam(Ecosystem:1, App:#application_id#, Name:type_voting_decisions, Index: #voting.type_decision#))\n}.Custom(_type){\n AppParam(Ecosystem:1, App:#application_id#, Name:type_voting, Index: #voting.type#)\n}.Custom(_name){\n LinkPage(Body: #voting.name#, Page: @1voting_template_view, PageParams: \"TemplateId=#id#\")\n}.Count(count)\n\nIf(Or(#count#>0,#ecosystem_id#>1)){\n AddToolButton(Title: $@1create$, Page: @1voting_template_create, Icon: icon-plus).Popup(50, $@1voting_template_create$)\n}\n\nDiv(fullscreen){\n Div(table-responsive ml-lg mr-lg){\n Div(list-group-item){\n If(#count# > 0){\n Table(src, \"$@1template$=_name,$@1participants$=_participants,$@1decision$=_decision,$@1voting_type$=_type\")\n }.ElseIf(And(#ecosystem_id# == 1, #all_templates_count# == 0)){\n Form(Class: text-center h6){\n Data(autofill, \"value,description\"){\n yes,$@1use_default_voting_templates$\n no,$@1select_default_templates_manually$\n }\n RadioGroup(Name: SetDefault, Source: autofill, NameColumn: description, ValueColumn: value).Style(line-height: 20px;)\n Button(Body: $@1install_default_templates$, Class: btn btn-primary, Page: @1voting_templates_list, Contract: @1VotingTemplatesInstall)\n }\n }.Else{\n Div(Class: text-center h4 text-muted, Body: \"$@1voting_templates_not_found$\")\n }\n }.Style(\n margin-top:-15px;\n tbody > tr:nth-of-type(odd) {\n background-color: #f8f9fc;\n }\n )\n }\n}\nDiv(mt-sm ml-lg mr-sm mb-sm){\n Include(@1pager)\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_view",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "DBFind(\"@1applications\").Columns(\"name,id\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Vars(application)\nIf(#notific_id#>0){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#notific_id#\"}).Columns(\"page_params->voting_id\").Vars(notific)\n SetVar(vID,#notific_page_params_voting_id#)\n}\n\nSetVar(INVALID,1).(WAITING,2).(STARTED,3).(FINISHED,4)\nSetVar(date_format,\"DD.MM.YYYY HH:MI\")\nSetVar(this_page,\"@1voting_view\")\n\nDiv(content-wrapper){\n If(#vID# > 0){\n DBFind(\"@1votings\").WhereId(#vID#).Columns(\"id,voting->rating,voting->name,voting->volume,voting->quorum,voting->type_participants,voting->type,voting->count_type_voters,voting->type_decision,voting->description,optional->role_id,optional->role_vacancies,optional->number_candidates,optional->contract_accept,optional->contract_reject,optional->contract_accept_params,optional->contract_reject_params,progress->number_participants,progress->number_voters,progress->percent_success,progress->percent_voters,flags->success,flags->full_data,flags->decision,flags->notifics,date_started,date_ended,status,creator->account\").Vars(instance)\n SetVar(type_decision,#instance_voting_type_decision#)\n SetVar(type_participants,#instance_voting_type_participants#)\n\n SetVar(isVotingAllowed,0)\n SetVar(isStartProcessing,0)\n If(Or(#type_participants#==1,#type_participants#==2,#type_participants#==3,#type_participants#==4,#type_participants#==6)){\n DBFind(\"@1votings_participants\").Where({\"voting_id\": \"#vID#\", \"member->account\": \"#account_id#\", \"decision\": 0, \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"id\").Vars(flag_participant)\n If(And(#instance_status#==#STARTED#,#flag_participant_id#>0)){\n DBFind(\"@1notifications\").Where({\"ecosystem\": \"#ecosystem_id#\", \"recipient->account\": \"#account_id#\", \"page_name\": \"#this_page#\", \"page_params->voting_id\": \"#vID#\", \"closed\": 0}).Columns(\"id,notification->type,date_start_processing\").Vars(notificcc)\n If(#notificcc_id#>0){\n SetVar(isVotingAllowed,1)\n SetVar(notific_id,#notificcc_id#)\n If(And(#notificcc_notification_type#==2,#notificcc_date_start_processing#==0)){\n SetVar(isStartProcessing,1)\n }\n }.Else{\n DBFind(\"@1votings_participants\").Where({\"ecosystem\": \"#ecosystem_id#\", \"member->account\": \"#account_id#\", \"voting_id\": \"#vID#\"}).Columns(\"id,decision_date\").Vars(md)\n If(And(#md_id#>0, #md_decision_date#==0)){\n SetVar(isVotingAllowed,1)\n }\n }\n }\n }\n If(#type_participants#==5){\n DBFind(\"@1votings_participants\").Where({\"voting_id\": \"#vID#\", \"member->role_id\": \"#role_id#\", \"decision\": 0, \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"id\").Vars(flag_participant)\n If(And(#instance_status#==#STARTED#,#flag_participant_id#>0)){\n DBFind(\"@1notifications\").Where({\"$or\": [{\"date_start_processing\": 0}, {\"processing_info->account\": \"#account_id#\"}], \"ecosystem\": \"#ecosystem_id#\", \"recipient->role_id\": \"#role_id#\", \"page_name\": \"#this_page#\", \"page_params->voting_id\": \"#vID#\", \"closed\": 0}).Columns(\"id,notification->type,date_start_processing\").Vars(notificcc)\n If(#notificcc_id#>0){\n SetVar(isVotingAllowed,1)\n SetVar(notific_id,#notificcc_id#)\n If(And(#notificcc_notification_type#==2,#notificcc_date_start_processing#==0)){\n SetVar(isStartProcessing,1)\n }\n }\n }\n }\n\n Div(row mt-sm){\n Div(col-lg-10 col-lg-offset-1){\n Form(panel panel-primary){\n Input(Type: hidden, Name: VotingId, Value: #vID#)\n\n Div(list-group-item text-center){\n P(Class: h3 text-bold m0, Body: #instance_voting_name# (#instance_id#))\n Div(row mt-sm){\n Div(col-md-12){\n Div(Class: t5 text-muted m0, Body: AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_decisions, Index: #type_decision#))\n }\n }\n If(#instance_voting_description# != \"\"){\n Div(row){\n Div(col-md-6 text-right){\n Div(Class: t5 text-muted m0, Body: LangRes(@1description))\n }\n Div(col-md-6 text-left break){\n Div(Class: t5 text-muted m0, Body: #instance_voting_description#)\n }\n }\n }\n }\n Div(list-group-item text-center){\n P(Class: h5 text-bold m0 mb, Body: $@1voting_subject$)\n If(Or(#type_decision#==1,#type_decision#==2)){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1role)\n }\n Div(col-md-6 text-left){\n If(#instance_optional_role_id# > 0){\n DBFind(\"@1roles\").Where({\"ecosystem\": \"#ecosystem_id#\", \"id\": \"#instance_optional_role_id#\"}).Columns(\"id,role_name\").Vars(prefix)\n #prefix_role_name# (LangRes(@1id): #prefix_id#)\n }.Else{\n Span(Class:text-danger, Body: LangRes(@1not_filled))\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1vacancies)\n }\n Div(col-md-6 text-left){\n If(#instance_optional_role_vacancies# > 0){\n #instance_optional_role_vacancies#\n }.Else{\n Span(Class: text-danger, Body: LangRes(@1not_filled))\n }\n }\n }\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1candidates)\n }\n Div(col-md-6 text-left){\n If(#instance_optional_number_candidates# > 0){\n #instance_optional_number_candidates#\n }.Else{\n Span(Class:text-danger, Body: LangRes(@1not_filled))\n }\n }\n }\n DBFind(\"@1votings_subject\", src_voting_subject).Where({\"voting_id\": \"#vID#\"}).Order(\"id\").Columns(\"id,subject->account,subject->member_name\").Custom(_address){\n #subject.account#\n }.Custom(_member){\n LinkPage(Class: text-primary t6 text-bold, Page: @1profile_view, PageParams: \"v_account=#subject.account#\"){\n #subject.member_name#\n }\n }.Custom(_voting){\n If(#isStartProcessing#==1){\n Button(Body: LangRes(@1process), Class: btn btn-info text-capitalize, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: #this_page#, PageParams: \"notific_id=#notific_id#\")\n }.Else{\n If(#isVotingAllowed#==1){\n Button(Body: LangRes(@1vote), Class: btn btn-success, Page: #this_page#, PageParams: \"vID=#vID#\", Contract: @1VotingCandidateAccept, Params: \"CandidateAccount=#subject.account#,RoleId=#role_id#\")\n }\n }\n }\n Div(row t6){\n Div(col-sm-8 col-sm-offset-2 col-lg-8 col-lg-offset-2){\n Table(src_voting_subject, \"=_member,=_address,=_voting\")\n }\n }\n Div(row mt-sm t6){\n Div(col-md-12){\n If(And(Or(#instance_status#==#INVALID#,#instance_status#==#WAITING#),#instance_voting_type#==1)){\n If(#type_decision#==1){\n If(#instance_creator_account#==#account_id#){\n Button(Class: btn btn-link, Page: @1voting_decision_candidates, PageParams: \"vID=#vID#\"){\n Strong(LangRes(@1subject_voting_edit))\n }.Popup(60, $@1subject_voting$)\n }.Else{\n DBFind(\"@1votings_subject\").Where({\"voting_id\": \"#vID#\", \"subject->account\": \"#account_id#\"}).Columns(\"id\").Vars(already_candidate)\n If(#already_candidate_id#>0){\n SetVar(hidden,hidden)\n }.Else{\n SetVar(hidden,)\n }\n Div(#hidden#){\n Button(Body: $@1can_apply_voting$, Class: btn btn-link, Page: #this_page#, PageParams: \"vID=#vID#\", Contract: @1VotingSubjectCandidates, Params: \"VotingId=#vID#,MemberAccount=#account_id#\")\n }\n }\n }\n If(#instance_creator_account#==#account_id#){\n If(#type_decision#==2){\n Button(Class: btn btn-link, Page: @1voting_decision_election, PageParams: \"vID=#vID#\"){\n Strong(LangRes(@1subject_voting_edit))\n }.Popup(60, $@1subject_voting$)\n }\n }\n }\n }\n }\n }\n If(#type_decision#==3){\n DBFind(\"@1votings_subject\", src_voting_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->text,subject->hash,results->percent_accepted\").Vars(subject)\n Div(row t6 mt-lg){\n Div(col-sm-8 col-sm-offset-2 col-lg-8 col-lg-offset-2){\n Div(list-group-item){\n If(#subject_id# > 0){\n #subject_subject_text#\n }.Else{\n Span(Class:text-danger, Body: LangRes(@1not_filled))\n }\n }\n Div(list-group-item t6 text-muted){\n If(#subject_id# > 0){\n Hash: #subject_subject_hash#\n }.Else{\n Hash: LangRes(@1empty)\n }\n }\n }\n }\n Div(row mt-sm t6){\n Div(col-md-12){\n If(And(Or(#instance_status#==#INVALID#,#instance_status#==#WAITING#),#instance_voting_type#==1)){\n If(#instance_creator_account#==#account_id#){\n Button(Class: btn btn-link, Page: @1voting_decision_document, PageParams: \"vID=#vID#\"){\n Strong(LangRes(@1subject_voting_edit))\n }.Popup(60, $@1subject_voting$)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-sm-8 col-sm-offset-2 col-lg-8 col-lg-offset-2){\n If(#isStartProcessing#==1){\n Button(Body: LangRes(@1process), Class: btn btn-info text-capitalize, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: #this_page#, PageParams: \"notific_id=#notific_id#\")\n }.Else{\n If(#isVotingAllowed#==1){\n Button(Body: LangRes(@1reject), Class: btn btn-danger pull-left, Contract: @1VotingDecisionReject, PageParams: \"vID=#vID#\", Page: #this_page#, Params: \"RoleId=#role_id#\")\n Button(Body: LangRes(@1accept), Class: btn btn-success pull-right, Contract: @1VotingDecisionAccept, PageParams: \"vID=#vID#\", Page: #this_page#, Params: \"RoleId=#role_id#\")\n }\n }\n }\n }\n }\n If(#type_decision#==4){\n DBFind(\"@1votings_subject\", src_voting_subject).Where({\"voting_id\": \"#vID#\"}).Columns(\"id,subject->contract_accept,subject->contract_accept_params,subject->contract_reject,subject->contract_reject_params,results->percent_accepted\").Vars(subject)\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_accept)\n }\n Div(col-md-6 text-left){\n If(#subject_subject_contract_accept#){\n #subject_subject_contract_accept#\n }.Else{\n Span(Class:text-danger, Body: LangRes(@1not_filled))\n }\n }\n }\n If(#subject_subject_contract_accept#){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n }\n Div(col-md-6 text-left arguments){\n If(Or(#subject_subject_contract_accept_params#==\"\",#subject_subject_contract_accept_params#=={})){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #subject_subject_contract_accept_params#\n }\n }\n }\n }\n Div(row t6 mt-sm){\n Div(col-md-6 text-right){\n LangRes(@1contract_reject)\n }\n Div(col-md-6 text-left){\n If(#subject_subject_contract_reject#){\n #subject_subject_contract_reject#\n }.Else{\n Span(Class: text-muted, Body: LangRes(@1no))\n }\n }\n }\n If(#subject_subject_contract_reject#){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n }\n Div(col-md-6 text-left arguments){\n If(Or(#subject_subject_contract_reject_params#==\"\",#subject_subject_contract_reject_params#=={})){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #subject_subject_contract_reject_params#\n }\n }\n }\n }\n Div(row mt-sm t6){\n Div(col-md-12){\n If(And(Or(#instance_status#==#INVALID#,#instance_status#==#WAITING#),#instance_voting_type#==1)){\n If(#instance_creator_account#==#account_id#){\n Button(Class: btn btn-link, Page: @1voting_decision_contract, PageParams: \"vID=#vID#\"){\n Strong(LangRes(@1subject_voting_edit))\n }.Popup(60, $@1subject_voting$)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-sm-4 col-sm-offset-4 col-lg-4 col-lg-offset-4){\n If(#isStartProcessing#==1){\n Button(Body: LangRes(@1process), Class: btn btn-info text-capitalize, Contract: @1NotificationsProcess, Params: \"NotificId=#notific_id#\", Page: #this_page#, PageParams: \"notific_id=#notific_id#\")\n }.Else{\n If(#isVotingAllowed#==1){\n Button(Body: LangRes(@1reject), Class: btn btn-danger pull-left, Contract: @1VotingDecisionReject, PageParams: \"vID=#vID#\", Page: #this_page#, Params: \"RoleId=#role_id#\")\n Button(Body: LangRes(@1accept), Class: btn btn-success pull-right, Contract: @1VotingDecisionAccept, PageParams: \"vID=#vID#\", Page: #this_page#, Params: \"RoleId=#role_id#\")\n }\n }\n }\n }\n }\n }\n Div(list-group-item text-center t6){\n P(Class: h5 text-bold m0 mb, Body: $@1voting$)\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1type)\n }\n Div(col-md-6 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting, Index: #instance_voting_type#)\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1status)\n }\n Div(col-md-6 text-left){\n SetVar(status_class, AppParam(Ecosystem:1, App:#application_id#, Name:voting_statuses_classes, Index:#instance_status#))\n Div(#status_class#){\n If(And(#instance_status# == #INVALID#, Or(#instance_flags_full_data# == 0, #instance_progress_number_participants# == 0))){\n LangRes(@1not_filled)\n }.Else{\n AppParam(Ecosystem: 1, App: #application_id#, Name: voting_statuses, Index: #instance_status#)\n }\n If(#instance_flags_full_data#==0){\n Div(Class: text-muted){(LangRes(@1voting_subject_not_filled))}\n }\n If(#instance_progress_number_participants#==0){\n Div(Class: text-muted){(LangRes(@1voting_no_participants))}\n }\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1vote_count_type)\n }\n Div(col-md-6 text-left){\n If(#instance_voting_count_type_voters#==1){\n $@1number_votes$\n }.Else{\n $@1percent_votes$\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1voting_rating)\n }\n Div(col-md-6 text-left){\n If(#instance_voting_rating#==1){\n $@1yes$ Span(Class:text-muted, Body: ($@1voting_rating_desc$))\n }.Else{\n $@1no$ Span(Class:text-muted, Body: ($@1voting_rating_not_used$))\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1filled)\n }\n Div(col-md-6 text-left){\n If(#instance_flags_full_data# == 1){\n Span(Class: text-success, Body: LangRes(@1yes))\n }.Else{\n Span(Class: text-danger, Body: LangRes(@1no))\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1decision)\n }\n Div(col-md-6 text-left){\n If(#instance_flags_decision#==-2){\n LangRes(@1not_enough_votes)\n }\n If(#instance_flags_decision#==-1){\n Span(Class:text-danger, Body: LangRes(@1rejected))\n }\n If(#instance_flags_decision#==0){\n LangRes(@1no)\n }\n If(#instance_flags_decision#==1){\n Span(Class:text-success, Body: LangRes(@1accepted))\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1date_start)\n }\n SetVar(date_started_class,)\n If(Or(#instance_status#==#STARTED#,#instance_status#==#FINISHED#)){\n SetVar(date_started_class,\"text-muted\")\n }\n Div(col-md-6 text-left #date_started_class#){\n DateTime(DateTime: #instance_date_started#, Format: #date_format#)\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1date_end)\n }\n SetVar(date_started_class,)\n If(#instance_status#==#FINISHED#){\n SetVar(date_ended_class,\"text-muted\")\n }\n Div(col-md-6 text-left #date_ended_class#){\n DateTime(DateTime: #instance_date_ended#, Format: #date_format#)\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1voting_quorum)\n }\n Div(col-md-6 text-left){\n If(#instance_voting_count_type_voters#==1){\n #instance_voting_quorum#\n }.Else{\n #instance_voting_quorum#%\n }\n }\n }\n If(And(#instance_voting_count_type_voters#!=1,#type_decision#!=1,#type_decision#!=2)){\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1voting_volume)\n }\n Div(col-md-6 text-left){\n #instance_voting_volume#%\n }\n }\n }\n Div(row){\n Div(col-md-6 text-right){\n LangRes(@1participants)\n }\n Div(col-md-6 text-left){\n If(#instance_progress_number_participants# > 0){\n #instance_progress_number_participants#\n }.Else{\n Span(Class:text-danger, Body: #instance_progress_number_participants#)\n }\n If(#instance_voting_type#==1){\n If(Or(#instance_status#==#INVALID#,#instance_status#==#WAITING#)){\n If(#instance_creator_account#==#account_id#){\n Button(Class: btn-xs btn-link text-bold ml, Page: @1voting_invite, PageParams: \"vID=#vID#\"){\n LangRes(@1participants_add)\n }.Popup(60, $@1participants_add$)\n }\n }\n }\n }.Style(margin-top: -3px;)\n }\n }\n If(Or(#instance_optional_contract_accept#!=\"\",#instance_optional_contract_reject#!=\"\")){\n Div(list-group-item text-center){\n P(Class: h5 m0 mb){\n Span(Class: text-bold, Body: $@1params$)\n Span(Class: text-normal text-muted ml, Body: $@1optional$)\n }\n Div(row mt t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_accept)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#instance_optional_contract_accept# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #instance_optional_contract_accept#\n }\n }\n }\n If(#instance_optional_contract_accept#){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left arguments){\n If(Or(#instance_optional_contract_accept_params#==\"\",#instance_optional_contract_accept_params#=={})){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #instance_optional_contract_accept_params#\n }\n }\n }\n }\n Div(row mt-sm t6){\n Div(col-md-6 text-right){\n LangRes(@1contract_reject)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left){\n If(#instance_optional_contract_reject# == \"\"){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #instance_optional_contract_reject#\n }\n }\n }\n If(#instance_optional_contract_reject#){\n Div(row t6){\n Div(col-md-6 text-right){\n LangRes(@1arguments)\n Span(Class: text-muted ml, Body: LangRes(@1optional))\n }\n Div(col-md-6 text-left arguments){\n If(Or(#instance_optional_contract_reject_params#==\"\",#instance_optional_contract_reject_params#=={})){\n Span(Class: text-muted, Body: LangRes(@1no))\n }.Else{\n #instance_optional_contract_reject_params#\n }\n }\n }\n }\n }\n }\n Div(list-group-item){\n Include(@1voting_charts)\n }\n }\n }\n }\n }.Else{\n Div(md-12 alert alert-danger text-center){\n Span(Body: LangRes(@1attention))\n }\n }\n}.Style(\n .t3 {font-size:24px;}\n .t4 {font-size:18px;}\n .t5 {font-size:14px;}\n .t6 {font-size:12px;}\n .break {word-break: break-all;}\n .arguments {word-wrap: break-word;}\n)",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "voting_wizard",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "SetVar(this_page, \"@1voting_wizard\")\nSetVar(back_page, \"@1voting_list\")\nDBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\"}).Columns(\"name,id\").Vars(application)\nDBFind(\"@1buffer_data\").Where({\"key\": \"voting_wizard_buffer\", \"account\": \"#account_id#\", \"ecosystem\": \"#ecosystem_id#\"}).Columns(\"value->save_time,value->voting_name,value->voting_type,value->type_participants,value->type_decision,value->volume,value->quorum,value->rating,value->count_type_voters,value->description,value->interval,value->start_date,value->start_time,value->end_date,value->end_time,value->member_participants,value->role_participants,value->group_participants,value->execute_contract,value->contract_accept_name,value->contract_accept_params,value->contract_reject_name,value->contract_reject_params,value->text_document,value->candidates,value->apply,value->role_id,value->vacancies\").Vars(buffer)\n\nIf(#stage# == \"\"){\n If(#buffer_value_save_time# == \"\"){\n SetVar(stage, 1)\n }.Else{\n SetVar(stage, 0)\n }\n}\nSetVar(debug, 0)\nSetVar(square, \"fa fa-circle-o mr-sm\")\nSetVar(square-filled, \"fa fa-dot-circle-o mr-sm\")\n\nForm(){\n If(#stage# == 0){\n Div(text-center){\n Div(Body: LangRes(@1voting_wizard_draft_message))\n Div(h6 m0 text-muted){$@1last_save$: DateTime(#buffer_value_save_time#, \"HH:MI DD.MM.YYYY\")}\n Data(src_autosave, \"id,name\"){\n yes,$@1voting_wizard_use_draft$\n no,$@1start_over$\n }\n RadioGroup(Name: LoadAutosave, Source: src_autosave, NameColumn: name, ValueColumn: id)\n }\n Button(Body: LangRes(@1next), Class: btn btn-primary pull-right, Page: #this_page#, PageParams: \"stage=1\", Contract: @1VotingWizardBuffer).Popup(50, $@1voting_wizard$)\n Button(Body: LangRes(@1cancel), Class: btn btn-default pull-right, Page: #back_page#)\n\n }.ElseIf(#stage# == 1){\n Div(row){\n Div(col-md-3 mt-lg text-right){\n Label(){\n LangRes(@1voting_subject)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem: 1, App: #application_id#, Name: type_voting_decisions, Source: procent_type_decisions)\n RadioGroup(Name: TypeDecision, Source: procent_type_decisions, NameColumn: name, ValueColumn: id, Value: #buffer_value_type_decision#)\n }\n }\n Button(Class: btn btn-primary pull-right fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=2\", Contract: @1VotingWizardBuffer).Popup(50, $@1voting_wizard$)\n Button(Class: btn btn-default pull-right fa fa-pause, Page: #back_page#)\n Div(progress-wrapper pull-right mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)}\n\n\n }.ElseIf(#stage# == 2){\n If(#val_contract_accept_name# != \"\"){\n SetVar(buffer_value_contract_accept_name, #val_contract_accept_name#)\n }\n If(#val_contract_accept_params# != \"\"){\n SetVar(buffer_value_contract_accept_params, #val_contract_accept_params#)\n }\n If(#val_contract_reject_name# != \"\"){\n SetVar(buffer_value_contract_reject_name, #val_contract_reject_name#)\n }\n If(#val_contract_reject_params# != \"\"){\n SetVar(buffer_value_contract_reject_params, #val_contract_reject_params#)\n }\n\n\n If(#buffer_value_type_decision# == 1){\n If(#val_role_id# != \"\"){\n SetVar(buffer_value_role_id, #val_role_id#)\n }\n If(#val_role_vacancies# != \"\"){\n SetVar(buffer_value_vacancies, #val_role_vacancies#)\n }\n If(#val_execute_contract# != \"\"){\n SetVar(buffer_value_execute_contract, #val_execute_contract#)\n }\n If(And(#apply# == \"\", #buffer_value_apply# == 1)){\n SetVar(apply, 1)\n }\n\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"role_type\": 2, \"deleted\": 0}).Columns(\"id,role_name\").Count(elective_roles_count)\n If(#elective_roles_count# > 0){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1candidates))\n Span(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Div(input-group){\n If(#apply# == 1){\n Input(Name: applied, Disabled: 1, Value: $@1applied_already$)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter buttons fa fa-undo, Page: #this_page#, PageParams: \"stage=2,apply=0,val_role_id=Val(RoleId),val_role_vacancies=Val(Vacancies),val_execute_contract=Val(ExecuteContract),val_contract_accept_name=Val(ContractAcceptName),val_contract_accept_params=Val(ContractAcceptParams),val_contract_reject_name=Val(ContractRejectName),val_contract_reject_params=Val(ContractRejectParams)\").Popup(50, $@1voting_wizard$)\n }\n }.Else{\n Input(Name: can_apply_voting, Disabled: 1, Value: $@1can_apply_voting$)\n Div(input-group-btn){\n Button(Body: LangRes(@1apply), Class: btn bg-gray-lighter buttons, Page: #this_page#, PageParams: \"stage=2,apply=1,val_role_id=Val(RoleId),val_role_vacancies=Val(Vacancies),val_execute_contract=Val(ExecuteContract),val_contract_accept_name=Val(ContractAcceptName),val_contract_accept_params=Val(ContractAcceptParams),val_contract_reject_name=Val(ContractRejectName),val_contract_reject_params=Val(ContractRejectParams)\").Popup(50, $@1voting_wizard$)\n }\n }\n }\n }\n }\n If(#apply# == 1){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account_id#\"}).Vars(my)\n If(#my_member_name# == \"\"){\n SetVar(my_member_name, #account_id#)\n }\n Data(src_voting_subject,\"id,name\"){\n #account_id#,#my_member_name#\n }.Custom(_address){\n #account#\n }.Custom(_member){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\"){\n Span(Body: #name#)\n }\n }\n }.Else{\n Data(src_voting_subject,\"id,name\"){}\n }\n If(#apply# == 1){\n Div(row){\n Div(col-sm-9 col-sm-offset-3){\n Table(src_voting_subject, \"$@1candidates$=_member,=_address\").Style(margin-bottom: 5px;)\n }\n }\n }\n Div(form-group){\n Div(row mt-lg){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role))\n Span(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Select(Name: RoleId, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #buffer_value_role_id#)\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1vacancies))\n Span(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Vacancies, Type: Number, Value: #buffer_value_vacancies#)\n }\n }\n }\n }.Else{\n Div(row){\n Div(col-md-12 text-center h4){\n P(Class: m0, Body: LangRes(@1elective_roles_not_found))\n Button(Class: btn btn-link, Page: @1roles_create, PageParams: \"back_page=#back_page#\"){\n Span(Class: h4, Body: LangRes(@1create_role))\n }.Popup(50, $@1edit_role$)\n }\n }\n }\n\n\n }.ElseIf(#buffer_value_type_decision# == 2){\n If(#val_role_id# != \"\"){\n SetVar(buffer_value_role_id, #val_role_id#)\n }\n If(#val_role_vacancies# != \"\"){\n SetVar(buffer_value_vacancies, #val_role_vacancies#)\n }\n If(#val_execute_contract# != \"\"){\n SetVar(buffer_value_execute_contract, #val_execute_contract#)\n }\n If(#new_candidate# == \"\"){\n SetVar(new_candidate, 0)\n }\n If(#candidates# == \"\"){\n If(#buffer_value_candidates# != \"\"){\n SetVar(candidates, #buffer_value_candidates#)\n }.Else{\n SetVar(candidates, 0)\n }\n }\n If(#new_candidate# != 0){\n If(#candidates# == 0){\n SetVar(candidates, \"#new_candidate#\")\n }.Else{\n SetVar(candidates, \"#candidates#,#new_candidate#\")\n }\n }\n\n DBFind(\"@1keys\", src_subject).Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": {\"$in\": [#candidates#]}, \"deleted\": 0}).Custom(_address){\n #account#\n }.Custom(_member){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Count(have_name).Vars(participant)\n If(#have_name# > 0){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #participant_member_name#)\n }.Else{\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #account#)\n }\n }\n\n DBFind(\"@1keys\", src_accounts).Where({\"ecosystem\": \"#ecosystem_id#\", \"$and\": [{\"account\": {\"$neq\": \"#guest_account#\"}}, {\"account\": {\"$nin\": [#candidates#]}}], \"deleted\": 0}).Columns(\"account\").Count(members_count).Custom(_name){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Columns(\"account,member_name\").Count(have_name).Vars(m)\n #account#\n If(#have_name# > 0){\n \" (#m_member_name#)\"\n }\n }\n\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"role_type\": 2, \"deleted\": 0}).Columns(\"id,role_name\").Count(elective_roles_count)\n If(#elective_roles_count# > 0){\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1candidates)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 mc-sm text-left){\n Div(input-group){\n If(#members_count# > 0){\n Select(Name: MemberAccount, Source: src_accounts, NameColumn: _name, ValueColumn: account)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-plus buttons, Page: #this_page#, PageParams: \"stage=2,new_candidate=Val(MemberAccount),candidates=#candidates#,val_role_id=Val(RoleId),val_role_vacancies=Val(Vacancies),val_execute_contract=Val(ExecuteContract),val_contract_accept_name=Val(ContractAcceptName),val_contract_accept_params=Val(ContractAcceptParams),val_contract_reject_name=Val(ContractRejectName),val_contract_reject_params=Val(ContractRejectParams)\").Popup(50, $@1voting_wizard$)\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=2,candidates=0,val_role_id=Val(RoleId),val_role_vacancies=Val(Vacancies),val_execute_contract=Val(ExecuteContract),val_contract_accept_name=Val(ContractAcceptName),val_contract_accept_params=Val(ContractAcceptParams),val_contract_reject_name=Val(ContractRejectName),val_contract_reject_params=Val(ContractRejectParams)\").Popup(50, $@1voting_wizard$)\n }\n }.Else{\n Input(Class: mb, Disabled: 1, Value: \"$@1voting_all_members_added$\")\n Div(input-group-btn input-group-top){\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=2,candidates=0,val_role_id=Val(RoleId),val_role_vacancies=Val(Vacancies),val_execute_contract=Val(ExecuteContract),val_contract_accept_name=Val(ContractAcceptName),val_contract_accept_params=Val(ContractAcceptParams),val_contract_reject_name=Val(ContractRejectName),val_contract_reject_params=Val(ContractRejectParams)\").Popup(50, $@1voting_wizard$)\n }\n }\n }\n }\n }\n If(Or(#members_count# > 0, #candidates# != 0)){\n Div(row){\n Div(col-sm-9 col-sm-offset-3){\n Table(src_subject, \"$@1candidates$=_member,=_address\").Style(margin-bottom: 5px;)\n }\n }\n }\n }\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1role)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 mb-sm text-left){\n Select(Name: RoleId, Source: src_roles, NameColumn: role_name, ValueColumn: id, Value: #buffer_value_role_id#)\n }\n }\n\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1vacancies)).(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 mc-sm text-left){\n Input(Name: Vacancies, Class: form-control, Type: Number, Value: #buffer_value_vacancies#)\n }\n }\n }\n }.Else{\n Div(row){\n Div(col-md-12 text-center h4){\n P(Class: m0, Body: LangRes(@1elective_roles_not_found))\n Button(Class: btn btn-link, Page: @1roles_create, PageParams: \"back_page=#back_page#\"){\n Span(Class: h4, Body: LangRes(@1create_role))\n }.Popup(50, $@1edit_role$)\n }\n }\n }\n\n\n }.ElseIf(#buffer_value_type_decision# == 3){\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1text_document))\n Span(Class: text-danger, Body: *)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: TextDocument, Type: textarea, Value: #buffer_value_text_document#).Style(resize: vertical;)\n }\n }\n }\n }\n\n If(Or(And(#buffer_value_type_decision# == 1, #elective_roles_count# > 0), And(#buffer_value_type_decision# == 2, #elective_roles_count# > 0), #buffer_value_type_decision# == 3)){\n Div(form-group){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_execute))\n }\n }\n Div(col-md-9 mc-sm text-left){\n Data(src_execute, \"id,name\"){\n no,$@1no$\n yes,$@1yes$\n }\n Select(Name: ExecuteContract, Source: src_execute, NameColumn: name, ValueColumn: id, Value: #buffer_value_execute_contract#)\n }\n }\n }\n }.ElseIf(#buffer_value_type_decision# == 4){\n Input(Name: ExecuteContract, Type: \"hidden\", Value: \"yes\")\n }\n\n Div(){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_accept))\n If(#buffer_value_type_decision# == 4){\n Span(Class: text-danger, Body: *)\n }\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractAcceptName, Value: #buffer_value_contract_accept_name#).Validate(minLength:3, maxLength:255)\n InputErr(Name: ContractAcceptName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n Div(Class: m0 h6 text-muted, Body: \"$@1contract_accept_des$\")\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractAcceptParams, Value: #buffer_value_contract_accept_params#)\n Div(Class: m0 h6 text-muted, Body: \"$@1contract_params_des$\")\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1contract_reject))\n If(#buffer_value_type_decision# == 4){\n Span(Class: text-danger, Body: *)\n }\n }\n }\n Div(col-md-9 mb-sm text-left){\n Input(Name: ContractRejectName, Value: #buffer_value_contract_reject_name#).Validate(minLength:3, maxLength:255)\n InputErr(Name: ContractRejectName, minLength: $@1validate_name$, maxLength: $@1validate_name$)\n Div(Class: m0 h6 text-muted, Body: \"$@1contract_reject_des$\")\n }\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n Span(Body: LangRes(@1params))\n }\n }\n Div(col-md-9 text-left){\n Input(Name: ContractRejectParams, Value: #buffer_value_contract_reject_params#)\n Div(Class: m0 h6 text-muted, Body: \"$@1contract_params_des$\")\n }\n }\n }.Show(ExecuteContract=yes)\n\n If(#buffer_value_type_decision# == 1){\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=3\", Contract: @1VotingWizardBuffer, Params: \"Apply=#apply#,RoleId=Val(RoleId),Vacancies=Val(Vacancies),ExecuteContract=Val(ExecuteContract)\").Popup(50, $@1voting_wizard$)\n }.ElseIf(#buffer_value_type_decision# == 2){\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=3\", Contract: @1VotingWizardBuffer, Params: \"Candidates=#candidates#,RoleId=Val(RoleId),Vacancies=Val(Vacancies),ExecuteContract=Val(ExecuteContract)\").Popup(50, $@1voting_wizard$)\n }.Else{\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=3\", Contract: @1VotingWizardBuffer, Params: \"ExecuteContract=Val(ExecuteContract)\").Popup(50, $@1voting_wizard$)\n }\n Button(Class: btn btn-default pull-right mt-sm fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right mt-sm fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=1\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mt-sm mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)}\n\n }.ElseIf(#stage# == 3){\n Div(row){\n Div(col-md-3 mt-lg text-right){\n Label(){\n LangRes(@1participants)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n AppParam(Ecosystem:1, App:#application_id#, Name: type_voting_participants, Source: type_voting_participants)\n RadioGroup(Name: TypeParticipants, Source: type_voting_participants, NameColumn: name, ValueColumn: id, Value: #buffer_value_type_participants#)\n }\n }\n Button(Class: btn btn-primary pull-right fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=4\", Contract: @1VotingWizardBuffer).Popup(50, $@1voting_wizard$)\n Button(Class: btn btn-default pull-right fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=2\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)}\n\n\n }.ElseIf(And(#stage# == 4, #buffer_value_type_participants# != 1)){\n If(#new_participant# == \"\"){\n SetVar(new_participant, 0)\n }\n If(#member_participants# == \"\"){\n If(#buffer_value_member_participants# != \"\"){\n SetVar(member_participants, #buffer_value_member_participants#)\n }.Else{\n SetVar(member_participants, 0)\n }\n }\n If(#role_participants# == \"\"){\n If(#buffer_value_role_participants# != \"\"){\n SetVar(role_participants, #buffer_value_role_participants#)\n }.Else{\n SetVar(role_participants, 0)\n }\n }\n If(#group_participants# == \"\"){\n If(#buffer_value_group_participants# != \"\"){\n SetVar(group_participants, #buffer_value_group_participants#)\n }.Else{\n SetVar(group_participants, 0)\n }\n }\n\n If(#buffer_value_type_participants# == 2){\n If(#new_participant# != 0){\n If(#member_participants# == 0){\n SetVar(member_participants, #new_participant#)\n }.Else{\n SetVar(member_participants, \"#member_participants#,#new_participant#\")\n }\n }\n DBFind(\"@1keys\", src_participants).Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": {\"$in\": [#member_participants#]}, \"deleted\": 0}).Count(participants_count).Custom(_id){\n #account#\n }.Custom(_name){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Count(have_name).Vars(participant)\n If(#have_name# > 0){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #participant_member_name#)\n }.Else{\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #account#)\n }\n }\n }.ElseIf(#buffer_value_type_participants# == 6){\n If(#new_participant# != 0){\n If(#group_participants# == 0){\n SetVar(group_participants, #new_participant#)\n }.Else{\n SetVar(group_participants, \"#group_participants#,#new_participant#\")\n }\n }\n If(#group_participants# != 0){\n DBFind(\"@1groups_participants\", src_participants).Where({\"ecosystem\": \"#ecosystem_id#\", \"groups_info->id\": {\"$in\": [#group_participants#]}}).Columns(\"member->account,groups_info->id\").Count(participants_count).Custom(_id){\n #member.account#\n }.Custom(_name){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#member.account#\"}).Count(have_name).Vars(participant)\n If(#have_name# > 0){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #participant_member_name#)\n }.Else{\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #account#)\n }\n }\n }\n }.ElseIf(#buffer_value_type_participants# > 2){\n If(#new_participant# != 0){\n If(#role_participants# == 0){\n SetVar(role_participants, #new_participant#)\n }.Else{\n SetVar(role_participants, \"#role_participants#,#new_participant#\")\n }\n }\n If(And(Or(#buffer_value_type_participants# == 3, #buffer_value_type_participants# == 4), #role_participants# != 0)){\n DBFind(\"@1roles_participants\", src_participants).Where({\"ecosystem\": \"#ecosystem_id#\", \"role->id\": {\"$in\": [#role_participants#]}}).Columns(\"member->account,role->id\").Count(participants_count).Custom(_id){\n #member.account#\n }.Custom(_name){\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#member.account#\"}).Count(have_name).Vars(participant)\n If(#have_name# > 0){\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #participant_member_name#)\n }.Else{\n LinkPage(Class: text-primary h5 text-bold, Page: @1profile_view, PageParams: \"v_account=#account#\", Body: #account#)\n }\n }.Custom(_sent){\n $@1voting_role_added$\n }.Custom(_member_roles){\n DBFind(\"@1roles\").Columns(\"id,role_name,image_id\").WhereId(#role.id#).Vars(rl)\n LinkPage(Class: text-primary h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#rl_id#\"){\n If(#rl_image_id# > 0){\n Image(Src: Binary().ById(#rl_image_id#), Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #rl_role_name#\n }.Else{\n Div(){\n Span(Class: fa icon-settings fa-2x mr-sm).(#rl_role_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n }\n }.ElseIf(And(#buffer_value_type_participants# == 5, #role_participants# != 0)){\n DBFind(\"@1roles\", src_participants).Columns(\"id,role_name,image_id\").Where({\"id\": {\"$in\": [#role_participants#]}}).Count(participants_count).Custom(_sent){\n $@1voting_role_added$\n }.Custom(_member_roles){\n LinkPage(Class: text-primary h5 text-bold, Page: @1roles_view, PageParams: \"v_role_id=#id#\"){\n If(#image_id# > 0){\n Image(Src: Binary().ById(#image_id#), Class: mr-sm).Style(width: 30px; border: 1px solid #5A5D63;)\n #role_name#\n }.Else{\n Div(){\n Span(Class: fa icon-settings fa-2x mr-sm).(#role_name#)\n }.Style(display:flex; align-items:center;)\n }\n }\n }\n }\n }\n\n If(#participants_count# > 0){\n Div(list-group-item mb-lg){\n If(#buffer_value_type_participants# == 5){\n Table(src_participants, \"$@1role$=_member_roles,=_sent\")\n }.ElseIf(#buffer_value_type_participants# == 4){\n Table(src_participants, \"$@1role$=_member_roles,=_sent,$@1member$=_name,=_id,\")\n }.Else{\n Table(src_participants, \"$@1member$=_name,=_id\")\n }\n }\n }\n If(#buffer_value_type_participants# != 1){\n Div(row){\n If(#buffer_value_type_participants# == 2){\n DBFind(\"@1keys\", src_keys).Where({\"ecosystem\": \"#ecosystem_id#\", \"$and\": [{\"account\": {\"$neq\": \"#guest_account#\"}}, {\"account\": {\"$nin\": [#member_participants#]}}], \"deleted\": 0}).Columns(\"account\").Count(keys_count).Custom(_name){\n SetVar(m_member_name,)\n DBFind(\"@1members\").Where({\"ecosystem\": \"#ecosystem_id#\", \"account\": \"#account#\"}).Columns(\"account,member_name\").Count(have_name).Vars(m)\n #account#\n If(#have_name# > 0){\n \" (#m_member_name#)\"\n }\n }\n SetVar(source, \"src_keys\")\n SetVar(value, \"account\")\n SetVar(select_label, $@1member$)\n SetVar(hint, $@1select_member$)\n }.ElseIf(#buffer_value_type_participants# == 6){\n DBFind(\"@1groups\", src_groups).Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0, \"id\": {\"$nin\": [#group_participants#]}}).Count(groups_count).Columns(\"id,group_name\").Custom(_name){\n Span(#group_name#)\n }\n SetVar(source, \"src_groups\")\n SetVar(value, \"id\")\n SetVar(select_label, $@1group$)\n SetVar(hint, $@1select_group$)\n }.ElseIf(#buffer_value_type_participants# > 2){\n DBFind(\"@1roles\", src_roles).Where({\"ecosystem\": \"#ecosystem_id#\", \"deleted\": 0, \"id\": {\"$nin\": [#role_participants#]}}).Count(roles_count).Columns(\"id,role_name\").Custom(_name){\n Span(#role_name#)\n }\n SetVar(source, \"src_roles\")\n SetVar(value, \"id\")\n SetVar(select_label, $@1role$)\n SetVar(hint, $@1select_role$)\n }\n Div(col-md-2 mt-sm text-right){\n Label(){\n Span(#select_label#)\n Span(*, text-danger)\n }\n }\n Div(col-md-10 text-left){\n If(#participants_count# == \"\"){\n SetVar(participants_count, 0)\n }\n If(#roles_count# == \"\"){\n SetVar(roles_count, 0)\n }\n If(#groups_count# == \"\"){\n SetVar(groups_count, 0)\n }\n If(Or(And(#buffer_value_type_participants# == 2, #keys_count# > 0), And(#buffer_value_type_participants# == 3, #participants_count# == 0), And(#buffer_value_type_participants# == 6, #participants_count# == 0), And(#buffer_value_type_participants# > 3, #roles_count# > 0))){\n Div(input-group){\n Select(Name: VarId, Source: #source#, NameColumn: _name, ValueColumn: #value#)\n Div(input-group-btn){\n Button(Class: btn bg-gray-lighter fa fa-plus buttons, Page: #this_page#, PageParams: \"stage=4,new_participant=Val(VarId),member_participants=#member_participants#,role_participants=#role_participants#,group_participants=#group_participants#\").Popup(50, $@1voting_wizard$)\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=4,member_participants=0,role_participants=0,group_participants=0\").Popup(50, $@1voting_wizard$)\n }\n }\n Div(Class: m0 h6 text-muted, Body: #hint#)\n }.ElseIf(#buffer_value_type_participants# == 3){\n Div(input-group){\n Input(Class: mb, Disabled: 1, Value: \"$@1voting_one_role_allowed$\")\n Div(input-group-btn input-group-top){\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=4,member_participants=0,role_participants=0,group_participants=0\").Popup(50, $@1voting_wizard$)\n }\n }\n }.ElseIf(#buffer_value_type_participants# == 6){\n Div(input-group){\n Input(Class: mb, Disabled: 1, Value: \"$@1voting_one_group_allowed$\")\n Div(input-group-btn input-group-top){\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=4,member_participants=0,role_participants=0,group_participants=0\").Popup(50, $@1voting_wizard$)\n }\n }\n }.ElseIf(#buffer_value_type_participants# > 3){\n Div(input-group){\n Input(Class: mb, Disabled: 1, Value: \"$@1voting_all_roles_added$\")\n Div(input-group-btn input-group-top){\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=4,member_participants=0,role_participants=0,group_participants=0\").Popup(50, $@1voting_wizard$)\n }\n }\n }.Else{\n Div(input-group){\n Input(Class: mb, Disabled: 1, Value: \"$@1voting_all_members_added$\")\n Div(input-group-btn input-group-top){\n Button(Class: btn bg-gray-lighter fa fa-undo buttons, Page: #this_page#, PageParams: \"stage=4,member_participants=0,role_participants=0,group_participants=0\").Popup(50, $@1voting_wizard$)\n }\n }\n }\n }\n }\n }\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=5\", Contract: @1VotingWizardBuffer, Params: \"MemberParticipants=#member_participants#,RoleParticipants=#role_participants#,GroupParticipants=#group_participants#\").Popup(50, $@1voting_wizard$)\n Button(Class: btn btn-default pull-right mt-sm fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right mt-sm fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=3\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mt-sm mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square#)Em(Class: #square#)Em(Class: #square#)}\n\n\n }.ElseIf(Or(#stage# == 5, And(#stage# == 4, #buffer_value_type_participants# == 1))){\n If(#count_type_voters# == \"\"){\n SetVar(count_type_voters, 0)\n }\n If(#buffer_value_volume# == \"\"){\n SetVar(buffer_value_volume, 51)\n }\n If(#buffer_value_rating# == \"\"){\n SetVar(buffer_value_rating, \"false\")\n }\n If(And(#buffer_value_type_decision# != 1, #buffer_value_type_decision# != 2)){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1vote_count_type)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Data(type_voters,\"id,name\"){\n 0,$@1percent_votes$\n 1,$@1number_votes$\n }\n Select(Name: CountTypeVoters, Source: type_voters, NameColumn: name, ValueColumn: id, Value: #buffer_value_count_type_voters#)\n }\n }\n }.Else{\n Input(Name: CountTypeVoters, Type: hidden, Value: 0)\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_quorum)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(m0 h6 text-muted){\n If(#buffer_value_quorum# != \"\"){\n Input(Name: Quorum, Type: number, Value: #buffer_value_quorum#)\n }.Else{\n Input(Name: Quorum, Type: number, Value: 30)\n }\n $@1voting_quorum_desc$\n }.Show(CountTypeVoters=0)\n Div(m0 h6 text-muted){\n If(#buffer_value_quorum# != \"\"){\n Input(Name: Quorum, Type: number, Value: #buffer_value_quorum#)\n }.Else{\n Input(Name: Quorum, Type: number, Value: 3)\n }\n $@1voting_quorum_number_desc$\n }.Show(CountTypeVoters=1)\n }\n }\n If(#buffer_value_type_participants# != 5){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_rating)\n }\n }\n Div(col-md-9 mt-sm text-left){\n Input(Name: rating_switch, Placeholder: $@1voting_rating_desc$, Type: checkbox, Value: #buffer_value_rating#, Class: m0 text-muted)\n }\n }\n }.Else{\n Input(Name: rating_switch, Type: hidden, Value: \"false\")\n }\n If(And(#buffer_value_type_decision# != 1, #buffer_value_type_decision# != 2)){\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_volume)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Volume, Type: number, Value: #buffer_value_volume#)\n Div(m0 h6 text-muted){\n $@1voting_volume_desc$\n }\n }\n }.Show(CountTypeVoters=0)\n }\n If(#buffer_value_type_participants# == 1){\n SetVar(previous_stage_button, 3)\n }.Else{\n SetVar(previous_stage_button, 4)\n }\n Div(){\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=6\", Contract: @1VotingWizardBuffer, Params: \"Rating=true\").Popup(50, $@1voting_wizard$)\n }.Show(rating_switch=true)\n Div(){\n Button(Class: btn btn-primary pull-right mt-sm fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=6\", Contract: @1VotingWizardBuffer, Params: \"Rating=false\").Popup(50, $@1voting_wizard$)\n }.Hide(rating_switch=true)\n Button(Class: btn btn-default pull-right mt-sm fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right mt-sm fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=#previous_stage_button#\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mt-sm mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square#)Em(Class: #square#)}\n\n\n }.ElseIf(#stage# == 6){\n If(#buffer_value_start_time# == \"\"){\n SetVar(buffer_value_start_time, \"00:00\")\n }\n If(#buffer_value_end_time# == \"\"){\n SetVar(buffer_value_end_time, \"00:00\")\n }\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1date_start)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: StartDate, Type: date, Value: #buffer_value_start_date#)\n }\n Div(col-md-6){\n Input(Name: StartTime, Type: time, Value: #buffer_value_start_time#)\n }\n }\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1date_end)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Div(row){\n Div(col-md-6){\n Input(Name: EndDate, Type: date, Value: #buffer_value_end_date#)\n }\n Div(col-md-6){\n Input(Name: EndTime, Type: time, Value: #buffer_value_end_time#)\n }\n }\n }\n }\n Button(Class: btn btn-primary pull-right mt fa fa-chevron-right, Page: #this_page#, PageParams: \"stage=7\", Contract: @1VotingWizardBuffer).Popup(50, $@1voting_wizard$)\n Button(Class: btn btn-default pull-right mt fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right mt fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=5\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mt mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square#)}\n\n\n }.ElseIf(#stage# == 7){\n Div(row){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1voting_title)\n Span(*,text-danger)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Name, Value: \"New voting\")\n }\n }\n Div(row mt-sm){\n Div(col-md-3 mt-sm text-right){\n Label(){\n LangRes(@1description)\n }\n }\n Div(col-md-9 text-left){\n Input(Name: Description, Type: textarea).Style(resize:vertical)\n }\n }\n Input(Name: Type, Type: hidden, Value: 1)\n Button(Class: btn btn-primary pull-right mt fa fa-play, Page: #back_page#, Contract: @1VotingWizardCreate, Params: \"TypeDecision=#buffer_value_type_decision#,CountTypeVoters=#buffer_value_count_type_voters#,TypeParticipants=#buffer_value_type_participants#,MemberParticipants=#buffer_value_member_participants#,RoleParticipants=#buffer_value_role_participants#,GroupParticipants=#buffer_value_group_participants#,Volume=#buffer_value_volume#,Quorum=#buffer_value_quorum#,Rating=#buffer_value_rating#,StartDate=#buffer_value_start_date#,StartTime=#buffer_value_start_time#,EndDate=#buffer_value_end_date#,EndTime=#buffer_value_end_time#,Name=Val(Name),Description=Val(Description),Apply=#buffer_value_apply#,Candidates=#buffer_value_candidates#,RoleId=#buffer_value_role_id#,Vacancies=#buffer_value_vacancies#,ExecuteContract=#buffer_value_execute_contract#,ContractAcceptName=#buffer_value_contract_accept_name#,ContractAcceptParams=#buffer_value_contract_accept_params#,ContractRejectName=#buffer_value_contract_reject_name#,ContractRejectParams=#buffer_value_contract_reject_params#,TextDocument=#buffer_value_text_document#\")\n Button(Class: btn btn-default pull-right mt fa fa-pause, Page: #back_page#)\n Button(Class: btn btn-default pull-right mt fa fa-chevron-left, Page: #this_page#, PageParams: \"stage=6\").Popup(50, $@1voting_wizard$)\n Div(progress-wrapper pull-right mt mr-sm text-muted){Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)Em(Class: #square-filled#)}\n }\n}.Style(\n .progress-wrapper{line-height: 33px;}\n .input-group-top{vertical-align: top;}\n .buttons{\n border: 1px solid #dde6e9;\n padding: 6px 16px;\n }\n)\nIf(#debug# == 1){\n Div(Class: h6 text-muted){\n Div(Body: stage = #stage#)\n Div(Body: type_decision = #buffer_value_type_decision#)\n Div(Body: type_participants = #buffer_value_type_participants#)\n Div(Body: count_type_voters = #buffer_value_count_type_voters#)\n Div(Body: volume = #buffer_value_volume#)\n Div(Body: quorum = #buffer_value_quorum#)\n Div(Body: rating = #buffer_value_rating#)\n Div(Body: start_date = #buffer_value_start_date#)\n Div(Body: start_time = #buffer_value_start_time#)\n Div(Body: end_date = #buffer_value_end_date#)\n Div(Body: end_time = #buffer_value_end_time#)\n Div(Body: voting_name = #buffer_value_voting_name#)\n Div(Body: description = #buffer_value_description#)\n\n Div(Body: member_participants = #buffer_value_member_participants#)\n Div(Body: role_participants = #buffer_value_role_participants#)\n Div(Body: group_participants = #buffer_value_group_participants#)\n\n Div(Body: execute_contract = #buffer_value_execute_contract#)\n Div(Body: contract_accept_name = #buffer_value_contract_accept_name#)\n Div(Body: contract_accept_params = #buffer_value_contract_accept_params#)\n Div(Body: contract_reject_name = #buffer_value_contract_reject_name#)\n Div(Body: contract_reject_params = #buffer_value_contract_reject_params#)\n\n Div(Body: text_document = #buffer_value_text_document#)\n\n Div(Body: candidates = #buffer_value_candidates#)\n Div(Body: apply = #buffer_value_apply#)\n Div(Body: role_id = #buffer_value_role_id#)\n Div(Body: vacancies = #buffer_value_vacancies#)\n }\n}",
"Menu": "default_menu",
"Type": "pages"
},
{
"Name": "TokensLockoutMember",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensLockoutMember {\n data {\n MemberAccount string\n Value int\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1VotingRunTokenRefund\", \"@1TokensRefundAccept\", \"@1TokensRefundReject\", \"@1BlockMember\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name == prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1contract_chain_distorted\", \"en\")\n }\n }\n\n conditions {\n getPermission()\n\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount, \"deleted\": 0}).One(\"account\") {\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n\n if Int($Value) < 0 || Int($Value) > 1 {\n warning LangRes(\"@1value_between_0_and_1\", \"en\")\n }\n }\n\n action {\n DBUpdateExt(\"@1keys\", {\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount, \"deleted\": 0}, {\"blocked\": $Value})\n }\n}",
"Type": "contracts"
},
{
"Name": "BufferManager",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract BufferManager {\n data {\n Action string\n Key string\n Val string \"optional\"\n }\n\n func decodeArray(s string) array {\n var ar array\n if HasPrefix($buf[\"value\"], \"[\") {\n ar = JSONDecode($buf[\"value\"])\n }\n return ar\n }\n\n action {\n $emptyVal = JSONEncode(\"\")\n $buf = DBFind(\"@1buffer_data\").Where({\"ecosystem\": $ecosystem_id, \"key\": $Key, \"account\": $account_id}).Row()\n if !$buf {\n var buf map, id int\n id = DBInsert(\"@1buffer_data\", {ecosystem: $ecosystem_id, key: $Key, value: $emptyVal, account: $account_id})\n buf[\"id\"] = Str(id)\n buf[\"value\"] = \"\"\n buf[\"account\"] = Str($account_id)\n buf[\"key\"] = Str($Key)\n $buf = buf\n }\n var id int\n id = Int($buf[\"id\"])\n if $Action == \"clean\" {\n DBUpdate(\"@1buffer_data\", id, {value:$emptyVal})\n }\n if $Action == \"set\" {\n DBUpdate(\"@1buffer_data\", id, {value:$Val})\n }\n if $Action == \"array_add_value\" {\n var ar array enc string\n ar = decodeArray($buf[\"value\"])\n ar = Append(ar, $Val)\n enc = JSONEncode(ar)\n DBUpdate(\"@1buffer_data\", id, {value:enc})\n }\n if $Action == \"array_remove_value\" {\n var ar arNew array i int enc string\n ar = decodeArray($buf[\"value\"])\n while i < Len(ar){\n if ar[i] != $Val{\n arNew = Append(arNew, ar[i])\n }\n i = i + 1\n }\n enc = JSONEncode(arNew)\n DBUpdate(\"@1buffer_data\", id, {value:enc})\n }\n }\n}\n",
"Type": "contracts"
},
{
"Name": "BufferFileUpload",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract BufferFileUpload {\n data {\n AppId int\n BufferKey string\n FileName string \"optional\"\n FileData file\n }\n\n conditions {\n var app_id int\n app_id = DBFind(\"@1applications\").Where({\"id\": $AppId, \"deleted\": 0}).One(\"id\")\n if !app_id {\n warning LangRes(\"@1app_not_found\", \"en\")\n }\n if $BufferKey == \"\" {\n warning LangRes(\"@1buffer_key_empty\", \"en\")\n }\n }\n\n action {\n var buffer_data map\n if $FileName != \"\" {\n buffer_data[\"binary_id\"] = @1UploadFile(\"Name,Data,ApplicationId\", $FileName, $FileData, Int($AppId))\n } else {\n buffer_data[\"binary_id\"] = @1UploadFile(\"Data,ApplicationId\", $FileData, Int($AppId))\n }\n @1BufferManager(\"Action,Key,Val\", \"set\", $BufferKey, JSONEncode(buffer_data))\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesAccessCheck",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesAccessCheck {\n data {\n Rid int\n }\n\n conditions {\n var role map\n role = DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": $Rid}).Columns(\"id,role_name,deleted,roles_access,role_type,creator->account\").Row()\n if !role {\n warning Sprintf(\"%v: \" + LangRes(\"@1role_not_found\", \"en\"), $this_contract)\n }\n\n if role[\"creator.account\"] == $account_id {\n return\n }\n\n var rids array\n rids = JSONDecode(role[\"roles_access\"])\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": rids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning Sprintf(LangRes(\"@1role_change_no_permission\", \"en\"), role[\"role_name\"])\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesUnassign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesUnassign {\n data {\n RowId int\n }\n\n conditions {\n var assigned map roleId int\n assigned = DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"id\": $RowId, \"deleted\": 0}).Columns(\"id,role->id\").Row()\n if !assigned {\n warning LangRes(\"@1role_participant_not_found\", \"en\")\n }\n var buffer_id int\n buffer_id = Int(assigned[\"role.id\"])\n roleId = Int(DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": buffer_id}).One(\"id\"))\n if roleId == 0 {\n warning LangRes(\"@1role_not_found_in_registry\", \"en\")\n }\n\n var specialRules map prev_contract string\n prev_contract = $stack[0]\n if Len($stack) > 2{\n prev_contract = $stack[Len($stack) - 2]\n }\n specialRules[\"@1VotingConsortiumMemberAccept\"] = 1\n specialRules[\"@1DelegateRefresh\"] = 1\n specialRules[\"@1ConsortiumMemberRequest\"] = 1\n specialRules[\"@1InvestorRefresh\"] = 1\n\n if specialRules[prev_contract] != 1 {\n @1RolesAccessCheck(\"Rid\", roleId)\n }\n }\n\n action {\n var m map\n m[\"deleted\"] = $block_time\n m[\"date_deleted\"] = $block_time\n DBUpdate(\"@1roles_participants\", $RowId, m)\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesAssign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesAssign {\n data {\n Rid int\n MemberAccount string\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n $role = DBFind(\"@1roles\").Where({\"id\": $Rid}).Columns(\"id,deleted,role_type,role_name,image_id,creator->account\").Row()\n if Int($role[\"role_type\"]) == 2 {\n warning LangRes(\"@1elective_role_voting_only\", \"en\")\n }\n if !$role {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount, \"deleted\": 0}).Row() {\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n\n if $role[\"deleted\"] == 1 {\n warning LangRes(\"@1role_deleted_request_impossible\", \"en\")\n }\n\n var specRules map prev_contract string\n prev_contract = $stack[0]\n if Len($stack) > 2{\n prev_contract = $stack[Len($stack) - 2]\n }\n specRules[\"@1VotingConsortiumMemberAccept\"] = 1\n specRules[\"@1DelegateRefresh\"] = 1\n specRules[\"@1ConsortiumMemberRequest\"] = 1\n specRules[\"@1InvestorRefresh\"] = 1\n\n if specRules[prev_contract] != 1 {\n @1RolesAccessCheck(\"Rid\", $Rid)\n }\n }\n\n action {\n if DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": $Rid, \"member->account\": $MemberAccount, \"deleted\": 0}).One(\"id\") {\n // do not re-assign and do not warning because this contract may be called for other\n return\n }\n var role member appointer map\n role[\"id\"] = $role[\"id\"]\n role[\"type\"] = $role[\"role_type\"]\n role[\"name\"] = $role[\"role_name\"]\n role[\"image_id\"] = $role[\"image_id\"]\n\n member = getMemberInfo($MemberAccount)\n appointer = getMemberInfo($account_id)\n var m map\n m[\"role\"] = role\n m[\"member\"] = member\n m[\"appointed\"] = appointer\n m[\"date_created\"] = $block_time\n m[\"ecosystem\"] = $ecosystem_id\n DBInsert(\"@1roles_participants\", m)\n }\n}",
"Type": "contracts"
},
{
"Name": "ConsortiumMemberDelete",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract ConsortiumMemberDelete {\n data {\n Id int\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var roleId int candidateAccount string\n roleId = Int(AppParam(Int($system_app_id), \"role_consortium_member_candidate\", $ecosystem_id))\n candidateAccount = DBFind(\"@1consortium_member_requests\").Where({\"ecosystem\": $ecosystem_id, \"id\": $Id}).One(\"candidate_account\")\n\n $role = DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"deleted\": 0, \"role->id\": roleId, \"member->account\": candidateAccount}).Row()\n if !$role {\n warning LangRes(\"@1candidate_role_not_found\", \"en\")\n }\n }\n\n action {\n DBUpdate(\"@1consortium_member_requests\", $Id, {\"deleted\": 1})\n @1RolesUnassign(\"RowId\", Int($role[\"id\"]))\n }\n}",
"Type": "contracts"
},
{
"Name": "DeleteMember",
"Conditions": "ContractConditions(\"@1AdminCondition\")",
"Value": "contract DeleteMember {\n data {\n MemberAccount string\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1DeleteMember\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name == prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1contract_chain_distorted\", \"en\")\n }\n }\n\n conditions {\n ContractConditions(\"@1AdminCondition\")\n\n getPermission()\n\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount}).One(\"account\"){\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n }\n\n action {\n DBUpdateExt(\"@1keys\", {\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount}, {\"deleted\": 1})\n }\n}",
"Type": "contracts"
},
{
"Name": "FormStateSave",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract FormStateSave {\n data {\n FormName string\n ParamNames string\n Param1 string \"optional\"\n Param2 string \"optional\"\n Param3 string \"optional\"\n Param4 string \"optional\"\n Param5 string \"optional\"\n Param6 string \"optional\"\n Param7 string \"optional\"\n Param8 string \"optional\"\n Param9 string \"optional\"\n Param10 string \"optional\"\n Param11 string \"optional\"\n Param12 string \"optional\"\n Param13 string \"optional\"\n Param14 string \"optional\"\n Param15 string \"optional\"\n Param16 string \"optional\"\n Param17 string \"optional\"\n Param18 string \"optional\"\n Param19 string \"optional\"\n Param20 string \"optional\"\n }\n\n conditions {\n if $FormName == \"\" {\n warning LangRes(\"@1form_state_name_needed\", \"en\")\n }\n if $ParamNames == \"\" {\n warning LangRes(\"@1form_state_param_names_needed\", \"en\")\n }\n }\n\n action {\n var val_array array\n val_array = [$Param1,$Param2,$Param3,$Param4,$Param5,$Param6,$Param7,$Param8,$Param9,$Param10,$Param11,$Param12,$Param13,$Param14,$Param15,$Param16,$Param17,$Param18,$Param19,$Param20]\n $ParamName = Split($ParamNames, \";\")\n var buffer_data map, i int\n i = 0\n while i < Len($ParamName) {\n buffer_data[$ParamName[i]] = val_array[i]\n i = i + 1\n }\n @1BufferManager(\"Action,Key,Val\", \"set\", $FormName, JSONEncode(buffer_data))\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsAccessCheck",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsAccessCheck {\n data {\n GroupId int\n }\n\n conditions {\n var group map\n group = DBFind(\"@1groups\").Where({\"ecosystem\": $ecosystem_id, \"id\": $GroupId}).Columns(\"id,group_name,deleted,group_access,creator->account\").Row()\n if !group {\n warning Sprintf(\"%v: \" + \"group not found\", $this_contract)\n }\n\n if group[\"creator.account\"] == $account_id {\n return\n }\n\n var gr_ids array\n gr_ids = JSONDecode(group[\"group_access\"])\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": gr_ids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning Sprintf(LangRes(\"@1group_change_no_permission\", \"en\"), group[\"group_name\"])\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "NotificationsProcess",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NotificationsProcess {\n data {\n NotificId int\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n $notify = DBFind(\"@1notifications\").Where({\"ecosystem\": $ecosystem_id, \"id\": $NotificId}).Columns(\"recipient->role_id,sender->type,date_start_processing\").Row()\n if !$notify {\n warning LangRes(\"@1notification_not_found\", \"en\")\n }\n\n if $notify[\"sender.type\"] == 2 {\n if Int($notify[\"date_start_processing\"]) != 0 {\n warning LangRes(\"@1notification_processing_started_already\", \"en\")\n }\n var rid string\n rid = Int($notify[\"recipient.role_id\"])\n if rid > 0{\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": rid, \"member->account\": $account_id, \"deleted\": 0}).One(\"id\") {\n warning LangRes(\"@1notification_not_part_of_role\", \"en\")\n }\n }\n } else {\n if $notify[\"sender.type\"] != 1 {\n warning LangRes(\"@1notification_type_not_found\", \"en\")\n }\n }\n }\n\n action {\n var model map\n model[\"processing_info\"] = getMemberInfo($account_id)\n model[\"date_start_processing\"] = $block_time\n DBUpdate(\"@1notifications\", $NotificId, model)\n }\n}",
"Type": "contracts"
},
{
"Name": "NotificationsSend",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NotificationsSend {\n data {\n MemberAccount string \"optional\"\n Rid int \"optional\"\n GroupId int \"optional\"\n Closure int \"optional\"\n Sender int\n Icon string \"optional\"\n Header string\n Body string \"optional\"\n Page string\n Params string // json encoded expected\n CurrentRid int \"optional\"\n EcosystemId int \"optional\"\n Popup string \"optional\"\n }\n\n func getMemberInfo(account string, ecoId int) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": ecoId, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Where({\"ecosystem\": ecoId, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n func sendNotify(recipient map) {\n var notification map\n notification[\"header\"] = $Header\n notification[\"type\"] = $notify_type\n notification[\"icon\"] = $Icon\n notification[\"body\"] = $Body\n if $Popup == \"true\" || $Popup == \"1\" {\n notification[\"popup\"] = 1\n } else {\n notification[\"popup\"] = 0\n }\n var sender map\n if $Sender == 1 && $senderMember {\n // send from member\n sender[\"type\"] = $Sender\n sender[\"account\"] = $senderMember[\"account\"]\n sender[\"member_name\"] = $senderMember[\"member_name\"]\n sender[\"image_id\"] = $senderMember[\"image_id\"]\n } else {\n if $Sender == 2 && $senderRole {\n // send from role\n sender[\"type\"] = $Sender\n sender[\"role_id\"] = $senderRole[\"id\"]\n sender[\"role_name\"] = $senderRole[\"role_name\"]\n sender[\"image_id\"] = $senderRole[\"image_id\"]\n }\n }\n var model map\n model[\"recipient\"] = recipient\n model[\"sender\"] = sender\n model[\"notification\"] = notification\n model[\"page_name\"] = $Page\n model[\"page_params\"] = $Params\n model[\"date_created\"] = $block_time\n model[\"ecosystem\"] = $EcosystemId\n DBInsert(\"@1notifications\", model)\n }\n\n func sendToRole(roleId, ecoId int) {\n var role recipient map\n role = DBFind(\"@1roles\").Where({\"ecosystem\": ecoId, \"id\": roleId}).Row()\n recipient[\"role_id\"] = role[\"id\"]\n recipient[\"role_name\"] = role[\"role_name\"]\n recipient[\"image_id\"] = role[\"image_id\"]\n sendNotify(recipient)\n }\n\n conditions {\n if $EcosystemId == 0 {\n $EcosystemId = $ecosystem_id\n }\n if Size($Icon) < 1 {\n $Icon = \"icon-envelope\"\n }\n if $MemberAccount && $MemberAccount != \"0\" {\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $EcosystemId, \"account\": $MemberAccount, \"deleted\": 0}).Row() {\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n $notify_type = 1\n } elif $Rid > 0 {\n $notify_type = 2\n if !DBFind(\"@1roles\").Where({\"ecosystem\": $EcosystemId, \"id\": $Rid}).One(\"id\") {\n warning $this_contract + \": \" + LangRes(\"@1recipient_role_not_found\", \"en\")\n }\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $EcosystemId, \"role->id\": $Rid, \"deleted\": 0}).One(\"id\") {\n warning $this_contract + \": \" + LangRes(\"@1recipient_role_no_members\", \"en\")\n }\n } elif $GroupId > 0 {\n $notify_type = 1\n if !DBFind(\"@1groups\").Where({\"ecosystem\": $EcosystemId, \"id\": $GroupId}).One(\"id\") {\n warning $this_contract + \": \" + LangRes(\"@1recipient_group_not_found\", \"en\")\n }\n if !DBFind(\"@1groups_participants\").Where({\"ecosystem\": $EcosystemId, \"groups_info->id\": $GroupId, \"deleted\": 0}).One(\"id\") {\n warning $this_contract + \": \" + LangRes(\"@1recipient_group_no_members\", \"en\")\n }\n } else {\n warning $this_contract + \": \" + LangRes(\"@1notification_type_not_defined\", \"en\")\n }\n $senderMember = nil\n $senderRole = nil\n if $Sender == 1 {\n $senderMember = getMemberInfo($account_id, $ecosystem_id)\n } elif $Sender == 2 {\n if !RoleAccess($CurrentRid) {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n $senderRole = DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": $CurrentRid}).Row()\n if !$senderRole {\n warning $this_contract + \": \" + LangRes(\"@1sender_role_not_found\", \"en\")\n }\n } else {\n warning $this_contract + \": \" + LangRes(\"@1sender_invalid\", \"en\")\n }\n }\n\n action {\n if $MemberAccount && $MemberAccount != \"0\" {\n sendNotify(getMemberInfo($MemberAccount, $EcosystemId))\n UpdateNotifications($EcosystemId, $MemberAccount)\n } elif $Rid > 0 {\n if $Closure == 1 {\n // Single closure: one begins the process - the others do not see\n sendToRole($Rid, $EcosystemId)\n UpdateRolesNotifications($EcosystemId, Int($Rid))\n } else {\n // Multiple closure: to each his own notification\n $notify_type = 1\n var participants array\n participants = DBFind(\"@1roles_participants\").Where({\"ecosystem\": $EcosystemId, \"role->id\": $Rid, \"deleted\": 0}).Columns(\"member->account\")\n var i int\n while i < Len(participants) {\n var p map\n p = participants[i]\n sendNotify(getMemberInfo(p[\"member.account\"], $EcosystemId))\n UpdateNotifications($EcosystemId, p[\"member.account\"])\n i = i + 1\n }\n }\n } elif $GroupId > 0 {\n var participants array\n participants = DBFind(\"@1groups_participants\").Where({\"ecosystem\": $EcosystemId, \"groups_info->id\": $GroupId, \"deleted\": 0}).Columns(\"member->account\")\n var i int\n while i < Len(participants) {\n var p map\n p = participants[i]\n sendNotify(getMemberInfo(p[\"member.account\"], $EcosystemId))\n UpdateNotifications($EcosystemId, p[\"member.account\"])\n i = i + 1\n }\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupAccessManager",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupAccessManager {\n data {\n Action string\n ManagerRid string \"optional\"\n GroupId int \"optional\"\n GroupName string \"optional\"\n GroupType int \"optional\"\n GroupInfo string \"optional\"\n }\n\n func updateAccess(ra array) {\n var group_access string\n group_access = JSONEncode(ra)\n DBUpdate(\"@1groups\", $GroupId, {\"group_access\": group_access})\n }\n\n func updateBufferAccess(ra array) {\n var groups_access string\n groups_access = JSONEncode(ra)\n var filled map\n filled[\"groups_access\"] = groups_access\n filled[\"group_name\"] = $GroupName\n filled[\"group_type\"] = $GroupType\n filled[\"group_information\"] = $GroupInfo\n if !$buffer_id {\n DBInsert(\"@1buffer_data\", {\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"key\": \"group_access\", \"value\": filled})\n } else {\n DBUpdate(\"@1buffer_data\", Int($buffer_id), {\"value\": filled})\n }\n }\n\n conditions {\n $ManagerRid = Int($ManagerRid)\n if $GroupId > 0 {\n @1GroupsAccessCheck(\"GroupId\", $GroupId)\n $role = DBFind(\"@1groups\").Where({\"ecosystem\": $ecosystem_id, \"id\": $GroupId}).Columns(\"id,group_access\").Row()\n if !$role {\n warning LangRes(\"@1group\" \"@1not_founded\", \"en\")\n }\n if $ManagerRid > 0 {\n if !DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": $ManagerRid}).One(\"id\") {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n }\n var ids array, i int\n $ids = ids\n ids = JSONDecode($role[\"group_access\"])\n while i < Len(ids){\n if ids[i] > 0 {\n $ids = Append($ids, ids[i])\n }\n i = i + 1\n }\n } else {\n $buffer_managers = 0\n $buffer_id = 0\n $ids = []\n var buffer map\n buffer = DBFind(\"@1buffer_data\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"key\": \"group_access\"}).Columns(\"id,value,value->groups_access\").Row()\n if buffer {\n $buffer_managers = buffer[\"value.groups_access\"]\n $buffer_id = buffer[\"id\"]\n }\n }\n }\n\n action {\n if $GroupId == 0 {\n if $buffer_managers {\n $ids = JSONDecode($buffer_managers)\n }\n }\n if $ManagerRid > 0 {\n var i int idsNew array\n if $Action == \"remove\" {\n while i < Len($ids) {\n if $ids[i] != $ManagerRid{\n idsNew = Append(idsNew, $ids[i])\n }\n i = i + 1\n }\n if $GroupId == 0 {\n updateBufferAccess(idsNew)\n } else {\n updateAccess(idsNew)\n }\n }\n if $Action == \"add\" {\n var double bool\n while i < Len($ids) {\n if $ids[i] == $ManagerRid{\n double = true\n }\n i = i + 1\n }\n if !double {\n $ids = Append($ids, $ManagerRid)\n }\n if $GroupId == 0 {\n updateBufferAccess($ids)\n } else {\n updateAccess($ids)\n }\n }\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsAssign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsAssign {\n data {\n GroupId int\n MemberAccount string\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Columns(\"id\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n $group = DBFind(\"@1groups\").Where({\"id\": $GroupId}).Columns(\"id,deleted,group_type,group_name,image_id,creator->account\").Row()\n if !$group {\n warning LangRes(\"@1group_not_found\", \"en\")\n }\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $MemberAccount, \"deleted\": 0}).Row() {\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n if Int($group[\"deleted\"]) == 1 {\n warning LangRes(\"@1group_deleted_request_impossible\", \"en\")\n }\n if Int($group[\"group_type\"]) != 1 {\n @1GroupsAccessCheck(\"GroupId\", $GroupId)\n }\n }\n\n action {\n if DBFind(\"@1groups_participants\").Where({\"ecosystem\": $ecosystem_id, \"groups_info->id\": $GroupId, \"member->account\": $MemberAccount, \"deleted\": 0}).One(\"id\") {\n // do not re-assign and do not warning because this contract may be called for other\n return\n }\n\n var group member appointer map\n group[\"id\"] = $group[\"id\"]\n group[\"type\"] = $group[\"group_type\"]\n group[\"name\"] = $group[\"group_name\"]\n group[\"image_id\"] = $group[\"image_id\"]\n member = getMemberInfo($MemberAccount)\n appointer = getMemberInfo($account_id)\n\n var m map\n m[\"groups_info\"] = group\n m[\"member\"] = member\n m[\"appointed\"] = appointer\n m[\"date_created\"] = $block_time\n m[\"ecosystem\"] = $ecosystem_id\n DBInsert(\"@1groups_participants\", m)\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsAssignList",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsAssignList {\n data {\n Keys string\n GroupId int\n }\n\n func addPub(pub_key string) {\n if HasPrefix(pub_key, \"04\") {\n pub_key = Substr(pub_key, 2, Size(pub_key) - 2)\n }\n if Size(pub_key) < 128 {\n warning LangRes(\"@1key_too_short\", \"en\")\n }\n if Size(pub_key) > 128 {\n warning LangRes(\"@1key_too_long\", \"en\")\n }\n\n var account_key int account string\n account_key = PubToID(pub_key)\n if account_key == 0 {\n warning LangRes(\"@1public_key_invalid\", \"en\")\n }\n account = IdToAddress(account_key)\n $check_user = DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0})\n if !$check_user {\n warning Sprintf(\"%v: \" + \"key not found\", pub_key)\n }\n\n @1GroupsAssign(\"GroupId,MemberAccount\", $GroupId, account)\n }\n\n conditions {\n if $Keys == \"\" {\n warning LangRes(\"@1public_key_empty\", \"en\")\n }\n $Keys = Replace($Keys, \" \", \"\")\n $Keys = Replace($Keys, \"\\n\", \"\")\n $Keys = Replace($Keys, \"\\r\", \"\")\n }\n\n action {\n if Contains($Keys, \",\") {\n var pub_array array i int\n pub_array = Split($Keys, \",\")\n while i < Len(pub_array) {\n var pub_key string\n pub_key = Str(pub_array[i])\n addPub(pub_key)\n i = i + 1\n }\n } else {\n addPub($Keys)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsCreate",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsCreate {\n data {\n GroupName string \"optional\"\n GroupType int \"optional\"\n GroupInfo string \"optional\"\n GroupId int \"optional\"\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Columns(\"id\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n if $GroupId == 0 {\n if $GroupName == \"\" {\n info LangRes(\"@1group_name_cannot_be_empty\", \"en\")\n }\n if $GroupType == 0 {\n info LangRes(\"@1group_type_error\", \"en\")\n }\n }\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n $check_access = AppParam(Int($system_app_id), \"role_creates_groups\", $ecosystem_id)\n if $check_access != \"\" {\n var rids array\n rids = JSONDecode(\"[\" + $check_access + \"]\")\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": rids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n } else {\n var admin_id string\n admin_id = AppParam(Int($system_app_id), \"role_admin\", $ecosystem_id)\n var rids array\n rids = JSONDecode(\"[\" + admin_id + \"]\")\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": rids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n }\n if $GroupName == DBFind(\"@1groups\").Where({\"ecosystem\": $ecosystem_id, \"group_name\": $GroupName}).One(\"group_name\") {\n warning LangRes(\"@1group_name_already\", \"en\")\n }\n }\n\n action {\n if $GroupId == 0 {\n var roles_access_arr array, buffer map\n buffer = DBFind(\"@1buffer_data\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"key\": \"group_access\"}).Columns(\"id,value,value->groups_access\").Row()\n if buffer {\n roles_access_arr = JSONDecode(buffer[\"value.groups_access\"])\n var filled map\n filled[\"groups_access\"] = []\n filled[\"group_name\"] = \"\"\n filled[\"group_type\"] = \"\"\n filled[\"group_information\"] = \"\"\n DBUpdate(\"@1buffer_data\", Int(buffer[\"id\"]), {\"value\": filled})\n }\n\n var m map\n m[\"creator\"] = getMemberInfo($account_id)\n m[\"group_name\"] = $GroupName\n m[\"group_type\"] = $GroupType\n m[\"date_created\"] = $block_time\n m[\"group_access\"] = JSONEncode(roles_access_arr)\n m[\"group_info\"] = $GroupInfo\n m[\"ecosystem\"] = $ecosystem_id\n DBInsert(\"@1groups\", m)\n } else {\n var m map\n m[\"group_info\"] = $GroupInfo\n DBUpdate(\"@1groups\",$GroupId, m)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsUnassign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsUnassign {\n data {\n RowId int\n }\n\n conditions {\n var assigned map\n assigned = DBFind(\"@1groups_participants\").Where({\"ecosystem\": $ecosystem_id, \"id\": $RowId, \"deleted\": 0}).Columns(\"id,ecosystem,deleted,groups_info->id,member->account\").Row()\n if !assigned {\n warning LangRes(\"@1group_participant_not_found\", \"en\")\n }\n\n var buffer_id int group map\n buffer_id = Int(assigned[\"groups_info.id\"])\n\n group = DBFind(\"@1groups\").Where({\"ecosystem\": $ecosystem_id, \"id\": buffer_id}).Row()\n $groupId = Int(group[\"id\"])\n $groupType = Int(group[\"group_type\"])\n\n if $groupId == 0 {\n warning LangRes(\"@1group_not_found\", \"en\")\n }\n if $groupType == 1 {\n if assigned[\"member.account\"] != $account_id {\n @1GroupsAccessCheck(\"GroupId\", $groupId)\n }\n } else {\n @1GroupsAccessCheck(\"GroupId\", $groupId)\n }\n }\n\n action {\n var m map\n m[\"deleted\"] = 1\n m[\"date_deleted\"] = $block_time\n DBUpdate(\"@1groups_participants\", $RowId, m)\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupsDelete",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupsDelete {\n data {\n GroupId int\n Ops string\n }\n\n conditions {\n @1GroupsAccessCheck(\"GroupId\", $GroupId)\n }\n\n action {\n // delete all participants\n var participants array i int\n participants = DBFind(\"@1groups_participants\").Where({\"groups_info->id\": $GroupId, \"deleted\": 0}).Columns(\"id\")\n while i < Len(participants) {\n var p map\n p = participants[i]\n @1GroupsUnassign(\"RowId\", Int(p[\"id\"]))\n i = i + 1\n }\n\n var m map\n if $Ops == \"D\" {\n m[\"deleted\"] = 1\n m[\"date_deleted\"] = $block_time\n }\n if $Ops == \"R\" {\n m[\"deleted\"] = 0\n }\n DBUpdate(\"@1groups\", $GroupId, m)\n }\n}",
"Type": "contracts"
},
{
"Name": "ConsortiumMemberRequest",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract ConsortiumMemberRequest {\n data {\n TcpAddress string\n ApiAddress string\n CandidateAccount string\n PubKey string\n Description string \"optional\"\n Comment string \"optional\"\n }\n\n conditions {\n if $ecosystem_id != 1 {\n warning LangRes(\"@1contract_first_ecosystem_only\", \"en\")\n }\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $CandidateAccount, \"deleted\": 0}).Row() {\n warning LangRes(\"@1address_invalid\", \"en\")\n }\n }\n\n action {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var roleId int\n roleId = Int(AppParam(Int($system_app_id), \"role_consortium_member_candidate\", $ecosystem_id))\n if !DBFind(\"@1roles\").Where({\"ecosystem\": 1, \"id\": roleId, \"deleted\": 0}).One(\"id\") {\n warning Sprintf(LangRes(\"@1role_app_param_not_found\", \"en\"), \"role_consortium_member_candidate\")\n }\n @1RolesAssign(\"Rid,MemberAccount\", roleId, $account_id)\n\n var m map\n m[\"candidate_account\"] = $CandidateAccount\n m[\"tcp_address\"] = $TcpAddress\n m[\"api_address\"] = $ApiAddress\n m[\"pub_key\"] = $PubKey\n m[\"description\"] = $Description\n m[\"comment\"] = $Comment\n m[\"date_created\"] = $block_time\n m[\"deleted\"] = 0\n DBInsert(\"@1consortium_member_requests\", m)\n }\n}",
"Type": "contracts"
},
{
"Name": "MembershipAdd",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract MembershipAdd {\n data {\n Keys string\n }\n\n func addPub(pub string) {\n pub = Replace(pub, \" \", \"\")\n if Size(pub) < 128 {\n warning LangRes(\"@1key_too_short\", \"en\")\n }\n if Size(pub) > 130 {\n warning LangRes(\"@1key_too_long\", \"en\")\n }\n\n var account_key int account string\n account_key = PubToID(pub)\n if account_key == 0 {\n warning LangRes(\"@1public_key_invalid\", \"en\")\n }\n account = IdToAddress(account_key)\n $check_user = DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0})\n if $check_user {\n warning LangRes(\"@1wallet_already_exists\", \"en\")\n }\n var pub_bytes bytes\n pub_bytes = HexToPub(pub)\n DBInsert(\"@1keys\", {\"ecosystem\": $ecosystem_id, \"id\": account_key, \"account\": account, \"pub\": pub_bytes, \"deleted\": 0})\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n if $Keys == \"\" {\n warning LangRes(\"@1public_key_empty\", \"en\")\n }\n $Keys = Replace($Keys, \" \", \"\")\n $Keys = Replace($Keys, \"\\n\", \"\")\n $Keys = Replace($Keys, \"\\r\", \"\")\n\n var admin_id int\n admin_id = Int(AppParam(Int($system_app_id), \"role_admin\", $ecosystem_id))\n\n if !RoleAccess(admin_id) {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n\n if $ecosystem_id == 1 {\n warning LangRes(\"@1impossible_for_platform_ecosystem\", \"en\")\n }\n }\n\n action {\n if Contains($Keys, \",\") {\n var pub_array array\n pub_array = Split($Keys, \",\")\n\n var i int\n while i < Len(pub_array) {\n var pub_key string\n pub_key = Str(pub_array[i])\n addPub(pub_key)\n i = i + 1\n }\n } else {\n addPub($Keys)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "NotificationsClose",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NotificationsClose {\n data {\n NotificId int\n }\n\n func getPermission() int {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1TokensRefundAccept\", \"@1TokensRefundReject\", \"@1VotingDecisionCheck\", \"@1VotingDelete\", \"@1QAnswer\", \"@1QOperations\", \"@1ErrandDelete\", \"@1GroupRequestDecide\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name==prevContract {\n result = 1\n }\n i = i + 1\n }\n return result\n }\n\n conditions {\n $notify = DBFind(\"@1notifications\").Where({\"ecosystem\": $ecosystem_id, \"id\": $NotificId}).Columns(\"id,date_start_processing,processing_info->account,closed,notification->type,recipient->account,recipient->role_id\").Row()\n if !$notify {\n warning LangRes(\"@1notification_not_found\", \"en\")\n }\n\n // checking the type of notification\n if $notify[\"notification.type\"] != 1 && $notify[\"notification.type\"] != 2 {\n warning LangRes(\"@1notification_type_not_found\", \"en\")\n }\n\n // getting permission\n var flag_permission int\n flag_permission = getPermission()\n\n // checking personal notification\n if $notify[\"notification.type\"] == 1 && flag_permission == 0 {\n if $notify[\"recipient.account\"] != $account_id {\n warning LangRes(\"@1notification_another_member\", \"en\")\n }\n }\n\n // checking role notification\n if $notify[\"notification.type\"] == 2 && flag_permission == 0 {\n if $notify[\"date_start_processing\"] == 0 {\n warning LangRes(\"@1notification_processing_not_started\", \"en\")\n }\n\n if $notify[\"processing_info.account\"] != $account_id {\n warning LangRes(\"@1notice_processing_started_another_member\", \"en\")\n }\n }\n }\n\n action {\n if $notify[\"closed\"] > 0 {\n return\n }\n if $notify[\"notification.type\"] == 1 {\n @1NotificationsProcess(\"NotificId\", $NotificId)\n }\n var m map\n m[\"date_closed\"] = $block_time\n m[\"closed\"] = 1\n DBUpdate(\"@1notifications\", $NotificId, m)\n\n if $notify[\"notification.type\"] == 1 {\n UpdateNotifications($ecosystem_id, $notify[\"recipient.account\"])\n } else {\n UpdateRolesNotifications($ecosystem_id, Int($notify[\"recipient.role_id\"]))\n }\n }\n}\n",
"Type": "contracts"
},
{
"Name": "GroupRequestMembership",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupRequestMembership {\n data {\n GroupId int\n }\n\n conditions {\n $group = DBFind(\"@1groups\").Where({\"id\": $GroupId}).Columns(\"id,deleted,group_type,group_name,image_id,creator->account,group_access,group_name\").Row()\n if !$group {\n warning LangRes(\"@1group_not_found\", \"en\")\n }\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"deleted\": 0}).Row() {\n warning LangRes(\"@1account_not_found\", \"en\")\n }\n if $group[\"deleted\"] == 1 {\n warning LangRes(\"@1group_deleted_request_impossible\", \"en\")\n }\n $check_join = DBFind(\"@1groups_participants\").Where({\"deleted\": 0, \"member->account\": $account_id, \"groups_info->id\": $GroupId, \"ecosystem\": $ecosystem_id}).Columns(\"id,deleted,member,member->account,groups_info,groups_info->id,ecosystem\").One(\"id\")\n if $check_join {\n warning LangRes(\"@1already_group\", \"en\")\n }\n $check_send_notific = DBFind(\"@1notifications\").Where({\"sender->account\": $account_id, \"page_params->gr_id\": $GroupId, \"closed\": 0, \"ecosystem\": $ecosystem_id}).Columns(\"id,closed,ecosystem,sender,sender->account,page_params->gr_id\").One(\"id\")\n if $check_send_notific {\n info LangRes(\"@1request_to_group\", \"en\")\n }\n }\n\n action {\n var gr_ids array i int icon header body page ecoName string\n\n var params map\n params[\"gr_id\"] = $GroupId\n params[\"account\"] = $account_id\n icon = \"icon icon-user-follow\"\n header = \"New request\"\n body = \"New request to the group \" + Str($group[\"group_name\"])\n page = \"@1groups_request_view\"\n\n gr_ids = JSONDecode($group[\"group_access\"])\n if Len(gr_ids) > 0 {\n while i < Len(gr_ids) {\n var id_role int\n id_role = Int(gr_ids[i])\n @1NotificationsSend(\"Rid,Sender,Icon,Header,Body,Page,Params,EcosystemId,Closure\", id_role, 1, icon, header, body, page, params, $ecosystem_id, 1)\n i = i + 1\n }\n } else {\n $creator_id = $group[\"creator.account\"]\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params,EcosystemId\", $creator_id, 1, icon, header, body, page, params, $ecosystem_id)\n }\n }\n}\n",
"Type": "contracts"
},
{
"Name": "MetricsUpdate",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract MetricsUpdate {\n data {\n Interval string\n Aggregate string\n }\n\n func mapping(items array) map {\n var mapout map, i int\n while i < Len(items) {\n var k v string, item map\n item = items[i]\n k = item[\"key\"]\n v = item[\"value\"]\n mapout[k] = v\n i = i + 1\n }\n return mapout\n }\n\n conditions {\n if $Interval <= 0 {\n $Interval = 1\n }\n var current_year int\n current_year = Int(Substr(BlockTime(), 0, 4))\n if $Interval > (current_year - 1970) * 365 {\n warning LangRes(\"@1interval_too_big\", \"en\")\n }\n $interval = Sprintf(LangRes(\"@1x_days\", \"en\"), $Interval)\n }\n\n action {\n var pages members txs array metrics map\n pages = DBSelectMetrics(\"ecosystem_pages\", $interval, $Aggregate)\n members = DBSelectMetrics(\"ecosystem_members\", $interval, $Aggregate)\n txs = DBSelectMetrics(\"ecosystem_tx\", $interval, $Aggregate)\n\n var mPages mMembers mTxs map\n mPages = mapping(pages)\n mMembers = mapping(members)\n mTxs = mapping(txs)\n\n var i lenPages int\n lenPages = Len(pages)\n while i < lenPages {\n var t map, k string\n t = pages[i]\n k = t[\"key\"]\n metrics[k] = Sprintf(LangRes(\"@1pages\", \"en\") + \": %v, \" + LangRes(\"@1members\", \"en\") + \": %v, \" + LangRes(\"@1tx\", \"en\") + \": %v; [%v, %v]\", mPages[k], mMembers[k], mTxs[k], $interval, $Aggregate)\n i = i + 1\n }\n\n if lenPages > 0 {\n @1BufferManager(\"Action,Key,Val\", \"set\", \"metrics\", JSONEncode(metrics))\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "NodeRemoveByKey",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NodeRemoveByKey {\n data {}\n\n func nodesRemove(key int) array {\n var nodesJSON string nodes res array\n nodesJSON = SysParamString(\"full_nodes\")\n if !HasPrefix(nodesJSON, \"[\") {\n // empty string nodes\n return res\n }\n nodes = JSONDecode(nodesJSON)\n var i int\n while i < Len(nodes) {\n var node map\n node = nodes[i]\n if node[\"key_id\"] != key {\n res = Append(res, node)\n }\n i = i + 1\n }\n return res\n }\n\n conditions {\n if $original_contract != \"ConsortiumMemberResign\" {\n warning LangRes(\"@1contract_chain_distorted\", \"en\")\n }\n }\n\n action {\n var nodes array fullNodes string\n nodes = nodesRemove(Int(AddressToId($account_id)))\n fullNodes = JSONEncode(nodes)\n DBUpdateSysParam(\"full_nodes\", fullNodes, \"\")\n }\n}",
"Type": "contracts"
},
{
"Name": "NotificationsBroadcast",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NotificationsBroadcast {\n data {\n RoleId int\n Header string\n Body string\n Popup string \"optional\"\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n if $RoleId != 1 {\n warning LangRes(\"@1admin_only_action\", \"en\")\n }\n if $ecosystem_id != 1 {\n warning LangRes(\"@1first_ecosystem_admin_only_action\", \"en\")\n }\n $ecos = DBFind(\"@1ecosystems\").Columns(\"id\")\n $lenEcos = Len($ecos)\n if $lenEcos == 1 {\n warning LangRes(\"@1other_ecosystems_not_found\", \"en\")\n }\n }\n\n action {\n var i lenIds int eco map ids array sender recipient params note map\n sender = getMemberInfo($account_id)\n sender[\"type\"] = 1\n note[\"header\"] = $Header\n note[\"type\"] = 1\n note[\"icon\"] = \"icon-envelope\"\n note[\"body\"] = $Body\n if $Popup == \"true\" || $Popup == \"1\" {\n note[\"popup\"] = 1\n } else {\n note[\"popup\"] = 0\n }\n\n while i < $lenEcos {\n eco = $ecos[i]\n var ecoId int\n ecoId = Int(eco[\"id\"])\n if ecoId != 1 {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": ecoId, \"name\": \"System\"}).One(\"id\")\n var adminRoleId int\n adminRoleId = Int(AppParam(Int($system_app_id), \"role_admin\", $ecosystem_id))\n ids = DBFind(\"@1roles_participants\").Where({\"ecosystem\": ecoId, \"role->id\": adminRoleId, \"role->type\": 3}).Columns(\"member->account\")\n lenIds = Len(ids)\n var i_ids int\n while i_ids < lenIds {\n recipient = ids[i_ids]\n recipient = getMemberInfo(recipient[\"member.account\"])\n var m map\n m[\"recipient\"] = recipient\n m[\"sender\"] = sender\n m[\"notification\"] = note\n m[\"page_name\"] = \"@1notifications_show\"\n m[\"page_params\"] = params\n m[\"date_created\"] = $block_time\n m[\"ecosystem\"] = ecoId\n DBInsert(\"@1notifications\", m)\n i_ids = i_ids + 1\n }\n }\n i = i + 1\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "GroupRequestDecide",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract GroupRequestDecide {\n data {\n NotificId int\n Accept int\n }\n\n conditions {\n $notific = DBFind(\"@1notifications\").WhereId($NotificId).Columns(\"id,closed,page_params->gr_id,page_params->account,sender,sender->account,recipient,recipient->role_id\").Row()\n if $notific[\"closed\"] == 1 {\n warning LangRes(\"@1request_already\", \"en\")\n }\n }\n\n action {\n $gr_id = Int($notific[\"page_params.gr_id\"])\n $account = Int($notific[\"page_params.account\"])\n if $Accept == 1 {\n @1GroupsAssign(\"GroupId,MemberAccount\", $gr_id, $account)\n }\n var params map\n params[\"gr_id\"] = $gr_id\n if $Accept == 1 {\n params[\"decide\"] = 1\n } else {\n params[\"decide\"] = -1\n }\n var icon header body page ecoName string member i int\n icon = \"icon icon-user-follow\"\n header = \"Request to group\"\n body = \"Solution for your request\"\n page = \"@1groups_request_view\"\n member = $notific[\"sender.account\"]\n if $notific[\"recipient.role_id\"] > 0 {\n var check_send_notific array v map i int\n check_send_notific = DBFind(\"@1notifications\").Columns(\"id,closed,ecosystem,sender,sender->account,page_params->gr_id,page_params->account\").Where({\"sender->account\": member, \"page_params->gr_id\": $gr_id, \"page_params->account\": member, \"closed\": 0, \"ecosystem\": $ecosystem_id})\n while i < Len(check_send_notific) {\n v = check_send_notific[i]\n @1NotificationsProcess(\"NotificId\", Int(v[\"id\"]))\n @1NotificationsClose(\"NotificId\", Int(v[\"id\"]))\n i = i + 1\n }\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params,EcosystemId,CurrentRid\", member, 2, icon, header, body, page, params, $ecosystem_id, Int($notific[\"recipient.role_id\"]))\n } else{\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params,EcosystemId\", member, 1, icon, header, body, page, params, $ecosystem_id)\n @1NotificationsClose(\"NotificId\", $NotificId)\n }\n }\n}\n",
"Type": "contracts"
},
{
"Name": "MembershipDecide",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract MembershipDecide {\n data {\n NotificId int\n Accept int\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n $request = DBFind(\"@1notifications\").Where({\"ecosystem\": $ecosystem_id, \"id\": $NotificId}).Columns(\"id,closed,sender->account,page_params->ecosystem_id,page_params->ecosystem_sender\").Row()\n var ecoId int\n ecoId = Int($request[\"page_params.ecosystem_id\"])\n\n if Int($request[\"closed\"]) == 1 {\n warning LangRes(\"@1request_processed_already\", \"en\")\n }\n\n var admin_id int\n admin_id = Int(AppParam(Int($system_app_id), \"role_admin\", $ecosystem_id))\n if !RoleAccess(admin_id) {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n }\n\n action {\n var params map\n params[\"ecosystem_id\"] = $request[\"page_params.ecosystem_id\"]\n if $Accept == 1 {\n params[\"status\"] = 1\n var pub account string eco_id account_key int\n account = $request[\"sender.account\"]\n account_key = AddressToId(account)\n eco_id = Int($request[\"page_params.ecosystem_id\"])\n pub = DBFind(\"@1keys\").Where({\"ecosystem\": 1, \"account\": account, \"deleted\": 0}).One(\"pub\")\n DBInsert(\"@1keys\", {\"ecosystem\": $ecosystem_id, \"id\": account_key, \"account\": account, \"pub\": pub, \"deleted\": 0})\n } else {\n params[\"status\"] = 0\n }\n\n var icon header body page ecoName ecoId string\n ecoId = $request[\"page_params.ecosystem_id\"]\n ecoName = DBFind(\"@1ecosystems\").Where({\"id\": ecoId}).One(\"name\")\n icon = \"icon icon-user-follow\"\n header = LangRes(\"@1request_approved\", \"en\")\n body = Sprintf(LangRes(\"@1ecosystem_request_approved\", \"en\"), ecoName, ecoId)\n page = \"@1membership_user_view\"\n\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params,EcosystemId\", $request[\"sender.account\"], 1, icon, header, body, page, params, Int($request[\"page_params.ecosystem_sender\"]))\n @1NotificationsProcess(\"NotificId\", $NotificId)\n @1NotificationsClose(\"NotificId\", $NotificId)\n }\n}",
"Type": "contracts"
},
{
"Name": "MembershipRequest",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract MembershipRequest {\n data {\n EcosystemId int\n }\n\n conditions {\n if $ecosystem_id != 1 {\n warning LangRes(\"@1contract_first_ecosystem_only\", \"en\")\n }\n\n if $EcosystemId == 1 {\n warning LangRes(\"@1impossible_for_platform_ecosystem\", \"en\")\n }\n\n if !DBFind(\"@1ecosystems\").Where({\"id\": $EcosystemId}).One(\"id\"){\n warning Sprintf(LangRes(\"@1template_eco_not_exist\", \"en\"), $EcosystemId)\n }\n\n if DBFind(\"@1keys\").Where({\"ecosystem\": $EcosystemId, \"account\": $account_id, \"deleted\": 0}) {\n warning LangRes(\"@1member_added_before\", \"en\")\n }\n\n $free_membership = Int(DBFind(\"@1parameters\").Where({\"ecosystem\": $EcosystemId, \"name\": \"free_membership\"}).One(\"value\"))\n if $free_membership == 0 {\n if DBFind(\"@1notifications\").Where({\"ecosystem\": $EcosystemId, \"page_params->ecosystem_id\": $EcosystemId, \"sender->account\": $account_id, \"closed\": 0, \"page_name\": \"@1membership_admin_view\"}).Row(){\n warning LangRes(\"@1request_sent_already\", \"en\")\n }\n\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $EcosystemId, \"name\": \"System\"}).One(\"id\")\n $admin_id = Int(AppParam(Int($system_app_id), \"role_admin\", $EcosystemId))\n \n if $admin_id == 0 {\n warning LangRes(\"@1recipient_role_not_found\", \"en\")\n }\n }\n }\n\n action {\n if $free_membership == 0 {\n var notific_params map\n notific_params[\"ecosystem_id\"] = $EcosystemId\n notific_params[\"ecosystem_sender\"] = $ecosystem_id\n\n @1NotificationsSend(\"Rid,Sender,Icon,Header,Body,Page,Params,Closure,EcosystemId\", $admin_id, 1, \"icon icon-user-follow\", LangRes(\"@1membership_request_new\", \"en\"), LangRes(\"@1details_view\", \"en\"), \"@1membership_admin_view\", notific_params,1,$EcosystemId)\n }\n if $free_membership == 1 {\n var pub string account_key int\n account_key = AddressToId($account_id)\n pub = DBFind(\"@1keys\").Where({\"ecosystem\": 1, \"account\": $account_id, \"deleted\": 0}).One(\"pub\")\n DBInsert(\"@1keys\", {\"ecosystem\": $EcosystemId, \"id\": account_key, \"account\": $account_id, \"pub\": pub, \"deleted\": 0})\n\n var params map\n params[\"ecosystem_id\"] = $EcosystemId\n params[\"status\"] = 1\n\n var icon header body page ecoName string\n ecoName = DBFind(\"@1ecosystems\").Where({\"id\": $EcosystemId}).One(\"name\")\n icon = \"icon icon-user-follow\"\n header = LangRes(\"@1request_approved\", \"en\")\n body = Sprintf(LangRes(\"@1ecosystem_request_approved\", \"en\"), ecoName, $EcosystemId)\n page = \"@1membership_user_view\"\n\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params,EcosystemId\", $account_id, 1, icon, header, body, page, params, $ecosystem_id)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "NotificationsUpdateParams",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract NotificationsUpdateParams {\n data {\n Params map\n NotificId int\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1ErrandDecision\", \"@1ErrandStatusUpdate\", \"@1ErrandDelete\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n if prevContract == array_permissions[i] {\n return\n }\n i = i + 1\n }\n warning LangRes(\"@1access_denied\", \"en\")\n }\n\n conditions {\n getPermission() //getting permission to run\n }\n\n action {\n DBUpdate(\"@1notifications\",$NotificId,$Params)\n }\n}",
"Type": "contracts"
},
{
"Name": "PlatformAppsSettings",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract PlatformAppsSettings {\n data {\n RoleAdmin int\n RoleConsortiumMemberCandidate int\n RoleConsortiumMember int\n RoleDelegate int\n RoleDeveloper int\n RoleInvestor int\n RoleCreatesRoles int\n }\n \n conditions {\n MainCondition()\n }\n\n func updateParam(name string, value int) {\n if value > 0 {\n var param paramsNew map\n if $app_id > 0 {\n param = DBFind(\"@1app_params\").Where({\"ecosystem\": $ecosystem_id, \"app_id\": $app_id, \"name\": name}).Row()\n if param {\n paramsNew[\"Id\"] = Int(param[\"id\"])\n paramsNew[\"Value\"] = Str(value)\n paramsNew[\"Conditions\"] = param[\"conditions\"]\n CallContract(\"@1EditAppParam\", paramsNew)\n } else {\n paramsNew[\"ApplicationId\"] = $app_id\n paramsNew[\"Name\"] = name\n paramsNew[\"Value\"] = Str(value)\n paramsNew[\"Conditions\"] = \"ContractConditions(\\\"AdminCondition\\\")\"\n CallContract(\"@1NewAppParam\", paramsNew)\n }\n } else {\n warning LangRes(\"@1app_not_found\", \"en\")\n }\n }\n }\n\n action {\n $app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n updateParam(\"role_admin\", $RoleAdmin)\n updateParam(\"role_consortium_member_candidate\", $RoleConsortiumMemberCandidate)\n updateParam(\"role_consortium_member\", $RoleConsortiumMember)\n updateParam(\"role_delegate\", $RoleDelegate)\n updateParam(\"role_developer\", $RoleDeveloper)\n updateParam(\"role_investor_with_voting_rights\", $RoleInvestor)\n updateParam(\"role_creates_roles\", $RoleCreatesRoles)\n }\n}",
"Type": "contracts"
},
{
"Name": "ProfileEdit",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract ProfileEdit {\n data {\n Name string\n Info string \"optional\"\n ImageId string \"optional\"\n }\n\n conditions {\n $member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id}).Row()\n $app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"Basic\", \"deleted\": 0}).One(\"id\")\n $ImageId = Int($ImageId)\n\n if !$Name {\n warning LangRes(\"@1member_name_empty\", \"en\")\n }\n if !$member {\n // check member_name\n if DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"member_name\": $Name}).One(\"id\") {\n warning LangRes(\"@1member_name_taken\", \"en\")\n }\n }\n }\n\n action {\n if $ImageId > 0 {\n $Data = DBFind(\"@1binaries\").Where({\"ecosystem\": $ecosystem_id, \"id\": $ImageId}).One(\"data\")\n $ImageId = @1UploadBinary(\"Name,Data,ApplicationId\", \"avatar\", $Data, Int($app_id))\n }\n\n var m map\n m[\"member_info\"] = {information: $Info}\n m[\"image_id\"] = $ImageId\n\n if $member {\n DBUpdateExt(\"@1members\", {\"ecosystem\": $ecosystem_id, \"account\": $account_id}, m)\n } else {\n m[\"account\"] = $account_id\n m[\"member_name\"] = $Name\n m[\"ecosystem\"] = $ecosystem_id\n DBInsert(\"@1members\", m)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "RoleConditions",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RoleConditions {\n data {\n Role string\n }\n\n conditions {\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->name\": $Role, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning Sprintf(LangRes(\"@1x_role_only_action\", \"en\"), $Role)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "ConsortiumMemberResign",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract ConsortiumMemberResign {\n\n func getRoleId(name string) int {\n var rid int\n rid = Int(AppParam(Int($system_app_id), name, $ecosystem_id))\n if rid == 0 {\n warning Sprintf(LangRes(\"@role_not_set_application_parameter\", \"en\"), name)\n }\n return rid\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var roleConsortiumMember int\n roleConsortiumMember = getRoleId(\"role_consortium_member\")\n if !RoleAccess(roleConsortiumMember) {\n warning LangRes(\"@1consortium_members_only\", \"en\")\n }\n $assigned = DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"member->account\": $account_id, \"role->id\": roleConsortiumMember, \"deleted\": 0}).One(\"id\")\n }\n\n action {\n @1RolesUnassign(\"RowId\", Int($assigned))\n @1NodeRemoveByKey()\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesAccessManager",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesAccessManager {\n data {\n Action string\n Rid int\n ManagerRid string \"optional\"\n Name string \"optional\"\n Type int \"optional\"\n }\n\n func updateAccess(ra array) {\n var roles_access string\n roles_access = JSONEncode(ra)\n DBUpdate(\"@1roles\", $Rid, {\"roles_access\": roles_access})\n }\n\n func updateBufferAccess(ra array) {\n var roles_access string\n roles_access = JSONEncode(ra)\n var filled map\n filled[\"roles_access\"] = roles_access\n filled[\"role_name\"] = $Name\n filled[\"role_type\"] = $Type\n\n if !$buffer_id {\n DBInsert(\"@1buffer_data\", {ecosystem:$ecosystem_id, \"account\": $account_id, \"key\": \"roles_access\", \"value\": filled})\n } else {\n DBUpdate(\"@1buffer_data\", Int($buffer_id), {\"value\": filled})\n }\n }\n\n conditions {\n $ManagerRid = Int($ManagerRid)\n if $Rid > 0 {\n @1RolesAccessCheck(\"Rid\", $Rid)\n\n $role = DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": $Rid}).Columns(\"id,roles_access\").Row()\n if !$role {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n if $ManagerRid > 0 {\n if !DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"id\": $ManagerRid}).One(\"id\") {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n }\n var ids array, i int\n $ids = ids\n ids = JSONDecode($role[\"roles_access\"])\n while i < Len(ids){\n if ids[i] > 0 {\n $ids = Append($ids, ids[i])\n }\n i = i + 1\n }\n } else {\n $buffer_managers = 0\n $buffer_id = 0\n $ids = []\n var buffer map\n buffer = DBFind(\"@1buffer_data\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"key\": \"roles_access\"}).Columns(\"id,value,value->roles_access\").Row()\n if buffer {\n $buffer_managers = buffer[\"value.roles_access\"]\n $buffer_id = buffer[\"id\"]\n }\n }\n }\n\n action {\n if $Rid == 0 {\n if $buffer_managers {\n $ids = JSONDecode($buffer_managers)\n }\n }\n if $Action == \"clean\" {\n updateAccess([])\n }\n if $ManagerRid > 0 {\n var i int, idsNew array\n if $Action == \"remove\" {\n while i < Len($ids) {\n if $ids[i] != $ManagerRid {\n idsNew = Append(idsNew, $ids[i])\n }\n i = i + 1\n }\n if $Rid == 0 {\n updateBufferAccess(idsNew)\n } else {\n updateAccess(idsNew)\n }\n }\n if $Action == \"add\" {\n var double bool\n while i < Len($ids) {\n if $ids[i] == $ManagerRid {\n double = true\n }\n i = i + 1\n }\n if !double {\n $ids = Append($ids, $ManagerRid)\n }\n if $Rid == 0 {\n updateBufferAccess($ids)\n } else {\n updateAccess($ids)\n }\n }\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "DelegateRefresh",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract DelegateRefresh {\n\n func notInArray(val string, arr array) bool {\n var i int\n // info arr\n while i < Len(arr) {\n if val == arr[i] {\n return false\n }\n i = i + 1\n }\n return true\n }\n\n func getRoleId(name string) int {\n var rid int\n rid = Int(AppParam(Int($system_app_id), name, $ecosystem_id))\n if rid == 0 {\n warning Sprintf(LangRes(\"@role_not_set_application_parameter\", \"en\"), name)\n }\n return rid\n }\n\n conditions {\n MainCondition()\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var roleId int\n roleId = getRoleId(\"role_delegate\")\n $role = DBFind(\"@1roles\").Where({\"id\": roleId, \"deleted\": 0}).Row()\n if !$role {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n }\n\n action {\n // get delegates ids\n var delegateIds currentDelegates ecosystems array i ecoId int rid string\n ecosystems = DBFind(\"@1ecosystems\").Columns(\"id\")\n while i < Len(ecosystems) {\n var eco delegateParam map\n eco = ecosystems[i]\n ecoId = Int(eco[\"id\"])\n delegateParam = DBFind(\"@1parameters\").Where({\"name\": \"delegate_account\", \"ecosystem\": ecoId}).Row()\n if !delegateParam{\n delegateParam = DBFind(\"@1parameters\").Where({\"name\": \"founder_account\", \"ecosystem\": ecoId}).Row()\n }\n\n if notInArray(delegateParam[\"value\"], delegateIds){\n delegateIds = Append(delegateIds, delegateParam[\"value\"])\n }\n i = i + 1\n }\n\n // remove old role assigns\n rid = Int($role[\"id\"])\n currentDelegates = DBFind(\"@1roles_participants\").Where({\"role->id\": rid, \"deleted\": 0}).Columns(\"id,member->account\")\n var delegate map id int\n i = 0\n while i < Len(currentDelegates) {\n delegate = currentDelegates[i]\n var memberKey string\n memberKey = Str(AddressToId(delegate[\"member.account\"]))\n if notInArray(memberKey, delegateIds){\n id = Int(delegate[\"id\"])\n @1RolesUnassign(\"RowId\", id)\n }\n i = i + 1\n }\n\n // assign new roles\n var key map delegateId int\n i = 0\n while i < Len(delegateIds) {\n delegateId = Int(delegateIds[i])\n var delegateAccount string\n delegateAccount = IdToAddress(delegateId)\n key = DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": delegateAccount, \"deleted\": 0}).Row()\n if key {\n // check role dup\n if !DBFind(\"@1roles_participants\").Where({\"member->account\": delegateAccount, \"role->id\": rid, \"deleted\": 0}).Row(){\n @1RolesAssign(\"Rid,MemberAccount\", rid, delegateAccount)\n }\n }\n i = i + 1\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesCreate",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesCreate {\n data {\n Name string\n Type int\n }\n\n func getMemberInfo(account string) map {\n var res member map\n member = DBFind(\"@1members\").Where({\"ecosystem\": $ecosystem_id, \"account\": account}).Row()\n if member {\n res[\"account\"] = member[\"account\"]\n res[\"member_name\"] = member[\"member_name\"]\n res[\"image_id\"] = member[\"image_id\"]\n } else {\n if DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row() {\n res[\"account\"] = account\n res[\"member_name\"] = account\n res[\"image_id\"] = \"0\"\n }\n }\n return res\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n // system role\n if $Type == 3 {\n warning LangRes(\"@1system_role_can_not_create\", \"en\")\n }\n\n // check role_creates_roles\n $check_access = AppParam(Int($system_app_id), \"role_creates_roles\", $ecosystem_id)\n if $check_access && Str($check_access) != \"0\" {\n var rids array\n rids = JSONDecode(\"[\"+$check_access+\"]\")\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": rids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n } else {\n var admin_id string\n admin_id = AppParam(Int($system_app_id), \"role_admin\", $ecosystem_id)\n var rids array\n rids = JSONDecode(\"[\"+admin_id+\"]\")\n if !DBFind(\"@1roles_participants\").Where({\"ecosystem\": $ecosystem_id, \"role->id\": {\"$in\": rids}, \"member->account\": $account_id, \"deleted\": 0}).Row() {\n warning LangRes(\"@1access_denied\", \"en\")\n }\n }\n if $Name == DBFind(\"@1roles\").Where({\"ecosystem\": $ecosystem_id, \"role_name\": $Name}).One(\"role_name\") {\n warning LangRes(\"@1role_exists\", \"en\")\n }\n if Size($Name) < 3 || Size($Name) > 30 {\n warning LangRes(\"@1name\", \"en\") + \" \" + LangRes(\"@1validate_role_name\", \"en\")\n }\n }\n\n action {\n var roles_access_arr array, buffer map\n buffer = DBFind(\"@1buffer_data\").Where({\"ecosystem\": $ecosystem_id, \"account\": $account_id, \"key\": \"roles_access\"}).Columns(\"id,value,value->roles_access\").Row()\n if buffer {\n roles_access_arr = JSONDecode(buffer[\"value.roles_access\"])\n var filled map\n filled[\"roles_access\"] = []\n filled[\"role_name\"] = \"\"\n filled[\"role_type\"] = \"\"\n DBUpdate(\"@1buffer_data\", Int(buffer[\"id\"]), {\"value\": filled})\n }\n var m map\n m[\"creator\"] = getMemberInfo($account_id)\n m[\"role_name\"] = $Name\n m[\"role_type\"] = $Type\n m[\"date_created\"] = $block_time\n m[\"roles_access\"] = JSONEncode(roles_access_arr)\n m[\"ecosystem\"] = $ecosystem_id\n $result = DBInsert(\"@1roles\", m)\n }\n}",
"Type": "contracts"
},
{
"Name": "InvestorRefresh",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract InvestorRefresh {\n data {\n RoleId int\n }\n\n func notInArray(val string, arr array) bool {\n var i lenArr int\n lenArr = Len(arr)\n while i < lenArr {\n if val == Str(arr[i]) {\n return false\n }\n i = i + 1\n }\n return true\n }\n\n func getParamInt(id int, name string) int {\n var param int\n param = Int(AppParam(id, name, 1))\n if param == 0 {\n warning Sprintf(LangRes(\"@1application_parameter_not_set\", \"en\"), name)\n }\n return param\n }\n\n func getRoleId(name string) int {\n var rid int\n rid = Int(AppParam(Int($system_app_id), name, $ecosystem_id))\n if rid == 0 {\n warning Sprintf(LangRes(\"@role_not_set_application_parameter\", \"en\"), name)\n }\n return rid\n }\n\n conditions {\n $system_app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var appId int\n appId = Int(DBFind(\"@1applications\").Where({\"ecosystem\": 1, \"name\": \"Basic\", \"deleted\": 0}).One(\"id\"))\n if appId == 0 {\n warning LangRes(\"@1app_not_found\", \"en\")\n }\n\n var roleConsortiumMemberId roleInvestorId string\n\n roleConsortiumMemberId = getRoleId(\"role_consortium_member\")\n if !RoleAccess(roleConsortiumMemberId) {\n warning LangRes(\"@1consortium_members_only\", \"en\")\n }\n\n roleInvestorId = getRoleId(\"role_investor_with_voting_rights\")\n $roleId = Int(DBFind(\"@1roles\").Where({\"id\": roleInvestorId, \"deleted\": 0}).One(\"id\"))\n if $roleId == 0 {\n warning LangRes(\"@1investor_role_not_found_or_removed\", \"en\")\n }\n\n $limitInvestors = getParamInt(appId, \"investors_number\")\n }\n\n action {\n // get investors ids\n var keysInvestors assignedInvestors investorsIds assignedIds array\n keysInvestors = DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"deleted\": 0}).Columns(\"account\").Order({\"amount\": \"-1\", \"id\": \"-1\"}).Limit($limitInvestors)\n assignedInvestors = DBFind(\"@1roles_participants\").Where({\"role->id\": $roleId, \"deleted\": 0}).Columns(\"member->account\")\n\n // get ids\n var i int\n while i < Len(keysInvestors) {\n var inv map\n inv = keysInvestors[i]\n investorsIds[i] = inv[\"account\"]\n i = i + 1\n }\n i = 0\n while i < Len(assignedInvestors) {\n var inv map\n inv = assignedInvestors[i]\n assignedIds[i] = inv[\"member.account\"]\n i = i + 1\n }\n\n // remove old investors\n var assigned map mid string\n i = 0\n while i < Len(assignedIds) {\n if notInArray(assignedIds[i], investorsIds){\n mid = assignedIds[i]\n assigned = DBFind(\"@1roles_participants\").Where({\"member->account\": mid, \"role->id\": $roleId}).Row()\n if assigned {\n @1RolesUnassign(\"RowId\", Int(assigned[\"id\"]))\n }\n }\n i = i + 1\n }\n // add new investors\n i = 0\n while i < Len(investorsIds) {\n if notInArray(investorsIds[i], assignedIds){\n var account string\n account = investorsIds[i]\n if DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": account, \"deleted\": 0}).Row(){\n @1RolesAssign(\"Rid,MemberAccount\", $roleId, account)\n }\n }\n i = i + 1\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesInstall",
"Conditions": "ContractConditions(\"@1AdminCondition\")",
"Value": "contract RolesInstall {\n\n func updateParam(name string, value int) {\n var app_param map\n app_param = DBFind(\"@1app_params\").Where({\"ecosystem\": $ecosystem_id, \"app_id\": $app_id, \"name\": name}).Row()\n if app_param {\n var params map\n params[\"Id\"] = Int(app_param[\"id\"])\n params[\"Value\"] = value\n params[\"Conditions\"] = \"ContractConditions(\\\"MainCondition\\\")\"\n CallContract(\"@1EditAppParam\", params)\n } else {\n var params map\n params[\"ApplicationId\"] = $app_id\n params[\"Name\"] = name\n params[\"Value\"] = value\n params[\"Conditions\"] = \"ContractConditions(\\\"MainCondition\\\")\"\n CallContract(\"@1NewAppParam\", params)\n }\n }\n\n func addRole(name string, withParticipant bool, managerId int) int{\n var m map paramName string id int\n m[\"role_name\"] = name\n m[\"role_type\"] = 3\n m[\"ecosystem\"] = $ecosystem_id\n id = Int(DBFind(\"@1roles\").Where(m).One(\"id\"))\n if id == 0 {\n m[\"default_page\"] = \"\"\n m[\"deleted\"] = 0\n m[\"creator->image_id\"] = 0\n m[\"creator->member_name\"] = \"founder\"\n m[\"creator->account\"] = Str($account_id)\n m[\"date_created\"] = $block_time\n if managerId > 0 {\n m[\"roles_access\"] = Sprintf(\"[%v]\", managerId)\n } else {\n m[\"roles_access\"] = \"[]\"\n }\n id = DBInsert(\"@1roles\", m)\n }\n paramName = \"role_\" + Replace(ToLower(name), \" \", \"_\")\n updateParam(paramName, id)\n\n if withParticipant {\n var participant map\n participant[\"role->id\"] = id\n participant[\"role->type\"] = m[\"role_type\"]\n participant[\"role->name\"] = m[\"role_name\"]\n participant[\"role->image_id\"] = 0\n participant[\"member->account\"] = Str($account_id)\n participant[\"member->member_name\"] = \"founder\"\n participant[\"member->image_id\"] = 0\n participant[\"ecosystem\"] = $ecosystem_id\n\n if !DBFind(\"@1roles_participants\").Where(participant).One(\"id\") {\n participant[\"date_created\"] = $block_time\n DBInsert(\"@1roles_participants\", participant)\n }\n }\n return id\n }\n\n conditions {\n MainCondition()\n }\n\n action {\n $app_id = DBFind(\"@1applications\").Where({\"ecosystem\": $ecosystem_id, \"name\": \"System\"}).One(\"id\")\n var managerId int\n managerId = addRole(\"Admin\", true, 0)\n @1RolesAccessManager(\"Action,Rid,ManagerRid\", \"add\", managerId, managerId)\n addRole(\"Developer\", true, managerId)\n\n if $ecosystem_id == 1 {\n addRole(\"Consortium Member\", true, managerId)\n addRole(\"Consortium Member Candidate\", false, managerId)\n addRole(\"Sidechain Node\", true, managerId)\n addRole(\"Investor with Voting Rights\", false, managerId)\n addRole(\"Delegate\", false, managerId)\n }\n\n updateParam(\"role_creates_roles\", 0)\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesRequest",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesRequest {\n data {\n Rid int\n }\n\n conditions {\n if !DBFind(\"@1roles\").WhereId($Rid).One(\"id\") {\n warning LangRes(\"@1role_not_found\", \"en\")\n }\n\n if DBFind(\"@1roles_participants\").Where({\"role->id\": $Rid, \"member->account\": $account_id, \"deleted\": 0}).One(\"id\") {\n warning LangRes(\"@1role_you_added_already\", \"en\")\n }\n\n if DBFind(\"@1notifications\").Where({\"ecosystem\": $ecosystem_id, \"page_name\": \"@1roles_request_view\", \"page_params->rid\": $Rid, \"sender->account\": $account_id, \"closed\": 0}).One(\"id\") {\n warning LangRes(\"@1request_sent_already\", \"en\")\n }\n }\n\n action {\n var params map\n params[\"rid\"] = $Rid\n\n var founder_id int founder_account string\n founder_id = Int(EcosysParam(\"founder_account\"))\n founder_account = IdToAddress(founder_id)\n\n @1NotificationsSend(\"MemberAccount,Sender,Icon,Header,Body,Page,Params\", founder_account, 1, \"fa-bars\", LangRes(\"@1roles\", \"en\"), LangRes(\"@1new_request_received\", \"en\"), \"@1roles_request_view\", params)\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesRequestDecision",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesRequestDecision {\n data {\n Decision int\n NotificId int\n Rid int \"optional\"\n MemberAccount string \"optional\"\n }\n\n conditions {}\n\n action {\n if $Decision == 1 {\n @1RolesAssign(\"Rid,MemberAccount\", $Rid, $MemberAccount)\n }\n\n if $NotificId > 0 {\n @1NotificationsClose(\"NotificId\", $NotificId)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesRestore",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesRestore {\n data {\n Rid int\n }\n\n conditions {\n @1RolesAccessCheck(\"Rid\", $Rid)\n }\n\n action {\n DBUpdate(\"@1roles\", $Rid, {deleted:0})\n }\n}",
"Type": "contracts"
},
{
"Name": "RolesDelete",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract RolesDelete {\n data {\n Rid int\n Ops string\n }\n\n conditions {\n @1RolesAccessCheck(\"Rid\", $Rid)\n }\n\n action {\n var participants array\n participants = DBFind(\"@1roles_participants\").Where({\"role->id\": $Rid, \"deleted\": 0}).Columns(\"id\")\n\n // delete all participants\n var i int\n while i < Len(participants) {\n var p map\n p = participants[i]\n @1RolesUnassign(\"RowId\", Int(p[\"id\"]))\n i = i + 1\n }\n var m map\n if $Ops == \"D\" {\n m[\"deleted\"] = 1\n m[\"date_deleted\"] = $block_time\n }\n if $Ops == \"R\" {\n m[\"deleted\"] = 0\n }\n DBUpdate(\"@1roles\", $Rid, m)\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensDecDeposit",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensDecDeposit {\n data {\n MemberAccount string\n Amount money\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1InvestTransfer\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name == prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1deposit_cannot_be_made\", \"en\")\n }\n }\n \n conditions {\n getPermission() //getting permission to run\n }\n\n action {\n var s map\n s[\"-deposit\"] = $Amount\n DBUpdateExt(\"@1keys\", {\"account\": $MemberAccount, \"deleted\": 0}, s)\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensIncDeposit",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensIncDeposit {\n data {\n Amount money\n }\n\n conditions {\n $amount = DBFind(\"@1keys\").Where({\"account\": $account_id, \"deleted\": 0}).Row()\n if Money($Amount) > (Money($amount[\"amount\"]) - Money($amount[\"deposit\"])){\n warning LangRes(\"@1insufficient_funds\", \"en\")\n }\n }\n \n action {\n var s map\n s[\"+deposit\"] = $Amount\n DBUpdateExt(\"@1keys\", {\"account\": $account_id, \"deleted\": 0}, s)\n }\n}",
"Type": "contracts"
},
{
"Name": "BlockMember",
"Conditions": "ContractConditions(\"@1AdminCondition\")",
"Value": "contract BlockMember {\n data {\n MemberAccount string\n Value int\n }\n\n conditions {\n ContractConditions(\"@1AdminCondition\")\n }\n\n action {\n @1TokensLockoutMember(\"MemberAccount,Value\", $MemberAccount, $Value)\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensTransfer",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensTransfer {\n data {\n Amount money\n SenderAccount string\n RecipientAccount string\n Comment string \"optional\"\n Ecosystem int \"optional\"\n }\n\n func getEcosystem() {\n $e_id = Int($Ecosystem)\n if $e_id == 0 {\n $e_id = $ecosystem_id\n } else {\n if !DBFind(\"@1ecosystems\").Where({\"id\": $e_id}).One(\"id\") {\n warning Sprintf(LangRes(\"@1ecosystem_not_found\", \"en\"), $e_id)\n }\n }\n }\n\n func getPermission() {\n var array_permissions array result i int prevContract string\n array_permissions = [\"@1TokensSend\", \"@1PoaTokensSend\", \"@1TokensRefundAccept\", \"@1ExCancel\", \"@1ExCancelOrder\",\"@1ExCancelOrders\", \"@1ExMatching\", \"@1ExMatchingOTC\", \"@1ExOrder\", \"@1InvestTransfer\"]\n\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n while i < Len(array_permissions) {\n var contract_name string\n contract_name = array_permissions[i]\n if contract_name == prevContract {\n result = 1\n }\n i = i + 1\n }\n\n if result == 0 {\n warning LangRes(\"@1tokens_transfer_cannot_be_made\", \"en\")\n }\n }\n\n func checkSender() {\n var sender_map map check_dep money\n sender_map = DBFind(\"@1keys\").Where({\"ecosystem\": $e_id, \"account\": $SenderAccount, \"deleted\": 0}).Row()\n\n if !sender_map {\n warning Sprintf(LangRes(\"@1sender_x_invalid\", \"en\"), $SenderAccount)\n }\n if Int(sender_map[\"blocked\"]) != 0 {\n warning LangRes(\"@1sender_blocked\", \"en\")\n }\n if Int(sender_map[\"deleted\"]) != 0 {\n warning LangRes(\"@1sender_deleted\", \"en\")\n }\n if Money(sender_map[\"amount\"]) < $Amount {\n warning LangRes(\"@1amount_less_than_needed\", \"en\")\n }\n check_dep = Money(sender_map[\"amount\"]) - Money(sender_map[\"deposit\"])\n if Money(check_dep) < $Amount {\n warning LangRes(\"@1amount_less_than_needed\", \"en\")\n }\n }\n\n func checkRecipient() {\n var recipient_map map\n recipient_map = DBFind(\"@1keys\").Where({\"ecosystem\": $e_id, \"account\": $RecipientAccount, \"deleted\": 0}).Row()\n\n if !recipient_map {\n warning Sprintf(LangRes(\"@1recipient_x_invalid\", \"en\"), $RecipientAccount)\n }\n if Int(recipient_map[\"blocked\"]) != 0 {\n warning LangRes(\"@1recipient_blocked\", \"en\")\n }\n if Int(recipient_map[\"deleted\"]) != 0 {\n warning LangRes(\"@1recipient_deleted\", \"en\")\n }\n }\n\n conditions {\n getEcosystem() //getting an ecosystem number\n getPermission() //getting permission to run\n checkSender() //check the sender\n checkRecipient() //check the recipient\n\n //check amount\n if $Amount == 0 {\n warning LangRes(\"@1amount_zero\", \"en\")\n }\n if $Amount < 0 {\n warning LangRes(\"@1amount_less_zero\", \"en\")\n }\n }\n\n action {\n DBUpdateExt(\"@1keys\", {\"ecosystem\": $e_id, \"account\": $SenderAccount, \"deleted\": 0}, {\"-amount\": $Amount})\n DBUpdateExt(\"@1keys\", {\"ecosystem\": $e_id, \"account\": $RecipientAccount, \"deleted\": 0}, {\"+amount\": $Amount})\n\n var m map\n m[\"sender_id\"] = AddressToId($SenderAccount)\n m[\"recipient_id\"] = AddressToId($RecipientAccount)\n m[\"amount\"] = $Amount\n m[\"comment\"] = $Comment\n m[\"block_id\"] = $block\n m[\"txhash\"] = $txhash\n m[\"ecosystem\"] = $e_id\n m[\"type\"] = 3\n m[\"created_at\"] = $block_time\n DBInsert(\"@1history\", m)\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensRefundReject",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensRefundReject {\n data {\n RefundId int\n }\n\n conditions {\n var prevContract string\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n if prevContract != \"@1VotingDecisionCheck\" {\n warning LangRes(\"@1contract_start_votingdecisioncheck_only\", \"en\")\n }\n \n $tokenrefund = DBFind(\"@1tokens_refund\").Where({\"id\": $RefundId}).Row()\n if !$tokenrefund {\n warning LangRes(\"@1tokens_refund_not_found\", \"en\")\n }\n\n $RecipientAccount = $tokenrefund[\"victim_account\"]\n $SenderAccount = $tokenrefund[\"attacker_account\"]\n $amount = Money($tokenrefund[\"amount\"])\n $votingID = Int($tokenrefund[\"voting_id\"])\n }\n\n action {\n if $tokenrefund[\"result\"] == 0 {\n TokensLockoutMember(\"MemberAccount,Value\", $RecipientAccount, 0)\n TokensLockoutMember(\"MemberAccount,Value\", $SenderAccount, 0)\n\n var m map\n m[\"status\"] = 2\n m[\"result\"] = 1\n m[\"closed_at\"] = $block_time\n DBUpdate(\"@1tokens_refund\", Int($RefundId), m)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensRefundAccept",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",
"Value": "contract TokensRefundAccept {\n data {\n RefundId int\n }\n\n conditions {\n var prevContract string\n prevContract = $stack[0]\n if Len($stack) > 2 {\n prevContract = $stack[Len($stack) - 2]\n }\n if prevContract != \"@1VotingDecisionCheck\"{\n warning LangRes(\"@1contract_start_votingdecisioncheck_only\", \"en\")\n }\n\n $tokenrefund = DBFind(\"@1tokens_refund\").Where({\"id\": $RefundId}).Row()\n if !$tokenrefund {\n warning LangRes(\"@1tokens_refund_not_found\", \"en\")\n }\n\n $RecipientAccount = $tokenrefund[\"victim_account\"]\n $SenderAccount = $tokenrefund[\"attacker_account\"]\n $amount = Money($tokenrefund[\"amount\"])\n $votingID = Int($tokenrefund[\"voting_id\"])\n\n if $amount <= 0 {\n warning LangRes(\"@1amount_less_equal_zero\", \"en\")\n }\n \n var sender map\n sender = DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $SenderAccount, \"deleted\": 0}).Row()\n if !sender {\n warning LangRes(\"@1sender_invalid\", \"en\")\n }\n if !DBFind(\"@1keys\").Where({\"ecosystem\": $ecosystem_id, \"account\": $RecipientAccount, \"deleted\": 0}).Row() {\n warning LangRes(\"@1recipient_invalid\", \"en\")\n }\n if sender[\"amount\"] < $amount {\n warning Sprintf(LangRes(\"@1sender_amount_not_enough\", \"en\"), sender[\"amount\"])\n }\n }\n\n action {\n if $tokenrefund[\"result\"] == 0 {\n TokensLockoutMember(\"MemberAccount,Value\", $RecipientAccount, 0)\n TokensLockoutMember(\"MemberAccount,Value\", $SenderAccount, 0)\n\n @1TokensTransfer(\"Amount,SenderAccount,RecipientAccount,Comment\", $amount, $SenderAccount, $RecipientAccount, \"Refund tokens\")\n\n var m map\n m[\"status\"] = 2\n m[\"result\"] = 2\n m[\"closed_at\"] = $block_time\n DBUpdate(\"@1tokens_refund\", Int($RefundId), m)\n }\n }\n}",
"Type": "contracts"
},
{
"Name": "TokensSend",
"Conditions": "ContractConditions(\"@1DeveloperCondition\")",