Le repo des sources pour le site web des JM2L
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

228 lines
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>