EditView.handlebars 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. {{#if title}}
  2. <h1 class="screenreader-only" style="display: inline">{{title}}</h1>
  3. {{else}}
  4. <h1 class="screenreader-only" style="display: inline">
  5. {{#t "page_header_title"}}New Discussion{{/t}}
  6. </h1>
  7. {{/if}}
  8. <div id="discussion-edit-view" class="ui-tabs-minimal">
  9. {{#unless isAnnouncement}}
  10. <div id="discussion-edit-header" class="discussion-edit-header row-fluid">
  11. {{#if ENV.CONDITIONAL_RELEASE_SERVICE_ENABLED }}
  12. <ul id="discussion-edit-header-tabs">
  13. <li><a href="#discussion-details-tab" id="details_link">{{#t}}Details{{/t}}</a></li>
  14. <li><a href="#mastery-paths-editor" id="conditional_release_link">{{#t}}Mastery Paths{{/t}}</a></li>
  15. <span id="discussion-edit-header-spacer"></span>
  16. {{> DiscussionTopics/publishedButton }}
  17. </ul>
  18. {{else}}
  19. <div class="span4 offset8 text-right">
  20. {{> DiscussionTopics/publishedButton }}
  21. </div>
  22. </div>
  23. {{/if}}
  24. {{/unless}}
  25. <div id="discussion-details-tab">
  26. <fieldset>
  27. <div class="control-group">
  28. {{#if lockedItems.content}}
  29. <h1 id="discussion-title" class="title">{{title}}</h1>
  30. <input type="hidden" name="title" value="{{title}}"/>
  31. {{else}}
  32. <label class="hidden-inline-text" for="discussion-title">
  33. {{#t "topic_title"}}Topic Title{{/t}}
  34. </label>
  35. <input type="text"
  36. id="discussion-title"
  37. name="title"
  38. placeholder="{{#t "topic_title"}}Topic Title{{/t}}"
  39. value="{{title}}"
  40. maxlength="254"
  41. class="input-block-level">
  42. {{/if}}
  43. </div>
  44. <div class="control-group">
  45. {{#if lockedItems.content}}
  46. <div id="discussion-description" class="discussion-description">
  47. {{convertApiUserContent message}}
  48. </div>
  49. {{else}}
  50. <div style="float: right;">
  51. <a href="#" class="rte_switch_views_link">
  52. {{#t "#editor.switch_editor_html"}}HTML Editor{{/t}}
  53. </a>
  54. <a href="#" class="rte_switch_views_link" style="display:none;">
  55. {{#t "#editor.switch_editor_rich_text"}}Rich Content Editor{{/t}}
  56. </a>
  57. </div>
  58. <div style="clear:both;"></div>
  59. <textarea name="message"
  60. class="input-block-level"
  61. style="width: 100%; min-height: 200px;">
  62. {{convertApiUserContent message forEditing=1}}
  63. </textarea>
  64. {{/if}}
  65. </div>
  66. </fieldset>
  67. {{#if canAttach}}
  68. <fieldset>
  69. <div class="control-group">
  70. {{#if lockedItems.content}}
  71. <label class="control-label" {{#t "attachment"}}Attachment{{/t}}</label>
  72. {{else}}
  73. <label class="control-label"
  74. aria-label="{{#t}}Add Attachment{{/t}}"
  75. for="discussion_attachment_uploaded_data">
  76. {{#t "attachment"}}Attachment{{/t}}
  77. </label>
  78. {{/if}}
  79. <div class="controls">
  80. {{#each attachments}}
  81. <div class="attachmentRow">
  82. <a aria-label="attachment" href="{{url}}" class="{{mimeClass content-type}}">
  83. {{display_name}}
  84. </a>
  85. {{#unless ../lockedItems.content}}
  86. <button type="button"
  87. class="close btn btn-link removeAttachment"
  88. style="float:none"
  89. aria-label="{{#t}}Remove Attachment{{/t}}">×</button>
  90. {{/unless}}
  91. </div>
  92. {{/each}}
  93. {{#unless lockedItems.content}}
  94. <input type="file"
  95. name="attachment"
  96. {{#if attachments}}style="display:none"{{/if}}
  97. id="discussion_attachment_uploaded_data" >
  98. {{/unless}}
  99. </div>
  100. </div>
  101. </fieldset>
  102. {{/if}}
  103. <fieldset>
  104. {{#ifAny isTopic contextIsCourse canModerate showAssignment}}
  105. <div class="control-group">
  106. <div class="control-label">{{#t "options"}}Options{{/t}}</div>
  107. <div class="controls">
  108. {{#if isTopic}}
  109. <label class="checkbox" for="threaded">
  110. {{checkbox "threaded"}}
  111. {{#t "allow_threaded_replies"}}Allow threaded replies{{/t}}
  112. </label>
  113. {{/if}}
  114. {{#if contextIsCourse}}
  115. {{#if isAnnouncement}}
  116. <label class="checkbox" for="delay_posting">
  117. {{checkbox "delay_posting"
  118. checked=delayed_post_at
  119. class="element_toggler"
  120. aria-controls="discussion_topic_delay_post_container"}}
  121. {{#t "delay_posting"}}Delay posting{{/t}}
  122. </label>
  123. <label class="screenreader-only" id="discussion_topic_delay_post_accessible_label">
  124. {{#t}}Delay posting this topic until{{/t}}
  125. {{datepickerScreenreaderPrompt}}
  126. </label>
  127. <label id="discussion_topic_delay_post_container"
  128. style="{{hiddenUnless delayed_post_at}}"
  129. class="checkbox">
  130. {{#t "post_at"}}Post At{{/t}}
  131. <input type="text"
  132. class="datetime_field input-medium"
  133. name="delayed_post_at"
  134. {{! TODO: what would be the best way to get this formatted right? }}
  135. value="{{datetimeFormatted delayed_post_at}}"
  136. aria-labelledby="discussion_topic_delay_post_accessible_label"
  137. data-tooltip='{"position":"top","force_position":"true"}'
  138. title="{{accessibleDateFormat}}" />
  139. </label>
  140. {{/if}}
  141. <label class="checkbox" for="require_initial_post">
  142. {{checkbox "require_initial_post"}}
  143. {{#t "users_must_post_before_seeing_replies"}}Users must post before seeing replies{{/t}}
  144. </label>
  145. {{/if}}
  146. {{#if canModerate}}
  147. <label class="checkbox" for="podcast_enabled">
  148. {{checkbox "podcast_enabled"
  149. checked=podcast_url
  150. class="element_toggler"
  151. aria-controls="podcast_has_student_posts_container"}}
  152. {{#t "enable_podcast_feed"}}Enable podcast feed{{/t}}
  153. </label>
  154. {{#if contextIsCourse}}
  155. <label id="podcast_has_student_posts_container"
  156. style="{{hiddenUnless podcast_url}}"
  157. class="checkbox" for="podcast_has_student_posts">
  158. {{checkbox "podcast_has_student_posts"}}
  159. {{#t "include_replies_in_podcast_feed"}}Include student replies in podcast feed{{/t}}
  160. </label>
  161. {{/if}}
  162. {{/if}}
  163. {{#if showAssignment}}
  164. <label class="checkbox" for="use_for_grading">
  165. {{checkbox "assignment.set_assignment"
  166. id="use_for_grading"
  167. class="element_toggler"
  168. aria-controls="assignment_options"
  169. checked=set_assignment}}
  170. {{#t "use_for_grading"}}Graded{{/t}}
  171. </label>
  172. {{/if}}
  173. <label class="checkbox" for="allow_rating">
  174. {{checkbox "allow_rating"
  175. id="allow_rating"
  176. class="element_toggler"
  177. checked=allow_rating
  178. aria-controls="rating_settings_container"}}
  179. {{#t "allow_liking"}}Allow liking{{/t}}
  180. </label>
  181. <div id="rating_settings_container" style="{{hiddenUnless allow_rating}}; margin-left: 20px;">
  182. <label class="checkbox" for="only_graders_can_rate">
  183. {{checkbox "only_graders_can_rate"
  184. id="only_graders_can_rate"
  185. class="element_toggler"
  186. checked=only_graders_can_rate}}
  187. {{#t "only_graders_can_like"}}Only graders can like{{/t}}
  188. </label>
  189. <label class="checkbox" for="sort_by_rating">
  190. {{checkbox "sort_by_rating"
  191. id="sort_by_rating"
  192. class="element_toggler"
  193. checked=sort_by_rating}}
  194. {{#t "sort_by_likes"}}Sort by likes{{/t}}
  195. </label>
  196. </div>
  197. {{#if ENV.STUDENT_PLANNER_ENABLED}}
  198. {{#if isTopic}}
  199. <div id="todo_options" style="{{hiddenIf set_assignment}}">
  200. <label class="checkbox" for="allow_todo_date">
  201. {{checkbox "allow_todo_date"
  202. id="allow_todo_date"
  203. class="element_toggler"
  204. aria-controls="todo_date_input"}}
  205. {{#t}}Add to student to-do{{/t}}
  206. </label>
  207. <div id="todo_date_input" style="{{hiddenUnless allow_todo_date}}; margin-left: 20px;">
  208. <label for="todo_date">
  209. {{#t}}Date{{/t}}
  210. </label>
  211. <label class="screenreader-only" id="discussion_topic_todo_date_accessible_label">
  212. {{#t}}Discussion Topic will show on student to-do list for date{{/t}}
  213. {{datepickerScreenreaderPrompt}}
  214. </label>
  215. <input type="text"
  216. class="datetime_field input-medium"
  217. name="todo_date"
  218. id="todo_date"
  219. aria-labelledby="discussion_topic_todo_date_accessible_label"
  220. value="{{datetimeFormatted todo_date}}"
  221. data-tooltip='{"position":"top","force_position":"true"}'
  222. title="{{accessibleDateFormat}}"
  223. />
  224. </div>
  225. </div>
  226. {{/if}}
  227. {{/if}}
  228. </div>
  229. </div>
  230. {{/ifAny}}
  231. </fieldset>
  232. {{#if isTopic}}
  233. {{#unless isLargeRoster}}
  234. {{#if contextIsCourse}}
  235. <div id="group_category_options" class="control-group"></div>
  236. {{/if}}
  237. {{/unless}}
  238. {{#if contextIsCourse}}
  239. <div id="availability_options" style="{{hiddenIf set_assignment}}">
  240. <fieldset>
  241. <div class="control-group">
  242. <label class="control-label" for="delayed_post_at">
  243. {{#t "available_from"}}Available From{{/t}}
  244. </label>
  245. <label class="screenreader-only" id="discussion_topic_available_from_accessible_label">
  246. {{#t}}Discussion Topic will be available starting at{{/t}}
  247. {{datepickerScreenreaderPrompt}}
  248. </label>
  249. <div class="controls">
  250. <input type="text"
  251. class="datetime_field input-medium"
  252. name="delayed_post_at"
  253. id="delayed_post_at"
  254. aria-labelledby="discussion_topic_available_from_accessible_label"
  255. {{! TODO: what would be the best way to get this formatted right? }}
  256. value="{{datetimeFormatted delayed_post_at}}"
  257. data-tooltip='{"position":"top","force_position":"true"}'
  258. {{#unless lockedItems.availability_dates}}
  259. title="{{accessibleDateFormat}}"
  260. {{/unless}}
  261. {{readonlyIf lockedItems.availability_dates}}
  262. />
  263. </div>
  264. </div>
  265. </fieldset>
  266. {{#if isTopic}}
  267. <fieldset>
  268. <div class="control-group">
  269. <label class="control-label" for="lock_at">{{#t "until"}}Until{{/t}}</label>
  270. <label class="screenreader-only" id="discussion_topic_available_until_accessible_label">
  271. {{#t}}Discussion Topic will be available until{{/t}}
  272. {{datepickerScreenreaderPrompt}}
  273. </label>
  274. <div class="controls">
  275. <input type="text"
  276. class="datetime_field input-medium"
  277. name="lock_at"
  278. id="lock_at"
  279. aria-labelledby="discussion_topic_available_until_accessible_label"
  280. {{! TODO: what would be the best way to get this formatted right? }}
  281. value="{{datetimeFormatted lock_at}}"
  282. data-tooltip='{"position":"top","force_position":"true"}'
  283. {{#unless lockedItems.availability_dates}}
  284. title="{{accessibleDateFormat}}"}}
  285. {{/unless}}
  286. {{readonlyIf lockedItems.availability_dates}}
  287. />
  288. </div>
  289. </div>
  290. </fieldset>
  291. {{/if}}
  292. </div>
  293. {{/if}}
  294. {{/if}}
  295. {{#if showAssignment}}
  296. <div id="assignment_options" style="{{hiddenUnless set_assignment}}">
  297. <fieldset>
  298. <div class="control-group">
  299. <label class="control-label" for="discussion_topic_assignment_points_possible">
  300. {{#t "points_possible"}}Points Possible{{/t}}
  301. </label>
  302. <div class="controls">
  303. <input type="text"
  304. id="discussion_topic_assignment_points_possible"
  305. name="assignment[points_possible]"
  306. class="input-small"
  307. value="{{n assignment.pointsPossible}}"
  308. {{readonlyIf lockedItems.points}} />
  309. </div>
  310. <div id=discussion_point_change_warning class="alert form-column-right">
  311. {{#t}}If you change an assignment's points possible you must regrade the assignment.{{/t}}
  312. </div>
  313. </div>
  314. <div id="grading_type_options" class="control-group"></div>
  315. <div id="post_to_sis_options" class="control-group"></div>
  316. <div id="assignment_group_options" class="control-group"></div>
  317. {{#unless isLargeRoster}}
  318. <div id="peer_review_options" class="control-group"></div>
  319. {{/unless}}
  320. </fieldset>
  321. <div id="overrides-wrapper">
  322. <div class="form-column-left">
  323. {{#t}}Assign{{/t}}
  324. </div>
  325. <div class="overrides-column-right js-assignment-overrides overrideFormFlex">
  326. </div>
  327. </div>
  328. </div>
  329. {{/if}}
  330. </div>
  331. {{#if ENV.CONDITIONAL_RELEASE_SERVICE_ENABLED }}
  332. {{#unless isAnnouncement }}
  333. <div id="mastery-paths-editor">
  334. <div id="conditional-release-target" />
  335. </div>
  336. {{/unless}}
  337. {{/if}}
  338. </div>
  339. <div id="edit_discussion_form_buttons" class="form-actions flush">
  340. <button type="button" class="btn cancel_button">
  341. {{#t}}Cancel{{/t}}
  342. </button>
  343. {{#if canPublish}}
  344. <button type="button"
  345. data-text-while-loading="{{#t "saving"}}Saving...{{/t}}"
  346. class="btn btn-default save_and_publish">
  347. {{#t "buttons.save_and_publish"}}Save & Publish{{/t}}
  348. </button>
  349. {{/if}}
  350. <button type="submit"
  351. data-text-while-loading="{{#t "saving"}}Saving...{{/t}}"
  352. class="btn btn-primary">{{#t "save"}}Save{{/t}}</button>
  353. </div>