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.
 
 
 
 
 

228 lignes
9.5 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:10em;">Action</th>
  40. </tr>
  41. </thead>
  42. <tbody class="container">
  43. <tr class="row template" style="line-height:2.2em;">
  44. <td>
  45. <select class="form-control" style="width:5em;" name="membership-{{row-count-placeholder}}-year_uid"
  46. id="membership-{{row-count-placeholder}}-year_uid">
  47. % for year in range(2015, 2005, -1):
  48. <%
  49. if year in [2014]:
  50. continue
  51. %> \
  52. <option value="${year}">${year}</option>
  53. %endfor
  54. </select>
  55. </td>
  56. <td style="text-align: center;">
  57. <input type="hidden" style="width:20em;" class="form-control" name="membership-{{row-count-placeholder}}-user_uid"
  58. id="membership-{{row-count-placeholder}}-user_uid" />
  59. </td>
  60. <td style="text-align: center;">
  61. <input type="hidden" class="form-control" name="membership-{{row-count-placeholder}}-role" />
  62. </td>
  63. <td>
  64. <span class="remove btn btn-mini btn-danger">
  65. <i class="icon-remove-sign icon-white"></i> Suppr.
  66. </span>
  67. </td>
  68. </tr>
  69. % for num, dicdata in enumerate(form._fields.get("membership").data):
  70. <tr class="row" style="padding:5px;line-height:2.2em;">
  71. <td style="text-align:center;">
  72. <input type="hidden" class="form-control" name="membership-${num}-year_uid"
  73. id="membership-${num}-year_uid"
  74. value="${dicdata.get('year_uid')}" style="width:4em;" />
  75. <div id="content-${num}-year_uid">${dicdata.get('year_uid')}</div>
  76. </td>
  77. <td style="text-align:center;">
  78. <input type="hidden" class="form-control" name="membership-${num}-user_uid"
  79. id="membership-${num}-user_uid" value="${dicdata.get('user_uid')}" style="width:4em;" />
  80. <%
  81. tmpUser = DBUser.by_id(dicdata.get('user_uid'))
  82. %>
  83. % if tmpUser:
  84. <div id="content-${num}-user_uid">${tmpUser.prenom} ${tmpUser.nom}</div>
  85. % endif
  86. </td>
  87. <td style="text-align:center;">
  88. <input type="text" class="form-control" name="membership-${num}-role" style="display:none"
  89. id="membership-${num}-role"
  90. value="${dicdata.get('role', 'Aucun')}" />
  91. <div id="content-${num}-role"><i>${dicdata.get('role', 'Aucun')}</i></div>
  92. </td>
  93. <td>
  94. <a class="btn btn-mini btn-primary" href="javascript:edit(${num})">
  95. <i class="icon-pencil icon-white"></i> Edit.
  96. </a>
  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 class="btn btn-primary" type="submit">Enregistrer</button>
  117. % else:
  118. <button class="btn btn-primary" 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. </div>
  142. </div>
  143. <%def name="jsAddOn()">
  144. <script src="/vendor/select2/js/select2.js"></script>
  145. <script src="/vendor/repeatable-fields/js/repeatable-fields.js"></script>
  146. <script src="/vendor/ckeditor/ckeditor.js"></script>
  147. <script type="text/javascript">
  148. var year_data = Array();
  149. var editor = CKEDITOR.replace('description', { autoGrow_onStartup: true, language: 'fr' } );
  150. for (var i=2005;i<2015;i++)
  151. year_data.push( {id:i, text:i.toString()});
  152. $("#tiers_type").select2({});
  153. function show_editor() {
  154. if (editor) {
  155. editor.destroy();
  156. editor=null;
  157. } else
  158. editor = CKEDITOR.replace('description');
  159. }
  160. jQuery(function() {
  161. jQuery('.repeat').each(function() {
  162. jQuery(this).repeatable_fields(
  163. {
  164. is_ready: function(container, therow) {
  165. var numrow=$(container).attr('data-rf-row-count');
  166. $("#membership-"+ (numrow-1) +"-user_uid").select2(
  167. {
  168. placeholder: 'Entrez ici un Nom ou un Prénom',
  169. minimumInputLength: 2, allowClear: true,
  170. ajax: {
  171. quietMillis: 250, url: "/json-users", dataType: 'json',
  172. data: function (term, page) {
  173. return { pageSize: 8, pageNum: page, searchTerm: term };
  174. },
  175. results: function (data, page) {
  176. var more = (page * 8) < data.Total;
  177. return { results: data.Results, more: more };
  178. }
  179. }
  180. });
  181. $("#membership-"+ (numrow-1) +"-year_uid").select2({});
  182. }
  183. });
  184. });
  185. });
  186. function edit(num) {
  187. $("#content-"+ num +"-year_uid").hide();
  188. $("#membership-"+ num +"-year_uid").select2({
  189. width:'80px',
  190. data: year_data
  191. });
  192. $('select').select2();
  193. $("#content-"+ num +"-user_uid").hide();
  194. $("#membership-"+ num +"-user_uid").select2(
  195. {
  196. width:'250px',
  197. placeholder: 'Entrez ici un Nom ou un Prénom',
  198. minimumInputLength: 2, allowClear: true,
  199. initSelection: function(element, callback){
  200. callback({id: element.val(), text: $("#content-"+ num +"-user_uid").text() })
  201. },
  202. ajax: {
  203. quietMillis: 250, url: "/json-users", dataType: 'json',
  204. data: function (term, page) {
  205. return { pageSize: 8, pageNum: page, searchTerm: term };
  206. },
  207. results: function (data, page) {
  208. var more = (page * 8) < data.Total;
  209. return { results: data.Results, more: more };
  210. }
  211. }
  212. });
  213. $("#content-"+ num +"-role").hide();
  214. $("#membership-"+ num +"-role").show();
  215. };
  216. </script>
  217. </%def>