Le repo des sources pour le site web des JM2L
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

259 righe
10 KiB

  1. ## -*- coding: utf-8 -*-
  2. <%inherit file="jm2l:templates/layout.mako"/>
  3. <%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
  4. <%def name="jsAddOn()">
  5. <script src="/vendor/ckeditor/ckeditor.js"></script>
  6. <script src="/vendor/select2/js/select2.js"></script>
  7. <script src="/vendor/fileupload/js/jquery-uploader.min.js"></script>
  8. </%def>
  9. <%def name="cssAddOn()">
  10. <link rel="stylesheet" href="/vendor/select2/css/select2.css" type="text/css" media="screen" />
  11. <link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload.css">
  12. <link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui.css">
  13. <link rel="stylesheet" href="/vendor/leaflet/css/leaflet.css" />
  14. <!-- CSS adjustments for browsers with JavaScript disabled -->
  15. <noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-noscript.css"></noscript>
  16. <noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui-noscript.css"></noscript>
  17. </%def>
  18. <% from datetime import datetime %>
  19. <div class="row-fluid">
  20. <div class="span10 offset1">
  21. <div id="SalleCarousel">
  22. ${helpers.show_salles( Salles, form.salle_uid.data or form.salle_uid.choices and form.salle_uid.choices[0][0] )}
  23. </div>
  24. % if event.for_year==CurrentYear and request.user and (request.user.Staff or request.user in event.intervenants):
  25. <a class="btn btn-danger pull-right" type="button" onclick="return confirm_click();" href="${event.uid}/delete">
  26. <i class="icon-remove icon-white"></i> Supprimer
  27. </a>
  28. %endif
  29. % if 'uid' in form._fields:
  30. <div class="borderboxtime">
  31. ${event.start_time.strftime('%d %b %Y')} -
  32. ${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')}
  33. %if event.Salle:
  34. - <strong>Salle</strong>: ${event.Salle.name}
  35. %endif
  36. </div>
  37. %endif
  38. <h3 style="line-height:30px;" class="lowshadow">${form.event_type.data}</h3>
  39. % if 'uid' in form._fields:
  40. <div class="borderbox">
  41. Intervenants programmés:
  42. <ul>
  43. % if len(event.intervenants)==0:
  44. <i><b>Aucun</b></i>
  45. % else:
  46. % for num, iterv in enumerate(event.intervenants):
  47. <li>
  48. <strong><a href="/user/${iterv.slug}">${iterv.prenom} ${iterv.nom}</a></strong>.
  49. % if iterv.pseudo:
  50. (${iterv.pseudo})
  51. %endif
  52. </li>
  53. % endfor
  54. % endif
  55. </ul>
  56. </div>
  57. <a href="/event/${event.for_year}/${event.slug}" class="pull-right">Voir la version publiée de cet évènement</a>
  58. <br clear="both">
  59. %endif
  60. <fieldset>
  61. <legend>Proposer un événement</legend>
  62. <form action="" method="POST">
  63. ${form.csrf_token}
  64. % if 'uid' in form._fields:
  65. ${form.uid}
  66. %endif
  67. ${form.start_time}
  68. ${form.end_time}
  69. <%
  70. DicForm = {
  71. 'for_year': {'PlaceHolder':u"Année", 'ContainerStyle':"padding-right:5px;float:left;", },
  72. 'event_type': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;", },
  73. 'start_sel': {'PlaceHolder':u"Début", 'ContainerStyle':"padding-right:15px;float:left;", "FieldStyle":"width:15em;"},
  74. 'duration': {'PlaceHolder':u"Durée", 'ContainerStyle':"padding-right:15px;float:left;", "FieldStyle":"width:15em;"},
  75. 'salle_uid': {'PlaceHolder':u"Salle", 'ContainerStyle':"padding-right:15px;", "FieldStyle":"width:15em;"},
  76. 'name': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:95%;"},
  77. 'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:90%;height:500px;", "ckeditor":1 },
  78. }
  79. %>
  80. ${helpers.DisplayForm(form, DicForm)}
  81. <br>
  82. <div class="center">
  83. <button class="btn btn-large btn-primary" type="submit">Proposer</button>
  84. </div>
  85. </form>
  86. </fieldset>
  87. % if 'uid' in form._fields:
  88. <fieldset>
  89. <legend>Vos supports de présentation</legend>
  90. <div style="float:right;width:60%">
  91. <p> En plus de vos supports de présentation classique.
  92. Pensez aussi aux affiches, aux flyers, aux stickers,
  93. au bulletin d'adhésion à une association, à la documentation technique...
  94. Tout ce qui peut être utile, de près ou de loin à la promotion de votre évènement.
  95. </p>
  96. </div>
  97. ${helpers.uploader("event", form.uid.data, u"un support de présentation" )}
  98. </fieldset>
  99. %else:
  100. <p>NB: Vous devez proposer votre conférence avant de pouvoir
  101. téléverser votre support de présentation.
  102. </p>
  103. % endif
  104. <%def name="callback_Del_Summary(Entity)"> \
  105. <a class="btn btn-danger btn-mini pull-right" type="button" onclick="return confirm_click();" href="delete_link_tiers?tid=${Entity.uid}&uid=${event.uid}">
  106. <i class="icon-remove icon-white"></i>
  107. </a>
  108. </%def>
  109. % if 'uid' in form._fields:
  110. <fieldset>
  111. <legend id="Tiers">Indiquez l'entité dont vous faites la promotion :</legend>
  112. <p>
  113. ${helpers.show_SummaryEntities( event.get_linked_tiers(), callback_Del_Summary )}
  114. <form action="/MesJM2L/${form.for_year.data}/${form.event_type.data.replace(' ', '_')}/link_tiers" method="POST">
  115. ${formAddT.event_uid}
  116. <input type="hidden" id="tiers" name="tiers" style="width:20em;"
  117. class="form-control select2-offscreen" tabindex="-1">
  118. </input>
  119. <button type="submit" class="btn btn-primary" />
  120. <i class="icon-plus icon-white"></i> Ajouter cette entité
  121. </button>
  122. </form>
  123. NB : Notez que les entités séléctionnées apparaissent dans les exposants.
  124. </p>
  125. </fieldset>
  126. <fieldset>
  127. <legend>Ajouter vos co-intervenants</legend>
  128. <table>
  129. <tr>
  130. <td>
  131. <p>
  132. Vous avez la possibilité d'être plusieurs pour un même évènement.<br>
  133. Chacun des intervenants doit être inscrit sur le site.
  134. <form action="/MesJM2L/${form.for_year.data}/${form.event_type.data.replace(' ', '_')}/link_user" method="POST">
  135. ${formAdd.event_uid}
  136. <input type="hidden" id="intervenant" name="intervenant" style="width:20em;"
  137. class="form-control select2-offscreen" tabindex="-1">
  138. </input>
  139. <button type="submit" class="btn btn-primary" />
  140. <i class="icon-plus icon-white"></i> Ajouter cet intervenant
  141. </button>
  142. </form>
  143. NB : Notez que les intervenants d'un même évenement ont tous les droits de modification.
  144. </p>
  145. </td>
  146. <td>
  147. <u>Les Intervenants:</u>
  148. <ul>
  149. % if len(event.intervenants)==0:
  150. <i><b>Aucun</b></i>
  151. % else:
  152. % for num, iterv in enumerate(event.intervenants):
  153. <li style="height:2em">
  154. <strong><a href="/user/${iterv.slug}">${iterv.prenom} ${iterv.nom}</a></strong>.
  155. % if iterv.pseudo:
  156. (${iterv.pseudo})
  157. %endif
  158. % if iterv!=request.user:
  159. <a class="btn btn-danger btn-mini" type="button" onclick="return confirm_click();" href="delete_link_user?uid=${iterv.uid}&eid=${event.uid}">
  160. <i class="icon-remove icon-white"></i>
  161. </a>
  162. %endif
  163. </li>
  164. % endfor
  165. % endif
  166. </ul>
  167. </td>
  168. </tr>
  169. </table>
  170. </fieldset>
  171. <div class="clearfix">&nbsp;</div>
  172. <p style="float:right;">Créé le ${event.created.strftime('%d %b %Y')}</p>
  173. %else:
  174. <p style="float:right;">Créé le
  175. ${datetime.now().strftime('%d %b %Y')}
  176. </p>
  177. % endif
  178. <br/>
  179. <hr/>
  180. </div>
  181. </div>
  182. <%def name="jsAddOn()">
  183. <script src="/vendor/select2/js/select2.js"></script>
  184. <script>
  185. jQuery(function() {
  186. $("#tiers").select2(
  187. {
  188. placeholder: 'Entrez ici votre entité',
  189. minimumInputLength: 2, allowClear: true,
  190. ajax: {
  191. quietMillis: 250, url: "/json-tiers", dataType: 'json',
  192. data: function (term, page) {
  193. return { pageSize: 8, pageNum: page, searchTerm: term };
  194. },
  195. results: function (data, page) {
  196. var more = (page * 8) < data.Total;
  197. return { results: data.Results, more: more };
  198. }
  199. }
  200. });
  201. $("#intervenant").select2(
  202. {
  203. placeholder: 'Entrez ici un Nom ou un Prénom',
  204. minimumInputLength: 2, allowClear: true,
  205. ajax: {
  206. quietMillis: 250, url: "/json-users", dataType: 'json',
  207. data: function (term, page) {
  208. return { pageSize: 8, pageNum: page, searchTerm: term };
  209. },
  210. results: function (data, page) {
  211. var more = (page * 8) < data.Total;
  212. return { results: data.Results, more: more };
  213. }
  214. }
  215. });
  216. $(document.body).on("change","#salle_uid",function(){
  217. $.ajax({
  218. url:'/salle_picture/' + this.value,
  219. success:function(result, status, jqXHR){
  220. var pictureresult = $('<div />').append(result).find('#MyPictureCarousel').html();
  221. var picturename = $('<div />').append(result).find('#CarName').html();
  222. $('#MyPictureCarousel').html(pictureresult);
  223. $('#CarName').html(picturename);
  224. },
  225. error:function(result, error){
  226. alert(error);
  227. },
  228. });
  229. });
  230. });
  231. </script>
  232. </%def>
  233. <%
  234. for jsitem in form._fields.keys():
  235. context._kwargs['postpone_js'].append( "$('#%s-help').popover();" % jsitem )
  236. if form._fields[jsitem].type=='SelectField':
  237. context._kwargs['postpone_js'].append( "$('#%s').select2({width:'resolve'});" % jsitem )
  238. if formAdd:
  239. for jsitem in formAdd._fields.keys():
  240. context._kwargs['postpone_js'].append( "$('#%s-help').popover();" % jsitem )
  241. %>