nodebb-plugin-composer-default 10.0.7 → 10.0.11

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-composer-default",
3
- "version": "10.0.7",
3
+ "version": "10.0.11",
4
4
  "description": "Default composer for NodeBB",
5
5
  "main": "library.js",
6
6
  "repository": {
@@ -50,12 +50,6 @@ define('composer/drafts', ['api', 'alerts'], function (api, alerts) {
50
50
  }
51
51
  }
52
52
 
53
- // deprecated, for removal v1.14.x
54
- drafts.getDraft = function (save_id) {
55
- console.warn('[composer/drafts] drafts.getDraft is deprecated! Use drafts.get() instead.');
56
- return localStorage.getItem(save_id);
57
- };
58
-
59
53
  function getStorage(uid) {
60
54
  return parseInt(uid, 10) > 0 ? localStorage : sessionStorage;
61
55
  }
@@ -441,7 +441,7 @@ define('composer', [
441
441
  postData.category = await getSelectedCategory(postData);
442
442
  const privileges = postData.category ? postData.category.privileges : ajaxify.data.privileges;
443
443
  var data = {
444
- title: title,
444
+ topicTitle: title,
445
445
  titleLength: title.length,
446
446
  body: postData.body,
447
447
  mobile: composer.bsEnvironment === 'xs' || composer.bsEnvironment === 'sm',
@@ -86,12 +86,6 @@
86
86
  padding: 0 2rem;
87
87
  }
88
88
 
89
- .quick-search-container {
90
- top: 70px;
91
- right: auto;
92
- margin-bottom: 0px;
93
- }
94
-
95
89
  .composer-submit, .composer-discard {
96
90
  min-width: 106px;
97
91
  }
@@ -15,91 +15,11 @@
15
15
  <input type="hidden" name="_csrf" value="{config.csrf_token}" />
16
16
  </form>
17
17
 
18
- <div class="title-container row">
19
- <!-- IF isTopic -->
20
- <div class="category-list-container"><!-- IMPORT partials/category-selector.tpl --></div>
21
- <!-- ENDIF isTopic -->
22
- <!-- IF isTopicOrMain -->
23
- <div class="display-scheduler float-end{{{ if !canSchedule }}} hidden{{{ end }}}">
24
- <i class="fa fa-clock-o"></i>
25
- </div>
26
- <!-- ENDIF isTopicOrMain -->
27
- <!-- IF showHandleInput -->
28
- <div class="col-sm-3 col-md-12">
29
- <input class="handle form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.handle_placeholder]]" value="{handle}" />
30
- </div>
31
- <!-- ENDIF showHandleInput -->
32
- <div class="<!-- IF isTopic -->col-lg-9<!-- ELSE -->col-lg-12<!-- ENDIF isTopic --> col-md-12">
33
- <!-- IF isTopicOrMain -->
34
- <input name="title" form="compose-form" class="title form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.title_placeholder]]" value="{topicTitle}"/>
35
- <!-- ELSE -->
36
- <span class="title h-100">[[topic:composer.replying_to, "{topicTitle}"]]</span>
37
- <!-- ENDIF isTopicOrMain -->
38
- <div id="quick-search-container" class="quick-search-container mt-2 dropdown-menu d-block p-2 hidden">
39
- <div class="quick-search-results-container"></div>
40
- </div>
41
- </div>
42
- </div>
18
+ <!-- IMPORT partials/composer-title-container.tpl -->
43
19
 
44
- <div class="category-tag-row">
45
- <div class="btn-toolbar formatting-bar">
46
- <ul class="formatting-group">
47
- <!-- BEGIN formatting -->
48
- <!-- IF formatting.spacer -->
49
- <li class="spacer"></li>
50
- <!-- ELSE -->
51
- <!-- IF ../visibility.desktop -->
52
- <li tabindex="-1" data-format="{formatting.name}"><i class="{formatting.className}"></i></li>
53
- <!-- ENDIF ../visibility.desktop -->
54
- <!-- ENDIF formatting.spacer -->
55
- <!-- END formatting -->
20
+ <!-- IMPORT partials/composer-formatting.tpl -->
56
21
 
57
- <!--[if gte IE 9]><!-->
58
- <!-- IF privileges.upload:post:image -->
59
- <li class="img-upload-btn hide" data-format="picture" tabindex="-1">
60
- <i class="fa fa-file-image-o"></i>
61
- </li>
62
- <!-- ENDIF privileges.upload:post:image -->
63
- <!-- IF privileges.upload:post:file -->
64
- <li class="file-upload-btn hide" data-format="upload" tabindex="-1">
65
- <i class="fa fa-file-o"></i>
66
- </li>
67
- <!-- ENDIF privileges.upload:post:file -->
68
- <!--<![endif]-->
69
-
70
- <form id="fileForm" method="post" enctype="multipart/form-data">
71
- <!--[if gte IE 9]><!-->
72
- <input type="file" id="files" name="files[]" multiple class="gte-ie9 hide"/>
73
- <!--<![endif]-->
74
- <!--[if lt IE 9]>
75
- <input type="file" id="files" name="files[]" class="lt-ie9 hide" value="Upload"/>
76
- <![endif]-->
77
- </form>
78
- </ul>
79
-
80
- <div class="btn-group float-end action-bar">
81
- <a href="{discardRoute}" class="btn btn-outline-secondary composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i> [[topic:composer.discard]]</a>
82
-
83
- <button type="submit" form="compose-form" class="btn btn-primary composer-submit" data-action="post" tabindex="6" data-text-variant=" [[topic:composer.schedule]]"><i class="fa fa-check"></i> [[topic:composer.submit]]</button>
84
- </div>
85
- </div>
86
- </div>
87
-
88
- <div class="row write-preview-container">
89
- <div class="col-md-6 col-sm-12 write-container">
90
- <div class="help-text text-muted">
91
- [[modules:composer.compose]] <span class="help hidden"><i class="fa fa-question-circle"></i></span>
92
- <span class="toggle-preview hide">[[modules:composer.show_preview]]</span>
93
- </div>
94
- <textarea name="content" form="compose-form" class="write" tabindex="5" placeholder="[[modules:composer.textarea.placeholder]]"></textarea>
95
- </div>
96
- <div class="col-md-6 hidden-sm hidden-xs preview-container">
97
- <div class="help-text text-muted">
98
- <span class="toggle-preview">[[modules:composer.hide_preview]]</span>
99
- </div>
100
- <div class="preview well"></div>
101
- </div>
102
- </div>
22
+ <!-- IMPORT partials/composer-write-preview.tpl -->
103
23
 
104
24
  <!-- IF isTopicOrMain -->
105
25
  <!-- IMPORT partials/composer-tags.tpl -->
@@ -1,6 +1,7 @@
1
1
  <div component="composer" class="composer<!-- IF resizable --> resizable<!-- ENDIF resizable --><!-- IF !isTopicOrMain --> reply<!-- ENDIF !isTopicOrMain -->">
2
2
 
3
3
  <div class="composer-container">
4
+ <!-- mobile header -->
4
5
  <nav class="navbar fixed-top mobile-navbar hidden-md hidden-lg text-bg-primary flex-nowrap">
5
6
  <div class="btn-group">
6
7
  <button class="btn btn-sm btn-primary composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i></button>
@@ -12,7 +13,7 @@
12
13
  </div>
13
14
  <!-- ENDIF isTopic -->
14
15
  <!-- IF !isTopicOrMain -->
15
- <h4 class="title text-bg-primary">[[topic:composer.replying_to, "{title}"]]</h4>
16
+ <h4 class="title text-bg-primary">[[topic:composer.replying_to, "{topicTitle}"]]</h4>
16
17
  <!-- ENDIF !isTopicOrMain -->
17
18
  <div class="display-scheduler float-end{{{ if !canSchedule }}} hidden{{{ end }}}">
18
19
  <i class="fa fa-clock-o"></i>
@@ -21,97 +22,12 @@
21
22
  <button class="btn btn-sm btn-primary composer-submit" data-action="post" tabindex="-1"><i class="fa fa-chevron-right"></i></button>
22
23
  </div>
23
24
  </nav>
24
- <div class="title-container">
25
- {{{ if isTopic }}}
26
- <div class="category-list-container hidden-sm hidden-xs">
27
- <!-- IMPORT partials/category-selector.tpl -->
28
- </div>
29
- {{{ end }}}
30
-
31
- <!-- IF showHandleInput -->
32
- <div data-component="composer/handle">
33
- <input class="handle form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.handle_placeholder]]" value="{handle}" />
34
- </div>
35
- <!-- ENDIF showHandleInput -->
36
- <div data-component="composer/title">
37
- <!-- IF isTopicOrMain -->
38
- <input class="title form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.title_placeholder]]" value="{title}"/>
39
- <!-- ELSE -->
40
- <span class="title h-100">[[topic:composer.replying_to, "{title}"]]</span>
41
- <!-- ENDIF isTopicOrMain -->
42
- <div id="quick-search-container" class="quick-search-container mt-2 dropdown-menu d-block p-2 hidden">
43
- <div class="text-center loading-indicator"><i class="fa fa-spinner fa-spin"></i></div>
44
- <div class="quick-search-results-container"></div>
45
- </div>
46
- </div>
47
25
 
48
- <div class="float-end draft-icon hidden-xs hidden-sm"></div>
26
+ <!-- IMPORT partials/composer-title-container.tpl -->
49
27
 
50
- <div class="display-scheduler float-end hidden-sm hidden-xs{{{ if !canSchedule }}} hidden{{{ end }}}">
51
- <i class="fa fa-clock-o"></i>
52
- </div>
28
+ <!-- IMPORT partials/composer-formatting.tpl -->
53
29
 
54
- <div class="btn-group float-end action-bar hidden-sm hidden-xs">
55
- <button class="btn btn-outline-secondary composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i> [[topic:composer.discard]]</button>
56
-
57
- <button class="btn btn-primary composer-submit" data-action="post" tabindex="6" data-text-variant=" [[topic:composer.schedule]]"><i class="fa fa-check"></i> [[topic:composer.submit]]</button>
58
- {{{ if submitOptions.length }}}
59
- <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
60
- <span class="caret"></span>
61
- <span class="sr-only">[[topic:composer.additional-options]]</span>
62
- </button>
63
- <ul class="dropdown-menu">{{{ each submitOptions }}}<li><a href="#" data-action="{./action}">{./text}</a></li>{{{ end }}}</ul>
64
- {{{ end }}}
65
- </div>
66
- </div>
67
-
68
- <div class="category-tag-row">
69
- <div class="btn-toolbar formatting-bar">
70
- <ul class="formatting-group">
71
- <!-- BEGIN formatting -->
72
- <!-- IF formatting.spacer -->
73
- <li class="spacer"></li>
74
- <!-- ELSE -->
75
- {{{ if (./visibility.desktop && ((isTopicOrMain && ./visibility.main) || (!isTopicOrMain && ./visibility.reply))) }}}
76
- <li tabindex="-1" data-format="{formatting.name}" title="{formatting.title}"><i class="{formatting.className}"></i></li>
77
- {{{ end }}}
78
- <!-- ENDIF formatting.spacer -->
79
- <!-- END formatting -->
80
-
81
- <!-- IF privileges.upload:post:image -->
82
- <li class="img-upload-btn" data-format="picture" tabindex="-1" title="[[modules:composer.upload-picture]]">
83
- <i class="fa fa-file-image-o"></i>
84
- </li>
85
- <!-- ENDIF privileges.upload:post:image -->
86
- <!-- IF privileges.upload:post:file -->
87
- <li class="file-upload-btn" data-format="upload" tabindex="-1" title="[[modules:composer.upload-file]]">
88
- <i class="fa fa-file-o"></i>
89
- </li>
90
- <!-- ENDIF privileges.upload:post:file -->
91
-
92
- <form id="fileForm" method="post" enctype="multipart/form-data">
93
- <input type="file" id="files" name="files[]" multiple class="gte-ie9 hide"/>
94
- </form>
95
- </ul>
96
- </div>
97
- </div>
98
-
99
- <div class="write-preview-container">
100
- <div class="write-container me-1">
101
- <div class="help-text text-black-50 ">
102
- <span class="help hidden">[[modules:composer.compose]] <i class="fa fa-question-circle"></i></span>
103
- <span class="toggle-preview hide">[[modules:composer.show_preview]]</span>
104
- </div>
105
- <div class="float-end draft-icon hidden-md hidden-lg"></div>
106
- <textarea class="write" tabindex="4" placeholder="[[modules:composer.textarea.placeholder]]">{body}</textarea>
107
- </div>
108
- <div class="hidden-sm hidden-xs preview-container ms-1">
109
- <div class="help-text text-black-50">
110
- <span class="toggle-preview">[[modules:composer.hide_preview]]</span>
111
- </div>
112
- <div class="preview card card-body bg-light"></div>
113
- </div>
114
- </div>
30
+ <!-- IMPORT partials/composer-write-preview.tpl -->
115
31
 
116
32
  <!-- IF isTopicOrMain -->
117
33
  <!-- IMPORT partials/composer-tags.tpl -->
@@ -0,0 +1,30 @@
1
+ <div class="category-tag-row">
2
+ <div class="btn-toolbar formatting-bar">
3
+ <ul class="formatting-group">
4
+ <!-- BEGIN formatting -->
5
+ <!-- IF formatting.spacer -->
6
+ <li class="spacer"></li>
7
+ <!-- ELSE -->
8
+ {{{ if (./visibility.desktop && ((isTopicOrMain && ./visibility.main) || (!isTopicOrMain && ./visibility.reply))) }}}
9
+ <li tabindex="-1" data-format="{formatting.name}" title="{formatting.title}"><i class="{formatting.className}"></i></li>
10
+ {{{ end }}}
11
+ <!-- ENDIF formatting.spacer -->
12
+ <!-- END formatting -->
13
+
14
+ <!-- IF privileges.upload:post:image -->
15
+ <li class="img-upload-btn" data-format="picture" tabindex="-1" title="[[modules:composer.upload-picture]]">
16
+ <i class="fa fa-file-image-o"></i>
17
+ </li>
18
+ <!-- ENDIF privileges.upload:post:image -->
19
+ <!-- IF privileges.upload:post:file -->
20
+ <li class="file-upload-btn" data-format="upload" tabindex="-1" title="[[modules:composer.upload-file]]">
21
+ <i class="fa fa-file-o"></i>
22
+ </li>
23
+ <!-- ENDIF privileges.upload:post:file -->
24
+
25
+ <form id="fileForm" method="post" enctype="multipart/form-data">
26
+ <input type="file" id="files" name="files[]" multiple class="gte-ie9 hide"/>
27
+ </form>
28
+ </ul>
29
+ </div>
30
+ </div>
@@ -0,0 +1,43 @@
1
+ <div class="title-container">
2
+ {{{ if isTopic }}}
3
+ <div class="category-list-container hidden-sm hidden-xs">
4
+ <!-- IMPORT partials/category-selector.tpl -->
5
+ </div>
6
+ {{{ end }}}
7
+
8
+ <!-- IF showHandleInput -->
9
+ <div data-component="composer/handle">
10
+ <input class="handle form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.handle_placeholder]]" value="{handle}" />
11
+ </div>
12
+ <!-- ENDIF showHandleInput -->
13
+ <div data-component="composer/title" class="position-relative">
14
+ <!-- IF isTopicOrMain -->
15
+ <input class="title form-control h-100" type="text" tabindex="1" placeholder="[[topic:composer.title_placeholder]]" value="{topicTitle}"/>
16
+ <!-- ELSE -->
17
+ <span class="title h-100">[[topic:composer.replying_to, "{topicTitle}"]]</span>
18
+ <!-- ENDIF isTopicOrMain -->
19
+ <div id="quick-search-container" class="quick-search-container mt-2 dropdown-menu d-block p-2 hidden">
20
+ <div class="text-center loading-indicator"><i class="fa fa-spinner fa-spin"></i></div>
21
+ <div class="quick-search-results-container"></div>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="float-end draft-icon hidden-xs hidden-sm"></div>
26
+
27
+ <div class="display-scheduler float-end hidden-sm hidden-xs{{{ if !canSchedule }}} hidden{{{ end }}}">
28
+ <i class="fa fa-clock-o"></i>
29
+ </div>
30
+
31
+ <div class="btn-group float-end action-bar hidden-sm hidden-xs">
32
+ <button class="btn btn-outline-secondary composer-discard" data-action="discard" tabindex="-1"><i class="fa fa-times"></i> [[topic:composer.discard]]</button>
33
+
34
+ <button class="btn btn-primary composer-submit" data-action="post" tabindex="6" data-text-variant=" [[topic:composer.schedule]]"><i class="fa fa-check"></i> [[topic:composer.submit]]</button>
35
+ {{{ if submitOptions.length }}}
36
+ <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
37
+ <span class="caret"></span>
38
+ <span class="sr-only">[[topic:composer.additional-options]]</span>
39
+ </button>
40
+ <ul class="dropdown-menu">{{{ each submitOptions }}}<li><a class="dropdown-item" href="#" data-action="{./action}">{./text}</a></li>{{{ end }}}</ul>
41
+ {{{ end }}}
42
+ </div>
43
+ </div>
@@ -0,0 +1,16 @@
1
+ <div class="write-preview-container">
2
+ <div class="write-container me-1">
3
+ <div class="help-text text-black-50 ">
4
+ <span class="help hidden">[[modules:composer.compose]] <i class="fa fa-question-circle"></i></span>
5
+ <span class="toggle-preview hide">[[modules:composer.show_preview]]</span>
6
+ </div>
7
+ <div class="float-end draft-icon hidden-md hidden-lg"></div>
8
+ <textarea class="write" tabindex="4" placeholder="[[modules:composer.textarea.placeholder]]">{body}</textarea>
9
+ </div>
10
+ <div class="hidden-sm hidden-xs preview-container ms-1">
11
+ <div class="help-text text-black-50">
12
+ <span class="toggle-preview">[[modules:composer.hide_preview]]</span>
13
+ </div>
14
+ <div class="preview card card-body bg-light"></div>
15
+ </div>
16
+ </div>