kit_cms 2.3.16 → 2.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/assets/images/kit/toolbar/bold.png +0 -0
- data/app/assets/images/kit/toolbar/formatted.png +0 -0
- data/app/assets/images/kit/toolbar/image.png +0 -0
- data/app/assets/images/kit/toolbar/link.png +0 -0
- data/app/assets/images/kit/toolbar/list.png +0 -0
- data/app/assets/images/kit/toolbar/numbered_list.png +0 -0
- data/app/assets/images/kit/toolbar/preview.png +0 -0
- data/app/assets/images/kit/toolbar/quote.png +0 -0
- data/app/assets/images/kit/toolbar/redo.png +0 -0
- data/app/assets/images/kit/toolbar/underline.png +0 -0
- data/app/assets/images/kit/toolbar/undo.png +0 -0
- data/app/assets/images/kit/toolbar/video.png +0 -0
- data/app/assets/javascripts/codemirror/editor.js +183 -0
- data/app/assets/javascripts/codemirror/markdown.js +475 -0
- data/app/assets/javascripts/jquery.contextmenu.js +7 -7
- data/app/assets/javascripts/kit/kit.js +0 -1
- data/app/assets/javascripts/kit/markdown.js +1 -37
- data/app/assets/javascripts/kit/tree.js +18 -10
- data/app/assets/javascripts/kit/utilities.js +1 -1
- data/app/assets/stylesheets/codemirror/editor.css +3 -3
- data/app/assets/stylesheets/codemirror/theme.css +76 -1
- data/app/assets/stylesheets/kit/calendar.css +58 -97
- data/app/assets/stylesheets/kit/cms/cms.css +19 -0
- data/app/assets/stylesheets/kit/cms/dsc_tree.css +4 -0
- data/app/assets/stylesheets/kit/forums.css +30 -0
- data/app/assets/stylesheets/kit/kit.css +0 -1
- data/app/controllers/admin/dashboard_controller.rb +11 -2
- data/app/controllers/admin/page_templates_controller.rb +14 -1
- data/app/controllers/admin/user_controller.rb +2 -3
- data/app/controllers/category_controller.rb +5 -6
- data/app/controllers/form_controller.rb +1 -1
- data/app/controllers/forum_controller.rb +2 -2
- data/app/controllers/kit_controller.rb +2 -2
- data/app/controllers/pages_controller.rb +24 -0
- data/app/controllers/user/passwords_controller.rb +2 -0
- data/app/controllers/user/registrations_controller.rb +1 -4
- data/app/controllers/user/sessions_controller.rb +2 -0
- data/app/controllers/user/unlocks_controller.rb +2 -0
- data/app/controllers/user_controller.rb +1 -1
- data/app/helpers/calendar_helper.rb +4 -1
- data/app/helpers/kit_helper.rb +3 -3
- data/app/mailers/notification.rb +3 -3
- data/app/models/activity.rb +5 -2
- data/app/models/calendar.rb +1 -1
- data/app/models/category.rb +18 -4
- data/app/models/experiment.rb +2 -0
- data/app/models/form_submission.rb +2 -2
- data/app/models/html_asset.rb +3 -0
- data/app/models/mapping.rb +1 -0
- data/app/models/user.rb +1 -1
- data/app/views/admin/blocks/_form.html.haml +1 -1
- data/app/views/admin/dashboard/user_comments.html.haml +19 -8
- data/app/views/admin/experiments/show.html.haml +1 -1
- data/app/views/admin/form/_form.html.haml +8 -0
- data/app/views/admin/page_templates/_form.html.haml +1 -1
- data/app/views/admin/views/_form.html.haml +4 -4
- data/app/views/calendar/_calendar_scripts.js.erb +2 -2
- data/app/views/calendar/_month.html.haml +58 -27
- data/app/views/category/_select_options.html.erb +1 -1
- data/app/views/form/_show.html.haml +9 -1
- data/app/views/forum/_add_post.html.haml +3 -2
- data/app/views/forum/_mod_thread.js.erb +2 -2
- data/app/views/forum/_post_scripts.js.erb +1 -2
- data/app/views/forum/thread.html.haml +4 -0
- data/app/views/layouts/_application.html.erb +1 -0
- data/app/views/layouts/minimal.html.erb +2 -2
- data/app/views/notification/form_submission.text.erb +2 -0
- data/app/views/pages/_form.html.haml +7 -8
- data/app/views/pages/_page_scripts.js.erb +1 -3
- data/app/views/pages/_page_template_script.js.erb +28 -0
- data/app/views/pages/cookie_text.html.haml +1 -1
- data/app/views/pages/info.html.erb +2 -2
- data/app/views/pages/page_template.html.haml +40 -0
- data/app/views/utility/_cm_editor.html.erb +34 -5
- data/app/views/utility/_cm_toolbar_markdown.html.haml +49 -0
- data/config/initializers/devise_extender.rb +9 -0
- data/config/initializers/html_assets.rb +4 -0
- data/config/initializers/quiet_asserts.rb +1 -1
- data/config/routes.rb +2 -0
- metadata +21 -3
@@ -986,13 +986,13 @@ var // currently active contextMenu trigger
|
|
986
986
|
$t.appendTo(opt.$menu);
|
987
987
|
|
988
988
|
// Disable text selection
|
989
|
-
if (!opt.hasTypes) {
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
989
|
+
// if (!opt.hasTypes) {
|
990
|
+
// if($.browser.msie) {
|
991
|
+
// $t.on('selectstart.disableTextSelect', handle.abortevent);
|
992
|
+
// } else if(!$.browser.mozilla) {
|
993
|
+
// $t.on('mousedown.disableTextSelect', handle.abortevent);
|
994
|
+
// }
|
995
|
+
// }
|
996
996
|
});
|
997
997
|
// attach contextMenu to <body> (to bypass any possible overflow:hidden issues on parents of the trigger element)
|
998
998
|
if (!opt.$node) {
|
@@ -1,37 +1 @@
|
|
1
|
-
|
2
|
-
previewParserPath: '/forums/post/preview',
|
3
|
-
previewParserVar: 'body',
|
4
|
-
onShiftEnter: {keepDefault:false, openWith:'\n\n'},
|
5
|
-
markupSet: [
|
6
|
-
{name:'Bold', key:'B', openWith:'**', closeWith:'**'},
|
7
|
-
{name:'Underline', key:'U', openWith:'_', closeWith:'_'},
|
8
|
-
{separator:' ' },
|
9
|
-
{name:'List', openWith:'- ' },
|
10
|
-
{name:'Numeric List', openWith:function(markItUp) {
|
11
|
-
return markItUp.line+'. ';
|
12
|
-
}},
|
13
|
-
{separator:' ' },
|
14
|
-
{name:'Image', key:'I', replaceWith:''},
|
15
|
-
{name:'Link', key:'L', openWith:'[', closeWith:']([![Url:!:http://]!])', placeHolder:'Your text to link here...' },
|
16
|
-
{separator:' '},
|
17
|
-
{name:'Quotes', openWith:'> '},
|
18
|
-
{name:'Formatted', openWith:'(!(\t|!|`)!)', closeWith:'(!(`)!)'},
|
19
|
-
{separator:' '},
|
20
|
-
{name:'Preview', call:'preview', className:"preview"}
|
21
|
-
]
|
22
|
-
}
|
23
|
-
|
24
|
-
miu = {
|
25
|
-
markdownTitle: function(markItUp, char) {
|
26
|
-
heading = '';
|
27
|
-
n = $.trim(markItUp.selection||markItUp.placeHolder).length;
|
28
|
-
for(i = 0; i < n; i++) {
|
29
|
-
heading += char;
|
30
|
-
}
|
31
|
-
return '\n'+heading;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
function markdown_editor(field) {
|
36
|
-
$(field).markItUp(markdown_settings);
|
37
|
-
}
|
1
|
+
// not used
|
@@ -451,6 +451,9 @@ get_node_data : function(id) {
|
|
451
451
|
}
|
452
452
|
else {
|
453
453
|
control_class = node.y=='s' ? 'stub' : 'page';
|
454
|
+
if (node.b==false) {
|
455
|
+
li.addClass("not_published");
|
456
|
+
}
|
454
457
|
}
|
455
458
|
if (node.b===true) {
|
456
459
|
li.addClass("pub");
|
@@ -553,16 +556,18 @@ get_node_data : function(id) {
|
|
553
556
|
copy_mode();
|
554
557
|
}));
|
555
558
|
buttons_div.append($('<a style="display: none;" class="cancel icon no_icon" href="#">Cancel</a>').on('click', function() {
|
556
|
-
cancel_move();
|
559
|
+
cancel_move(true);
|
557
560
|
}));
|
558
561
|
}
|
559
562
|
|
560
|
-
function cancel_move() {
|
561
|
-
|
562
|
-
|
563
|
+
function cancel_move(show_buttons_again) {
|
564
|
+
if (show_buttons_again) {
|
565
|
+
div.find('div.buttons a.copy_icon').show();
|
566
|
+
div.find('div.buttons a.move_icon').show();
|
567
|
+
}
|
563
568
|
div.find('div.buttons a.cancel').hide();
|
564
569
|
div.find('li div.move').hide();
|
565
|
-
div.find('li.type_c > div.move').droppable('destroy');
|
570
|
+
//div.find('li.type_c > div.move').droppable('destroy');
|
566
571
|
div.find('.dd_accept').removeClass('dd_accept');
|
567
572
|
}
|
568
573
|
|
@@ -588,17 +593,20 @@ get_node_data : function(id) {
|
|
588
593
|
revert: true
|
589
594
|
});
|
590
595
|
|
591
|
-
div.find('li.type_c
|
596
|
+
div.find('li.type_c ').droppable({
|
592
597
|
over: function(event, ui) {
|
593
|
-
var li = get_li_up(event); //$(event.target).parent('li').first();
|
598
|
+
//var li = get_li_up(event); //$(event.target).parent('li').first();
|
599
|
+
var li = $(event.target);
|
594
600
|
li.find('div.title').first().addClass("dd_accept");
|
595
601
|
},
|
596
602
|
out: function(event, ui) {
|
597
|
-
var li = get_li_up(event); // $(event.target).parent('li').first();
|
603
|
+
//var li = get_li_up(event); // $(event.target).parent('li').first();
|
604
|
+
var li = $(event.target);
|
598
605
|
li.find('div.title').first().removeClass("dd_accept");
|
599
606
|
},
|
600
607
|
drop: function(event, ui) {
|
601
|
-
|
608
|
+
var li = $(event.target);
|
609
|
+
move($(ui.draggable).parent('li'), li);
|
602
610
|
}
|
603
611
|
});
|
604
612
|
}
|
@@ -722,7 +730,7 @@ get_node_data : function(id) {
|
|
722
730
|
}
|
723
731
|
open_node(target_node, target);
|
724
732
|
style_node(target, target_node);
|
725
|
-
cancel_move();
|
733
|
+
cancel_move(false);
|
726
734
|
} else {
|
727
735
|
log("Move failed " + resp.message);
|
728
736
|
}
|
@@ -3164,7 +3164,7 @@ timezoneText: 'Time Zone'
|
|
3164
3164
|
|
3165
3165
|
titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
|
3166
3166
|
|
3167
|
-
isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
|
3167
|
+
isIE6 = false, // $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
|
3168
3168
|
|
3169
3169
|
/*
|
3170
3170
|
* Private methods
|
@@ -24,7 +24,7 @@
|
|
24
24
|
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
|
25
25
|
.cm-s-blackboard .cm-link { color: #8DA6CE; }
|
26
26
|
|
27
|
-
.cm-s-blackboard-cms.CodeMirror { width: 740px
|
27
|
+
.cm-s-blackboard-cms.CodeMirror { width: 740px; height: 600px; background: #0C1021; color: #F8F8F8; }
|
28
28
|
.cm-s-blackboard-cms .CodeMirror-selected { background: blue !important; }
|
29
29
|
.cm-s-blackboard-cms .CodeMirror-gutters { background: #4C5061; border-right: 0; }
|
30
30
|
.cm-s-blackboard-cms .CodeMirror-linenumber { color: #888; }
|
@@ -48,3 +48,78 @@
|
|
48
48
|
.cm-s-blackboard-cms .cm-hr { color: #AEAEAE; }
|
49
49
|
.cm-s-blackboard-cms .cm-link { color: #8DA6CE; }
|
50
50
|
|
51
|
+
.cm-s-neat {
|
52
|
+
font-family: Arial, "sans serif";
|
53
|
+
|
54
|
+
}
|
55
|
+
|
56
|
+
.cm-s-neat span.cm-strong { font-weight: bold; }
|
57
|
+
.cm-s-neat span.cm-em { text-decoration: underline; }
|
58
|
+
.cm-s-neat span.cm-comment { color: #a86; }
|
59
|
+
.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; }
|
60
|
+
.cm-s-neat span.cm-string { color: #a22; }
|
61
|
+
.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; }
|
62
|
+
.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; }
|
63
|
+
.cm-s-neat span.cm-variable { color: black; }
|
64
|
+
.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
|
65
|
+
.cm-s-neat span.cm-meta {color: #555;}
|
66
|
+
.cm-s-neat span.cm-link { color: #3a3; }
|
67
|
+
|
68
|
+
|
69
|
+
.toolbar ul {
|
70
|
+
list-style-type: none;
|
71
|
+
margin: 0;
|
72
|
+
padding: 5px 5px 0 5px;
|
73
|
+
background-color: #CCC;
|
74
|
+
width: 99%;
|
75
|
+
height: 36px;
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
.toolbar ul li {
|
80
|
+
cursor: pointer;
|
81
|
+
list-style-type: none;
|
82
|
+
float: left;
|
83
|
+
width: 46px;
|
84
|
+
font-size: 9px;
|
85
|
+
font-family: Arial, "sans serif";
|
86
|
+
font-weight: normal;
|
87
|
+
background-repeat: no-repeat;
|
88
|
+
height: 26px;
|
89
|
+
color: #666;
|
90
|
+
border: 1px #444 solid;
|
91
|
+
margin-right: 5px;
|
92
|
+
text-align: center;
|
93
|
+
position: relative;
|
94
|
+
background-position: center center;
|
95
|
+
border-radius: 2px;
|
96
|
+
text-align: center;
|
97
|
+
padding: 2px 0 0 0;
|
98
|
+
|
99
|
+
border-top: 1px solid #26485e;
|
100
|
+
background: #bdbdbd;
|
101
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#bdbdbd));
|
102
|
+
background: -webkit-linear-gradient(top, #f0f0f0, #bdbdbd);
|
103
|
+
background: -moz-linear-gradient(top, #f0f0f0, #bdbdbd);
|
104
|
+
background: -ms-linear-gradient(top, #f0f0f0, #bdbdbd);
|
105
|
+
background: -o-linear-gradient(top, #f0f0f0, #bdbdbd);
|
106
|
+
}
|
107
|
+
|
108
|
+
.toolbar ul li.spacer {
|
109
|
+
margin-right: 15px;
|
110
|
+
}
|
111
|
+
|
112
|
+
.toolbar ul li img {
|
113
|
+
opacity: 0.6;
|
114
|
+
}
|
115
|
+
|
116
|
+
.toolbar ul li label {
|
117
|
+
position: absolute;
|
118
|
+
width: 46px;
|
119
|
+
text-align: center;
|
120
|
+
bottom: 1px;
|
121
|
+
}
|
122
|
+
|
123
|
+
.toolbar .list img, .toolbar .numbered_list img {
|
124
|
+
margin-top: 2px;
|
125
|
+
}
|
@@ -14,6 +14,7 @@ div#calendar .clear {
|
|
14
14
|
|
15
15
|
div#calendar.full .header {
|
16
16
|
font-size: 30px;
|
17
|
+
margin-bottom: 15px;
|
17
18
|
}
|
18
19
|
|
19
20
|
div#calendar.mini .header {
|
@@ -46,9 +47,6 @@ div#calendar .header div.next {
|
|
46
47
|
div#calendar .header div.months {
|
47
48
|
display: block;
|
48
49
|
}
|
49
|
-
div#calendar ol {
|
50
|
-
list-style-type: none;
|
51
|
-
}
|
52
50
|
|
53
51
|
div#calendar .filters div {
|
54
52
|
float: left;
|
@@ -68,104 +66,10 @@ div#calendar.full .postcode input, div#calendar.full .postcode select {
|
|
68
66
|
font-size: 12px;
|
69
67
|
}
|
70
68
|
|
71
|
-
#calendar.full .grid {
|
72
|
-
width: 588px;
|
73
|
-
}
|
74
|
-
|
75
69
|
#calendar.mini .grid {
|
76
70
|
width: 224px;
|
77
71
|
}
|
78
72
|
|
79
|
-
#calendar .grid {
|
80
|
-
margin: 0;
|
81
|
-
padding: 0;
|
82
|
-
border: 2px solid #333;
|
83
|
-
background-color: #ddd; }
|
84
|
-
|
85
|
-
#calendar ol.grid {
|
86
|
-
}
|
87
|
-
|
88
|
-
#calendar .titles {
|
89
|
-
width: 100%;
|
90
|
-
margin: 0;
|
91
|
-
padding: 0;
|
92
|
-
}
|
93
|
-
|
94
|
-
#calendar .titles li {
|
95
|
-
width: 74px;
|
96
|
-
padding: 5px 5px 0 5px;
|
97
|
-
float: left;
|
98
|
-
font-size: 12px;
|
99
|
-
text-align: center;
|
100
|
-
}
|
101
|
-
|
102
|
-
#calendar .grid li {
|
103
|
-
list-style-position: inside;
|
104
|
-
font-weight: bold;
|
105
|
-
border: 1px solid #999;
|
106
|
-
float: left;
|
107
|
-
background-color: #fff;
|
108
|
-
padding: 5px;
|
109
|
-
overflow: hidden;
|
110
|
-
font-size: 12px;
|
111
|
-
}
|
112
|
-
|
113
|
-
#calendar.full .grid li {
|
114
|
-
width: 72px;
|
115
|
-
height: 72px;
|
116
|
-
}
|
117
|
-
|
118
|
-
#calendar.mini .grid li {
|
119
|
-
width: 20px;
|
120
|
-
height: 20px;
|
121
|
-
}
|
122
|
-
|
123
|
-
#calendar .grid li div {
|
124
|
-
margin-top: 5px;
|
125
|
-
}
|
126
|
-
|
127
|
-
#calendar .grid li p {
|
128
|
-
list-style: none;
|
129
|
-
font-weight: normal;
|
130
|
-
float: none;
|
131
|
-
border: none;
|
132
|
-
padding: 0;
|
133
|
-
margin: 0;
|
134
|
-
overflow: hidden;
|
135
|
-
white-space:nowrap;
|
136
|
-
}
|
137
|
-
|
138
|
-
#calendar.full .grid li.monday {
|
139
|
-
margin-left: 0; }
|
140
|
-
#calendar.full .grid li.tuesday {
|
141
|
-
margin-left: 84px; }
|
142
|
-
#calendar.full .grid li.wednesday {
|
143
|
-
margin-left: 168px; }
|
144
|
-
#calendar.full .grid li.thursday {
|
145
|
-
margin-left: 252px; }
|
146
|
-
#calendar.full .grid li.friday {
|
147
|
-
margin-left: 336px; }
|
148
|
-
#calendar.full .grid li.saturday {
|
149
|
-
margin-left: 420px; }
|
150
|
-
#calendar.full .grid li.sunday {
|
151
|
-
margin-left: 504px; }
|
152
|
-
|
153
|
-
#calendar.mini .grid li.monday {
|
154
|
-
margin-left: 0; }
|
155
|
-
#calendar.mini .grid li.tuesday {
|
156
|
-
margin-left: 32px; }
|
157
|
-
#calendar.mini .grid li.wednesday {
|
158
|
-
margin-left: 64px; }
|
159
|
-
#calendar.mini .grid li.thursday {
|
160
|
-
margin-left: 96px; }
|
161
|
-
#calendar.mini .grid li.friday {
|
162
|
-
margin-left: 128px; }
|
163
|
-
#calendar.mini .grid li.saturday {
|
164
|
-
margin-left: 160px; }
|
165
|
-
#calendar.mini .grid li.sunday {
|
166
|
-
margin-left: 192px; }
|
167
|
-
|
168
|
-
|
169
73
|
#calendar .details h2 {
|
170
74
|
margin-top: 20px;
|
171
75
|
font-size: 20px;
|
@@ -239,3 +143,60 @@ div#calendar.full .postcode input, div#calendar.full .postcode select {
|
|
239
143
|
margin-right: 10px;
|
240
144
|
}
|
241
145
|
|
146
|
+
div#calendar table {
|
147
|
+
text-align: center;
|
148
|
+
padding: 0;
|
149
|
+
margin: 0;
|
150
|
+
border-collapse: collapse;
|
151
|
+
border: 2px black solid !important;
|
152
|
+
overflow: hidden;
|
153
|
+
}
|
154
|
+
|
155
|
+
div#calendar th, div#calendar td {
|
156
|
+
border: 1px solid black;
|
157
|
+
overflow: hidden;
|
158
|
+
}
|
159
|
+
|
160
|
+
div#calendar table.full {
|
161
|
+
width: 590px;
|
162
|
+
font-size: 12px;
|
163
|
+
}
|
164
|
+
|
165
|
+
div#calendar table.mini {
|
166
|
+
width: 224px;
|
167
|
+
font-size: 10px;
|
168
|
+
}
|
169
|
+
|
170
|
+
div#calendar table.full th {
|
171
|
+
font-weight: bold;
|
172
|
+
text-align: center;
|
173
|
+
height: 24px;
|
174
|
+
}
|
175
|
+
|
176
|
+
div#calendar table.full td {
|
177
|
+
height: 74px;
|
178
|
+
text-align: left;
|
179
|
+
vertical-align: top;
|
180
|
+
}
|
181
|
+
|
182
|
+
div#calendar table.full td, div#calendar table.full th {
|
183
|
+
width: 74px;
|
184
|
+
padding: 5px;
|
185
|
+
}
|
186
|
+
|
187
|
+
div#calendar table td.pad {
|
188
|
+
background-color: #DDD;
|
189
|
+
}
|
190
|
+
|
191
|
+
div#calendar table.full td div {
|
192
|
+
margin: 0;
|
193
|
+
}
|
194
|
+
|
195
|
+
div#calendar table.full td p {
|
196
|
+
line-height: 14px;
|
197
|
+
margin: 0;
|
198
|
+
}
|
199
|
+
|
200
|
+
div#calendar table.full td.today {
|
201
|
+
background-color: #eee !important;
|
202
|
+
}
|
@@ -655,6 +655,11 @@ div#admin_panel div#popup ul li a:hover {
|
|
655
655
|
-webkit-padding-start: 0;
|
656
656
|
}
|
657
657
|
|
658
|
+
div#category_warning {
|
659
|
+
top: 0 !important;
|
660
|
+
margin-left: 0 !important;
|
661
|
+
}
|
662
|
+
|
658
663
|
div#page_name_valid, div#category_warning {
|
659
664
|
margin-left: 180px;
|
660
665
|
color: red;
|
@@ -1656,3 +1661,17 @@ div.plumbbox {
|
|
1656
1661
|
padding: 10px;
|
1657
1662
|
}
|
1658
1663
|
|
1664
|
+
|
1665
|
+
table.comments .info {
|
1666
|
+
margin-right: 20px;
|
1667
|
+
display: inline-block;
|
1668
|
+
}
|
1669
|
+
|
1670
|
+
table.comments th {
|
1671
|
+
font-weight: bold;
|
1672
|
+
}
|
1673
|
+
|
1674
|
+
ul#mapping li label {
|
1675
|
+
float: left;
|
1676
|
+
width: 300px;
|
1677
|
+
}
|