Le repo des sources pour le site web des JM2L
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

199 linhas
8.3 KiB

  1. <%inherit file="jm2l:templates/layout.mako"/>
  2. <%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
  3. <%def name="cssAddOn()">
  4. <link rel="stylesheet" href="/vendor/select2/css/select2.css" type="text/css" media="screen" />
  5. <link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload.css">
  6. <link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui.css">
  7. <!-- CSS adjustments for browsers with JavaScript disabled -->
  8. <noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-noscript.css"></noscript>
  9. <noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui-noscript.css"></noscript>
  10. </%def>
  11. <a class="pull-right" href="/categorie/entity">Editer les catégories</a>
  12. <br>
  13. <form action="" method="POST">
  14. % if 'uid' in form._fields:
  15. ${form.uid}
  16. %endif
  17. <%
  18. DicForm = {
  19. 'name': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;float:left;width:35em;", "FieldStyle":"width:31em;"},
  20. 'tiers_type': {'PlaceHolder':u"Nature", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:15em;"},
  21. 'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;padding-top: 20px;", "FieldStyle":"width:90%;min-height:150px;" },
  22. 'website': {'PlaceHolder':u"Site web", 'ContainerStyle':"padding-right:15px;", 'ContainerStyle':"width:30em;"},
  23. 'membership': {'Ignore':True}
  24. }
  25. %>
  26. ${helpers.DisplayForm(form, DicForm)}
  27. % if 'uid' in form._fields:
  28. <fieldset>
  29. <legend>Acteurs</legend>
  30. <div class="repeat">
  31. <table class="wrapper" width="100%">
  32. <thead>
  33. <tr class="row">
  34. <th style="width:5em;text-align:center;">Année</th>
  35. <th>Personne</th>
  36. <th style="width:22em;">Rôle</th>
  37. <th style="width:5em;">Action</th>
  38. </tr>
  39. </thead>
  40. <tbody class="container">
  41. <tr class="row template" style="line-height:2.2em;">
  42. <td><span class="move btn btn-mini btn-info">Move</span></td>
  43. <td>
  44. <select class="form-control" style="width:5em;" name="membership-{{row-count-placeholder}}-year_uid"
  45. id="membership-{{row-count-placeholder}}-year_uid">
  46. % for year in range(2015, 2005, -1):
  47. <%
  48. if year in [2014]:
  49. continue
  50. %> \
  51. <option value="${year}">${year}</option>
  52. %endfor
  53. </select>
  54. </td>
  55. <td style="text-align: center;">
  56. <input type="hidden" style="width:20em;" class="form-control" name="membership-{{row-count-placeholder}}-user_uid"
  57. id="membership-{{row-count-placeholder}}-user_uid" />
  58. </td>
  59. <td style="text-align: center;">
  60. <select class="form-control" style="width:20em;" name="membership-{{row-count-placeholder}}-role"
  61. id="membership-{{row-count-placeholder}}-role">
  62. % for opt in UserOptions:
  63. <option value="${opt.uid}">${opt.exch_subtype}</option>
  64. % endfor
  65. </select>
  66. </td>
  67. <td>
  68. <span class="remove btn btn-mini btn-danger">
  69. <i class="icon-remove-sign icon-white"></i> Suppr.
  70. </span>
  71. </td>
  72. </tr>
  73. % for num, dicdata in enumerate(form._fields.get("membership").data):
  74. <tr class="row" style="padding:5px;line-height:2.2em;">
  75. <td><span class="move btn btn-mini btn-info">Move</span></td>
  76. <td style="text-align:center;">
  77. <input type="hidden" class="form-control" name="membership-${num}-year_uid"
  78. value="${dicdata.get('year_uid')}" style="width:4em;" />
  79. ${dicdata.get('year_uid')}
  80. </td>
  81. <td style="text-align:center;">
  82. <input type="hidden" class="form-control" name="membership-${num}-user_uid"
  83. value="${dicdata.get('user_uid')}" style="width:4em;" />
  84. <%
  85. tmpUser = DBUser.by_id(dicdata.get('user_uid'))
  86. %>
  87. % if tmpUser:
  88. ${tmpUser.prenom} ${tmpUser.nom}
  89. % endif
  90. </td>
  91. <td style="text-align:center;">
  92. <input type="hidden" class="form-control" name="membership-${num}-role"
  93. value="${dicdata.get('role')}" />
  94. <i>${dicdata.get('role', 'Aucun')}</i>
  95. </td>
  96. <td>
  97. <span class="remove btn btn-mini btn-danger">
  98. <i class="icon-remove-sign icon-white"></i> Suppr.
  99. </span>
  100. </td>
  101. </tr>
  102. % endfor
  103. </tbody>
  104. <tfoot>
  105. <tr>
  106. <td colspan="5" style="text-align:center;line-height: 3em;">
  107. <span class="add btn btn-mini btn-primary"><i class="icon-plus-sign icon-white"></i> Ajouter</span>
  108. </td>
  109. </tr>
  110. </tfoot>
  111. </table>
  112. </div>
  113. </fieldset>
  114. % endif
  115. % if 'uid' in form._fields:
  116. <button type="submit">Enregistrer</button>
  117. % else:
  118. <button type="submit">Proposer</button>
  119. % endif
  120. </form>
  121. % if 'uid' in form._fields:
  122. % if request.user:
  123. <fieldset>
  124. <legend>Support liés</legend>
  125. <div style="float:right;width:60%">
  126. <p> En plus de vos support de présentation classique.
  127. Pensez aussi aux affiches, aux flyers, aux stickers,
  128. au bulletin d'adhésion à une association, à la documentation technique...
  129. Tous ce qui peut être utile, de près ou de loin à la promotion de votre évenement.
  130. </p>
  131. </div>
  132. ${helpers.uploader("tiers", form.uid.data, u"fichiers" )}
  133. </fieldset>
  134. % else:
  135. <br>NB: Vous devez être identifié afin de proposer du contenu.
  136. % endif
  137. % else:
  138. <br>NB: Vous devez proposer votre entité avant de pouvoir
  139. téléverser des fichiers la concernant.
  140. % endif
  141. <br>
  142. <br>
  143. <br>
  144. ##% if 'uid' in form._fields:
  145. ## ${helpers.uploader_js()}
  146. ##% endif
  147. <%def name="jsAddOn()">
  148. <script src="/vendor/select2/js/select2.js"></script>
  149. <script src="/vendor/repeatable-fields/js/repeatable-fields.js"></script>
  150. <script src="/vendor/ckeditor/ckeditor.js"></script>
  151. <script type="text/javascript">
  152. var year_data = Array();
  153. ##var editor = CKEDITOR.replace('description', { autoGrow_onStartup: true, language: 'fr' } );
  154. for (var i=2005;i<2015;i++)
  155. { year_data[i.toString()] = i.toString(); };
  156. $("#tiers_type").select2({});
  157. function show_editor() {
  158. if (editor) {
  159. editor.destroy();
  160. editor=null;
  161. } else
  162. editor = CKEDITOR.replace('description');
  163. }
  164. jQuery(function() {
  165. jQuery('.repeat').each(function() {
  166. jQuery(this).repeatable_fields(
  167. {
  168. is_ready: function(container, therow) {
  169. var numrow=$(container).attr('data-rf-row-count');
  170. $("#membership-"+ (numrow-1) +"-user_uid").select2(
  171. {
  172. placeholder: 'Entrez ici un Nom ou un Prénom',
  173. minimumInputLength: 2, allowClear: true,
  174. ajax: {
  175. quietMillis: 250, url: "/json-users", dataType: 'json',
  176. data: function (term, page) {
  177. return { pageSize: 8, pageNum: page, searchTerm: term };
  178. },
  179. results: function (data, page) {
  180. var more = (page * 8) < data.Total;
  181. return { results: data.Results, more: more };
  182. }
  183. }
  184. });
  185. $("#membership-"+ (numrow-1) +"-year_uid").select2({});
  186. $("#membership-"+ (numrow-1) +"-role").select2({});
  187. }
  188. });
  189. });
  190. });
  191. </script>
  192. </%def>