user_workspace_widgets.mak.py 28KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. # -*- coding:utf-8 -*-
  2. from mako import runtime, filters, cache
  3. UNDEFINED = runtime.UNDEFINED
  4. __M_dict_builtin = dict
  5. __M_locals_builtin = locals
  6. _magic_number = 10
  7. _modified_time = 1413984364.150558
  8. _enable_loop = True
  9. _template_filename = '/home/damien/proj/tracim-app/pod/tracim/tracim/templates/user_workspace_widgets.mak'
  10. _template_uri = '/home/damien/proj/tracim-app/pod/tracim/tracim/templates/user_workspace_widgets.mak'
  11. _source_encoding = 'utf-8'
  12. from markupsafe import escape_silent as escape
  13. _exports = ['SECURED_SHOW_CHANGE_STATUS_FOR_THREAD', 'SECURED_SECTION_TITLE', 'THREAD_LIST', 'SECURED_SHOW_CHANGE_STATUS_FOR_FILE', 'EMPTY_CONTENT', 'SECURED_SHOW_CHANGE_STATUS_FOR_PAGE', 'BREADCRUMB', 'FOLDER_LIST', 'PAGE_LIST', 'FILE_LIST', 'DATA_TARGET_BUTTON', 'TREEVIEW', 'SHOW_CHANGE_STATUS', 'TREEVIEW_DYNAMIC']
  14. def _mako_get_namespace(context, name):
  15. try:
  16. return context.namespaces[(__name__, name)]
  17. except KeyError:
  18. _mako_generate_namespaces(context)
  19. return context.namespaces[(__name__, name)]
  20. def _mako_generate_namespaces(context):
  21. ns = runtime.TemplateNamespace('TIM', context._clean_inheritance_tokens(), templateuri='tracim.templates.pod', callables=None, calling_uri=_template_uri)
  22. context.namespaces[(__name__, 'TIM')] = ns
  23. def render_body(context,**pageargs):
  24. __M_caller = context.caller_stack._push_frame()
  25. try:
  26. __M_locals = __M_dict_builtin(pageargs=pageargs)
  27. __M_writer = context.writer()
  28. __M_writer('\n\n')
  29. __M_writer('\n\n')
  30. __M_writer('\n\n')
  31. __M_writer('\n\n')
  32. __M_writer('\n\n')
  33. __M_writer('\n\n')
  34. __M_writer('\n\n')
  35. __M_writer('\n\n')
  36. __M_writer('\n\n')
  37. __M_writer('\n\n')
  38. __M_writer('\n\n')
  39. __M_writer('\n\n')
  40. __M_writer('\n\n')
  41. __M_writer('\n\n')
  42. __M_writer('\n')
  43. return ''
  44. finally:
  45. context.caller_stack._pop_frame()
  46. def render_SECURED_SHOW_CHANGE_STATUS_FOR_THREAD(context,user,workspace,item):
  47. __M_caller = context.caller_stack._push_frame()
  48. try:
  49. h = context.get('h', UNDEFINED)
  50. def SHOW_CHANGE_STATUS(item,target_url,allow_to_change_status=False):
  51. return render_SHOW_CHANGE_STATUS(context,item,target_url,allow_to_change_status)
  52. tg = context.get('tg', UNDEFINED)
  53. __M_writer = context.writer()
  54. __M_writer('\n ')
  55. target_url = tg.url('/workspaces/{wid}/folders/{fid}/threads/{pid}/put_status?status={{status_id}}').format(wid=item.workspace.id, fid=item.parent.id, pid=item.id)
  56. __M_writer('\n ')
  57. allow_status_change = h.user_role(user, workspace)>=2 and item.selected_revision=='latest'
  58. __M_writer('\n')
  59. __M_writer(' ')
  60. __M_writer(escape(SHOW_CHANGE_STATUS(item, target_url, allow_status_change)))
  61. __M_writer('\n')
  62. return ''
  63. finally:
  64. context.caller_stack._pop_frame()
  65. def render_SECURED_SECTION_TITLE(context,user,workspace,dom_id,label,action_dom_id='',action_label='',icon_size='',icon_path=''):
  66. __M_caller = context.caller_stack._push_frame()
  67. try:
  68. h = context.get('h', UNDEFINED)
  69. TIM = _mako_get_namespace(context, 'TIM')
  70. def DATA_TARGET_BUTTON(dom_id,label):
  71. return render_DATA_TARGET_BUTTON(context,dom_id,label)
  72. __M_writer = context.writer()
  73. __M_writer('\n <h4 id="')
  74. __M_writer(escape(dom_id))
  75. __M_writer('">\n ')
  76. __M_writer(escape(TIM.ICO(icon_size, icon_path) if icon_path else ''))
  77. __M_writer('\n ')
  78. __M_writer(escape(label))
  79. __M_writer('\n \n')
  80. if h.user_role(user, workspace)>1:
  81. if action_dom_id and action_label:
  82. __M_writer(' <small style="margin-left: 1em;"> ')
  83. __M_writer(escape(DATA_TARGET_BUTTON(action_dom_id, action_label)))
  84. __M_writer('</small> \n')
  85. __M_writer(' </h4>\n')
  86. return ''
  87. finally:
  88. context.caller_stack._pop_frame()
  89. def render_THREAD_LIST(context,dom_id,workspace_id,threads):
  90. __M_caller = context.caller_stack._push_frame()
  91. try:
  92. TIM = _mako_get_namespace(context, 'TIM')
  93. def EMPTY_CONTENT(empty_content_label):
  94. return render_EMPTY_CONTENT(context,empty_content_label)
  95. len = context.get('len', UNDEFINED)
  96. _ = context.get('_', UNDEFINED)
  97. tg = context.get('tg', UNDEFINED)
  98. __M_writer = context.writer()
  99. __M_writer('\n')
  100. if len(threads)<=0:
  101. __M_writer(' ')
  102. __M_writer(escape(EMPTY_CONTENT(_('No thread found.'))))
  103. __M_writer('\n')
  104. else:
  105. __M_writer(' <table id="')
  106. __M_writer(escape(dom_id))
  107. __M_writer('" class="table table-striped table-hover">\n')
  108. for thread in threads:
  109. __M_writer(' <tr>\n <td><a href="')
  110. __M_writer(escape(tg.url('/workspaces/{}/folders/{}/threads/{}'.format(workspace_id, thread.folder.id, thread.id))))
  111. __M_writer('">')
  112. __M_writer(escape(TIM.ICO(16, 'apps/internet-group-chat')))
  113. __M_writer(' ')
  114. __M_writer(escape(thread.label))
  115. __M_writer('</a></td>\n <td>')
  116. __M_writer(escape(TIM.ICO(16, thread.status.icon)))
  117. __M_writer(' <span class="')
  118. __M_writer(escape(thread.status.css))
  119. __M_writer('">')
  120. __M_writer(escape(thread.status.label))
  121. __M_writer('</span></td>\n <td>')
  122. __M_writer(escape(_('{} message(s)').format(thread.comment_nb)))
  123. __M_writer('</td>\n </tr>\n')
  124. __M_writer(' </table>\n')
  125. return ''
  126. finally:
  127. context.caller_stack._pop_frame()
  128. def render_SECURED_SHOW_CHANGE_STATUS_FOR_FILE(context,user,workspace,item):
  129. __M_caller = context.caller_stack._push_frame()
  130. try:
  131. h = context.get('h', UNDEFINED)
  132. def SHOW_CHANGE_STATUS(item,target_url,allow_to_change_status=False):
  133. return render_SHOW_CHANGE_STATUS(context,item,target_url,allow_to_change_status)
  134. tg = context.get('tg', UNDEFINED)
  135. __M_writer = context.writer()
  136. __M_writer('\n ')
  137. target_url = tg.url('/workspaces/{wid}/folders/{fid}/files/{pid}/put_status?status={{status_id}}').format(wid=item.workspace.id, fid=item.parent.id, pid=item.id)
  138. __M_writer('\n ')
  139. allow_status_change = h.user_role(user, workspace)>=2 and item.selected_revision=='latest'
  140. __M_writer('\n ')
  141. __M_writer(escape(SHOW_CHANGE_STATUS(item, target_url, allow_status_change)))
  142. __M_writer('\n')
  143. return ''
  144. finally:
  145. context.caller_stack._pop_frame()
  146. def render_EMPTY_CONTENT(context,empty_content_label):
  147. __M_caller = context.caller_stack._push_frame()
  148. try:
  149. __M_writer = context.writer()
  150. __M_writer('<p class="pod-empty">')
  151. __M_writer(escape(empty_content_label))
  152. __M_writer('</p>')
  153. return ''
  154. finally:
  155. context.caller_stack._pop_frame()
  156. def render_SECURED_SHOW_CHANGE_STATUS_FOR_PAGE(context,user,workspace,item):
  157. __M_caller = context.caller_stack._push_frame()
  158. try:
  159. h = context.get('h', UNDEFINED)
  160. def SHOW_CHANGE_STATUS(item,target_url,allow_to_change_status=False):
  161. return render_SHOW_CHANGE_STATUS(context,item,target_url,allow_to_change_status)
  162. tg = context.get('tg', UNDEFINED)
  163. __M_writer = context.writer()
  164. __M_writer('\n ')
  165. target_url = tg.url('/workspaces/{wid}/folders/{fid}/pages/{pid}/put_status?status={{status_id}}').format(wid=item.workspace.id, fid=item.parent.id, pid=item.id)
  166. __M_writer('\n ')
  167. allow_status_change = h.user_role(user, workspace)>=2 and item.selected_revision=='latest'
  168. __M_writer('\n ')
  169. __M_writer(escape(SHOW_CHANGE_STATUS(item, target_url, allow_status_change)))
  170. __M_writer('\n')
  171. return ''
  172. finally:
  173. context.caller_stack._pop_frame()
  174. def render_BREADCRUMB(context,dom_id,breadcrumb_items):
  175. __M_caller = context.caller_stack._push_frame()
  176. try:
  177. TIM = _mako_get_namespace(context, 'TIM')
  178. __M_writer = context.writer()
  179. __M_writer('\n <ul id="')
  180. __M_writer(escape(dom_id))
  181. __M_writer('" class="breadcrumb" style="margin-top: -1.5em; display: none;">\n')
  182. for item in breadcrumb_items:
  183. if item.is_active:
  184. __M_writer(' <li class="active">')
  185. __M_writer(escape(TIM.ICO(16, item.icon)))
  186. __M_writer(' ')
  187. __M_writer(escape(item.label))
  188. __M_writer('</li>\n')
  189. else:
  190. __M_writer(' <li>')
  191. __M_writer(escape(TIM.ICO(16, item.icon)))
  192. __M_writer(' <a href="')
  193. __M_writer(escape(item.url))
  194. __M_writer('">')
  195. __M_writer(escape(item.label))
  196. __M_writer('</a></li>\n')
  197. __M_writer(' </ul>\n')
  198. return ''
  199. finally:
  200. context.caller_stack._pop_frame()
  201. def render_FOLDER_LIST(context,dom_id,workspace_id,folders):
  202. __M_caller = context.caller_stack._push_frame()
  203. try:
  204. TIM = _mako_get_namespace(context, 'TIM')
  205. def EMPTY_CONTENT(empty_content_label):
  206. return render_EMPTY_CONTENT(context,empty_content_label)
  207. len = context.get('len', UNDEFINED)
  208. _ = context.get('_', UNDEFINED)
  209. tg = context.get('tg', UNDEFINED)
  210. __M_writer = context.writer()
  211. __M_writer('\n')
  212. if len(folders)<=0:
  213. __M_writer(' ')
  214. __M_writer(EMPTY_CONTENT(_('No folder found.')))
  215. __M_writer('\n')
  216. else:
  217. __M_writer(' <table id="')
  218. __M_writer(escape(dom_id))
  219. __M_writer('" class="table table-striped table-hover">\n')
  220. for folder in folders:
  221. __M_writer(' <tr>\n <td><a href="')
  222. __M_writer(escape(tg.url('/workspaces/{}/folders/{}'.format(workspace_id, folder.id))))
  223. __M_writer('">')
  224. __M_writer(escape(TIM.ICO(16, 'places/jstree-folder')))
  225. __M_writer(' ')
  226. __M_writer(escape(folder.label))
  227. __M_writer('</a></td>\n <td>\n')
  228. if folder.content_nb.all==0:
  229. __M_writer(' <span class="pod-empty-item">')
  230. __M_writer(escape(_('This folder is empty')))
  231. __M_writer('</span>\n')
  232. else:
  233. if folder.folder_nb.all>=1:
  234. __M_writer(' ')
  235. __M_writer(_('{nb_total} subfolder(s)').format(nb_total=folder.folder_nb.all))
  236. __M_writer('\n')
  237. __M_writer(' \n')
  238. if folder.thread_nb.all>=1:
  239. __M_writer(' ')
  240. __M_writer(_('{nb_total} thread(s) &mdash; {nb_open} open').format(nb_total=folder.thread_nb.all, nb_open=folder.thread_nb.open))
  241. __M_writer('\n <br/>\n')
  242. __M_writer('\n')
  243. if folder.file_nb.all>=1:
  244. __M_writer(' ')
  245. __M_writer(_('{nb_total} file(s) &mdash; {nb_open} open').format(nb_total=folder.file_nb.all, nb_open=folder.file_nb.open))
  246. __M_writer('\n <br/>\n')
  247. __M_writer('\n')
  248. if folder.page_nb.all>=1:
  249. __M_writer(' ')
  250. __M_writer(_('{nb_total} page(s) &mdash; {nb_open} open').format(nb_total=folder.page_nb.all, nb_open=folder.page_nb.open))
  251. __M_writer('\n <br/>\n')
  252. __M_writer('\n')
  253. __M_writer(' </td>\n </tr>\n')
  254. __M_writer(' </table>\n')
  255. return ''
  256. finally:
  257. context.caller_stack._pop_frame()
  258. def render_PAGE_LIST(context,dom_id,workspace_id,pages):
  259. __M_caller = context.caller_stack._push_frame()
  260. try:
  261. TIM = _mako_get_namespace(context, 'TIM')
  262. def EMPTY_CONTENT(empty_content_label):
  263. return render_EMPTY_CONTENT(context,empty_content_label)
  264. len = context.get('len', UNDEFINED)
  265. _ = context.get('_', UNDEFINED)
  266. tg = context.get('tg', UNDEFINED)
  267. __M_writer = context.writer()
  268. __M_writer('\n')
  269. if len(pages)<=0:
  270. __M_writer(' ')
  271. __M_writer(escape(EMPTY_CONTENT(_('No page found.'))))
  272. __M_writer('\n')
  273. else:
  274. __M_writer(' <table id="')
  275. __M_writer(escape(dom_id))
  276. __M_writer('" class="table table-striped table-hover">\n')
  277. for page in pages:
  278. __M_writer(' <tr>\n <td><a href="')
  279. __M_writer(escape(tg.url('/workspaces/{}/folders/{}/pages/{}'.format(workspace_id, page.folder.id, page.id))))
  280. __M_writer('">')
  281. __M_writer(escape(TIM.ICO(16, 'mimetypes/text-html')))
  282. __M_writer(' ')
  283. __M_writer(escape(page.label))
  284. __M_writer('</a></td>\n <td>\n ')
  285. __M_writer(escape(TIM.ICO(16, page.status.icon)))
  286. __M_writer(' <span class="')
  287. __M_writer(escape(page.status.css))
  288. __M_writer('">')
  289. __M_writer(escape(page.status.label))
  290. __M_writer('</span>\n </td>\n </tr>\n')
  291. __M_writer(' </table>\n')
  292. return ''
  293. finally:
  294. context.caller_stack._pop_frame()
  295. def render_FILE_LIST(context,dom_id,workspace_id,files):
  296. __M_caller = context.caller_stack._push_frame()
  297. try:
  298. TIM = _mako_get_namespace(context, 'TIM')
  299. def EMPTY_CONTENT(empty_content_label):
  300. return render_EMPTY_CONTENT(context,empty_content_label)
  301. len = context.get('len', UNDEFINED)
  302. _ = context.get('_', UNDEFINED)
  303. tg = context.get('tg', UNDEFINED)
  304. __M_writer = context.writer()
  305. __M_writer('\n')
  306. if len(files)<=0:
  307. __M_writer(' ')
  308. __M_writer(escape(EMPTY_CONTENT(_('No file found.'))))
  309. __M_writer('\n')
  310. else:
  311. __M_writer(' <table id="')
  312. __M_writer(escape(dom_id))
  313. __M_writer('" class="table table-striped table-hover">\n')
  314. for curfile in files:
  315. __M_writer(' <tr>\n <td><a href="')
  316. __M_writer(escape(tg.url('/workspaces/{}/folders/{}/files/{}'.format(workspace_id, curfile.folder.id, curfile.id))))
  317. __M_writer('">')
  318. __M_writer(escape(TIM.ICO(16, 'mimetypes/text-html')))
  319. __M_writer(' ')
  320. __M_writer(escape(curfile.label))
  321. __M_writer('</a></td>\n <td>\n ')
  322. __M_writer(escape(TIM.ICO(16, curfile.status.icon)))
  323. __M_writer(' <span class="')
  324. __M_writer(escape(curfile.status.css))
  325. __M_writer('">')
  326. __M_writer(escape(curfile.status.label))
  327. __M_writer('</span>\n </td>\n </tr>\n')
  328. __M_writer(' </table>\n')
  329. return ''
  330. finally:
  331. context.caller_stack._pop_frame()
  332. def render_DATA_TARGET_BUTTON(context,dom_id,label):
  333. __M_caller = context.caller_stack._push_frame()
  334. try:
  335. __M_writer = context.writer()
  336. __M_writer('<a data-toggle="collapse" data-target="#')
  337. __M_writer(escape(dom_id))
  338. __M_writer('"><b>')
  339. __M_writer(escape(label))
  340. __M_writer('</b></a>')
  341. return ''
  342. finally:
  343. context.caller_stack._pop_frame()
  344. def render_TREEVIEW(context,dom_id,selected_id='',uniq_workspace='0'):
  345. __M_caller = context.caller_stack._push_frame()
  346. try:
  347. tg = context.get('tg', UNDEFINED)
  348. dict = context.get('dict', UNDEFINED)
  349. def TREEVIEW_DYNAMIC(dom_id,selected_id,get_root_url,get_children_url,mode='link_to_document'):
  350. return render_TREEVIEW_DYNAMIC(context,dom_id,selected_id,get_root_url,get_children_url,mode)
  351. __M_writer = context.writer()
  352. __M_writer('\n ')
  353. get_root_url = tg.url("/workspaces/treeview_root", dict(current_id=selected_id))
  354. get_children_url = tg.url("/workspaces/treeview_children")
  355. __M_writer('\n ')
  356. __M_writer(escape(TREEVIEW_DYNAMIC(dom_id, selected_id, get_root_url, get_children_url)))
  357. __M_writer('\n')
  358. return ''
  359. finally:
  360. context.caller_stack._pop_frame()
  361. def render_SHOW_CHANGE_STATUS(context,item,target_url,allow_to_change_status=False):
  362. __M_caller = context.caller_stack._push_frame()
  363. try:
  364. h = context.get('h', UNDEFINED)
  365. TIM = _mako_get_namespace(context, 'TIM')
  366. __M_writer = context.writer()
  367. __M_writer('\n <div class="btn-group">\n')
  368. if not allow_to_change_status:
  369. __M_writer(' <button type="button" class="btn btn-default disable btn-link">\n ')
  370. __M_writer(escape(TIM.ICO(16, item.status.icon)))
  371. __M_writer(' <span class="')
  372. __M_writer(escape(item.status.css))
  373. __M_writer('">')
  374. __M_writer(escape(item.status.label))
  375. __M_writer('</span>\n </button>\n')
  376. else:
  377. __M_writer(' <button type="button" class="btn btn-default btn-link dropdown-toggle" data-toggle="dropdown">\n ')
  378. __M_writer(escape(TIM.ICO(16, item.status.icon)))
  379. __M_writer(' <span class="')
  380. __M_writer(escape(item.status.css))
  381. __M_writer('">')
  382. __M_writer(escape(item.status.label))
  383. __M_writer('</span>\n </button>\n <ul class="dropdown-menu" role="menu">\n')
  384. for status in h.AllStatus(item.type):
  385. if status.id == 'closed-deprecated':
  386. __M_writer(' <li class="divider"></li>\n')
  387. __M_writer(' <li><a\n class="')
  388. __M_writer(escape(('', 'pod-status-selected')[status.id==item.status.id]))
  389. __M_writer('"\n href="')
  390. __M_writer(escape(target_url.format(status_id=status.id)))
  391. __M_writer('"> ')
  392. __M_writer(escape(TIM.ICO(16, status.icon)))
  393. __M_writer(' <span class="')
  394. __M_writer(escape(status.css))
  395. __M_writer('">')
  396. __M_writer(escape(status.label))
  397. __M_writer('</span></a></li>\n')
  398. __M_writer(' </ul>\n')
  399. __M_writer(' </div>\n')
  400. return ''
  401. finally:
  402. context.caller_stack._pop_frame()
  403. def render_TREEVIEW_DYNAMIC(context,dom_id,selected_id,get_root_url,get_children_url,mode='link_to_document'):
  404. __M_caller = context.caller_stack._push_frame()
  405. try:
  406. TIM = _mako_get_namespace(context, 'TIM')
  407. _ = context.get('_', UNDEFINED)
  408. __M_writer = context.writer()
  409. __M_writer('\n')
  410. __M_writer(' <div id="')
  411. __M_writer(escape(dom_id))
  412. __M_writer('">\n <div id="')
  413. __M_writer(escape(dom_id))
  414. __M_writer('-treeview"></div>\n <input type=\'hidden\' id=\'')
  415. __M_writer(escape(dom_id))
  416. __M_writer("-treeview-hidden-field' name='folder_id' value=''/>\n <script>\n $(function () {\n $('#")
  417. __M_writer(escape(dom_id))
  418. __M_writer('-treeview\').jstree({\n \'plugins\' : [ \'wholerow\', \'types\' ],\n "types" : {\n "default" : {\n "icon" : "')
  419. __M_writer(escape(TIM.ICO_URL(16, 'places/jstree-folder')))
  420. __M_writer('"\n },\n "workspace" : {\n "icon" : "')
  421. __M_writer(escape(TIM.ICO_URL(16, 'places/folder-remote')))
  422. __M_writer('"\n },\n },\n \'core\' : {\n \'error\': function (error) {\n console.log(\'Error \' + error.toString())\n },\n \'data\' : {\n \'dataType\': \'json\',\n \'contentType\': \'application/json; charset=utf-8\',\n \'url\' : function (node) {\n if (node.id===\'#\') {\n return \'')
  423. __M_writer(get_root_url)
  424. __M_writer("'\n } else {\n return '")
  425. __M_writer(escape(get_children_url))
  426. __M_writer('\'\n }\n },\n \'data\' : function(node) {\n console.log("NODE => "+JSON.stringify(node))\n return {\n \'id\' : node.id\n };\n },\n \'success\': function (new_data) {\n console.log(\'loaded new menu data\' + new_data)\n console.log(new_data);\n\n for (var i = new_data[\'d\'].length; i--;) {\n // prepareOrRemoveTreeNode(null, new_data[\'d\'][i], new_data[\'d\'], shouldRemoveNodeDoneCallBack);\n }\n return new_data;\n },\n },\n }\n });\n\n')
  427. if mode=='link_to_document':
  428. __M_writer(" $('#")
  429. __M_writer(escape(dom_id))
  430. __M_writer('-treeview\').on("select_node.jstree", function (e, data) {\n // click event is intercepted, so we fake a click() by getting the href value\n // of child link and put it as current document location\n url = $(\'#\'+data.selected[0]+\' > a\').attr(\'href\');\n location.href = url;\n });\n')
  431. else:
  432. __M_writer(" $('#")
  433. __M_writer(escape(dom_id))
  434. __M_writer('-treeview\').on("select_node.jstree", function (e, data) {\n // on click, the form hidden field is updated\n')
  435. __M_writer(" $('#")
  436. __M_writer(escape(dom_id))
  437. __M_writer("-treeview-hidden-field').val(data.selected[0]);\n });\n")
  438. __M_writer(" \n $('#")
  439. __M_writer(escape(dom_id))
  440. __M_writer('-treeview\').on("loaded.jstree", function () {\n nodes = $(\'#left-sidebar-treeview .jstree-node\');\n console.log("nodes = "+nodes.length);\n if (nodes.length<=0) {\n $("#left-sidebar-treeview").append( "<p class=\'pod-grey\'>')
  441. __M_writer(_('There is no content yet.'))
  442. __M_writer('" );\n $("#left-sidebar-treeview").append( "<p><a class=\\"btn btn-success\\" data-toggle=\\"modal\\" role=\\"button\\" href=\\"#add-document-modal-form\\"><i class=\\"fa fa-plus\\"></i> ')
  443. __M_writer(escape(_('Create a topic')))
  444. __M_writer('</a></p>" );\n }\n });\n });\n </script>\n </div>\n')
  445. return ''
  446. finally:
  447. context.caller_stack._pop_frame()
  448. """
  449. __M_BEGIN_METADATA
  450. {"source_encoding": "utf-8", "line_map": {"23": 1, "26": 0, "31": 1, "32": 13, "33": 15, "34": 17, "35": 31, "36": 70, "37": 87, "38": 104, "39": 120, "40": 128, "41": 214, "42": 220, "43": 226, "44": 233, "45": 257, "51": 228, "59": 228, "60": 229, "62": 229, "63": 230, "65": 230, "66": 232, "67": 232, "68": 232, "74": 19, "82": 19, "83": 20, "84": 20, "85": 21, "86": 21, "87": 22, "88": 22, "89": 25, "90": 26, "91": 27, "92": 27, "93": 27, "94": 30, "100": 106, "110": 106, "111": 107, "112": 108, "113": 108, "114": 108, "115": 109, "116": 110, "117": 110, "118": 110, "119": 111, "120": 112, "121": 113, "122": 113, "123": 113, "124": 113, "125": 113, "126": 113, "127": 114, "128": 114, "129": 114, "130": 114, "131": 114, "132": 114, "133": 115, "134": 115, "135": 118, "141": 216, "149": 216, "150": 217, "152": 217, "153": 218, "155": 218, "156": 219, "157": 219, "163": 15, "167": 15, "168": 15, "169": 15, "175": 222, "183": 222, "184": 223, "186": 223, "187": 224, "189": 224, "190": 225, "191": 225, "197": 3, "202": 3, "203": 4, "204": 4, "205": 5, "206": 6, "207": 7, "208": 7, "209": 7, "210": 7, "211": 7, "212": 8, "213": 9, "214": 9, "215": 9, "216": 9, "217": 9, "218": 9, "219": 9, "220": 12, "226": 33, "236": 33, "237": 34, "238": 35, "239": 35, "240": 35, "241": 36, "242": 37, "243": 37, "244": 37, "245": 38, "246": 39, "247": 40, "248": 40, "249": 40, "250": 40, "251": 40, "252": 40, "253": 42, "254": 43, "255": 43, "256": 43, "257": 44, "258": 45, "259": 46, "260": 46, "261": 46, "262": 48, "263": 49, "264": 50, "265": 50, "266": 50, "267": 53, "268": 54, "269": 55, "270": 55, "271": 55, "272": 58, "273": 59, "274": 60, "275": 60, "276": 60, "277": 63, "278": 65, "279": 68, "285": 72, "295": 72, "296": 73, "297": 74, "298": 74, "299": 74, "300": 75, "301": 76, "302": 76, "303": 76, "304": 77, "305": 78, "306": 79, "307": 79, "308": 79, "309": 79, "310": 79, "311": 79, "312": 81, "313": 81, "314": 81, "315": 81, "316": 81, "317": 81, "318": 85, "324": 89, "334": 89, "335": 90, "336": 91, "337": 91, "338": 91, "339": 92, "340": 93, "341": 93, "342": 93, "343": 94, "344": 95, "345": 96, "346": 96, "347": 96, "348": 96, "349": 96, "350": 96, "351": 98, "352": 98, "353": 98, "354": 98, "355": 98, "356": 98, "357": 102, "363": 17, "367": 17, "368": 17, "369": 17, "370": 17, "371": 17, "377": 122, "385": 122, "386": 123, "391": 126, "392": 127, "393": 127, "399": 235, "405": 235, "406": 237, "407": 238, "408": 239, "409": 239, "410": 239, "411": 239, "412": 239, "413": 239, "414": 241, "415": 242, "416": 243, "417": 243, "418": 243, "419": 243, "420": 243, "421": 243, "422": 246, "423": 247, "424": 248, "425": 250, "426": 251, "427": 251, "428": 252, "429": 252, "430": 252, "431": 252, "432": 252, "433": 252, "434": 252, "435": 252, "436": 254, "437": 256, "443": 130, "449": 130, "450": 134, "451": 134, "452": 134, "453": 135, "454": 135, "455": 136, "456": 136, "457": 139, "458": 139, "459": 143, "460": 143, "461": 146, "462": 146, "463": 158, "464": 158, "465": 160, "466": 160, "467": 186, "468": 187, "469": 187, "470": 187, "471": 193, "472": 194, "473": 194, "474": 194, "475": 199, "476": 199, "477": 199, "478": 202, "479": 203, "480": 203, "481": 207, "482": 207, "483": 208, "484": 208, "490": 484}, "uri": "/home/damien/proj/tracim-app/pod/tracim/tracim/templates/user_workspace_widgets.mak", "filename": "/home/damien/proj/tracim-app/pod/tracim/tracim/templates/user_workspace_widgets.mak"}
  451. __M_END_METADATA
  452. """