Le repo des sources pour le site web des JM2L
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 

259 lignes
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. %>