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.
 
 
 
 
 

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