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.
 
 
 
 
 

269 lignes
11 KiB

  1. <%namespace name="Dialog" file="jm2l:templates/Logistique/Dialog.mako"/> \
  2. <%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
  3. ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4. <%def name="ModalAddPlace(form, update)">
  5. <div>
  6. <div class="modal-header">
  7. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  8. % if update:
  9. <h3>Mettre à jour un lieu</h3>
  10. % else:
  11. <h3>Ajouter un lieu</h3>
  12. % endif
  13. </div>
  14. <div class="modal-body">
  15. <div class="tabbable" id="place_tab">
  16. <ul class="nav nav-tabs">
  17. <li class="active"><a href="#Place_Address" id="Map_Address" data-toggle="tab">Adresse</a></li>
  18. <li><a href="#Place_Info" id="Map_Info" data-toggle="tab">Informations</a></li>
  19. % if update:
  20. <li><a href="#Place_Photo" id="Map_Photo" data-toggle="tab">Photographies</a></li>
  21. % endif
  22. <li><a href="#Place_Plan" id="Map_Plan" data-toggle="tab">Plan</a></li>
  23. </ul>
  24. ${form.csrf_token}
  25. <div class="tab-content">
  26. <div class="tab-pane fade active in" id="Place_Address">
  27. % if update:
  28. <form id="ModalPlaceForm" action="javascript:DoPostLieu('/${CurrentYear}/modal/Place/${form.place_id.data}');" style='margin:0;'>
  29. ${form.place_id()}
  30. ${form.csrf_token}
  31. % else:
  32. <form id="ModalPlaceForm" action="javascript:DoPostLieu('/${CurrentYear}/modal/Place/0');" style='margin:0;'>
  33. ${form.csrf_token}
  34. % endif
  35. <div style="float:left;padding-right:5px;">
  36. % for error in form.place_type.errors:
  37. <div class="error">${ error }</div>
  38. % endfor
  39. <label>${form.place_type.label}</label>${form.place_type(style='width:8em')}</div>
  40. <div style="float:left;padding-right:5px;">
  41. % for error in form.display_name.errors:
  42. <div class="error">${ error }</div>
  43. % endfor
  44. <label>${form.display_name.label}</label>${form.display_name(style='width:10em')}</div>
  45. <div>
  46. % for error in form.name.errors:
  47. <div class="error">${ error }</div>
  48. % endfor
  49. <label>${form.name.label}</label>${form.name(style='width:16em')}</div>
  50. <div>
  51. % for error in form.adresse.errors:
  52. <div class="error">${ error }</div>
  53. % endfor
  54. <label>${form.adresse.label}</label>${form.adresse(style='width:95%;height:3em;')}</div>
  55. <div style="float:left;padding-right:5px;">
  56. % for error in form.codePostal.errors:
  57. <div class="error">${ error }</div>
  58. % endfor
  59. <label>${form.codePostal.label}</label>${form.codePostal(style='width:5em')}</div>
  60. <div style="float:left;padding-right:5px;">
  61. % for error in form.ville.errors:
  62. <div class="error">${ error }</div>
  63. % endfor
  64. <label>${form.ville.label}</label>${form.ville(style='width:12em')}</div>
  65. <div>
  66. % for error in form.gps_coord.errors:
  67. <div class="error">${ error }</div>
  68. % endfor
  69. <label>${form.gps_coord.label}</label>${form.gps_coord(style='width:12em')}</div>
  70. </form>
  71. </div>
  72. <div class="tab-pane fade in" id="Place_Info">
  73. <div>
  74. % for error in form.website.errors:
  75. <div class="error">${ error }</div>
  76. % endfor
  77. <label>${form.website.label}</label>${form.website(style='width:95%;')}</div>
  78. <div>
  79. % for error in form.description.errors:
  80. <div class="error">${ error }</div>
  81. % endfor
  82. <label>${form.description.label}</label>${form.description(style='width:95%;height:10em;')}</div>
  83. </div>
  84. <div class="tab-pane fade in" id="Place_Plan">
  85. %if form.gps_coord.data:
  86. <div id="map"></div>
  87. <script type="text/javascript">
  88. var map = L.map('map');
  89. // create the tile layer with correct attribution
  90. var osmUrl='//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
  91. var osmAttrib='Map data © <a href="//openstreetmap.org">OpenStreetMap</a> contributors';
  92. var osm = new L.TileLayer(osmUrl, {minZoom: 8, maxZoom: 18, attribution: osmAttrib});
  93. // start the map on specified GPS Coords
  94. map.setView(new L.LatLng(${form.gps_coord.data}),15);
  95. marker = L.marker([${form.gps_coord.data}]).addTo(map);
  96. map.addLayer(osm);
  97. </script>
  98. %else:
  99. <div class="alert">
  100. <button type="button" class="close" data-dismiss="alert">&times;</button>
  101. <strong>Non disponible!</strong> Vous devez d'abord compl&eacute;ter le champ GPS pour activer cette fonctionnalit&eacute;.
  102. </div>
  103. %endif
  104. </div>
  105. % if update:
  106. <div class="tab-pane fade in" id="Place_Photo">
  107. ${helpers.uploader("place", form.place_id.data, "une Photo")}
  108. <div style="clear:both"></div>
  109. </div>
  110. % endif
  111. </div>
  112. </div>
  113. ##${helpers.uploader_js()}
  114. <script>
  115. $("#place_type").select2({});
  116. </script>
  117. </div>
  118. <div class="modal-footer">
  119. <button class="btn" data-dismiss="modal" aria-hidden="true">Annuler</button>
  120. ##<button class="btn btn-warning" data-loading-text="Suppression...">Supprimer l'image</button>
  121. <button class="btn btn-primary" onclick="javascript:document.forms['ModalPlaceForm'].submit();">Enregistrer les modifications</button>
  122. </div>
  123. </div>
  124. </%def> \
  125. ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  126. <%def name="ModalPictureChange(uid, DisplayYear, session)">
  127. <div>
  128. <div class="modal-header">
  129. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  130. <h3 id="myModalPictureChangeLabel">Mon portrait</h3>
  131. </div>
  132. <div class="modal-body">
  133. <div>
  134. <i class="icon-question-sign"></i>
  135. Les images de taille sup&eacute;rieure à 300x300 pixels seront redimensionn&eacute;s.
  136. </div>
  137. ${helpers.uploader("users", uid, "une Photo")}
  138. </div>
  139. <div class="modal-footer">
  140. <button class="btn" data-dismiss="modal" aria-hidden="true">Annuler</button>
  141. <button class="btn btn-primary" onclick="javascript:DoPost('/${CurrentYear}/modal/UserPicture/${uid}');">Enregistrer les modifications</button>
  142. </div>
  143. </div>
  144. </%def> \
  145. ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  146. <%def name="ModalPassword(uid, DisplayYear, session)"> \
  147. <div>
  148. <div class="modal-header">
  149. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  150. <h3>Changer mon mot de passe</h3>
  151. </div>
  152. <div class="modal-body">
  153. <form id="ModalForm" action="javascript:DoPost('/${CurrentYear}/modal/Password/${uid}');" style='margin:0;'>
  154. <div class="description">Votre identifiant est <b>${request.user.slug}</b>
  155. <div class="description">Pour modifier le mot de passe actuel,
  156. entrez un nouveau mot de passe dans chacune des deux zones de texte.
  157. </div>
  158. ${ helpers.DisplayForm(form, {}) }
  159. <div id="pswd_info" style="display: block;">
  160. Pour renforcer la s&eacute;curit&eacute; de votre mot de passe :
  161. <ul>
  162. <li id="length" class="invalid">Saisissez au moins 6 caractères</li>
  163. <li id="ltrMin" class="invalid">Ajoutez des lettres minuscules</li>
  164. <li id="ltrMaj" class="invalid">Ajoutez des lettres majuscules</li>
  165. <li id="number" class="invalid">Ajoutez des chiffres</li>
  166. <li id="ponctu" class="invalid">Ajoutez des caractères de ponctuation</li>
  167. </ul>
  168. </div>
  169. </form>
  170. <script>
  171. $('input[type=password]').keyup(function() {
  172. // set password variable
  173. var pswd = $(this).val();
  174. if ( pswd.length < 6 ) {
  175. $('#length').removeClass('valid').addClass('invalid');
  176. } else {
  177. $('#length').removeClass('invalid').addClass('valid');
  178. }
  179. //validate min letter
  180. if ( pswd.match(/[a-z]/) ) {
  181. $('#ltrMin').removeClass('invalid').addClass('valid');
  182. } else {
  183. $('#ltrMin').removeClass('valid').addClass('invalid');
  184. }
  185. //validate capital letter
  186. if ( pswd.match(/[A-Z]/) ) {
  187. $('#ltrMaj').removeClass('invalid').addClass('valid');
  188. } else {
  189. $('#ltrMaj').removeClass('valid').addClass('invalid');
  190. }
  191. //validate number
  192. if ( pswd.match(/\d/) ) {
  193. $('#number').removeClass('invalid').addClass('valid');
  194. } else {
  195. $('#number').removeClass('valid').addClass('invalid');
  196. }
  197. //validate Ponct
  198. var patren=/^[A-Za-z0-9\s]+$/;
  199. if ( !(patren.test(pswd)) && pswd.length>0 ) {
  200. $('#ponctu').removeClass('invalid').addClass('valid');
  201. } else {
  202. $('#ponctu').removeClass('valid').addClass('invalid');
  203. }
  204. });
  205. </script>
  206. </div>
  207. <div class="modal-footer">
  208. <button class="btn" data-dismiss="modal" aria-hidden="true">Annuler</button>
  209. <button class="btn btn-primary" onclick="javascript:document.forms['ModalForm'].submit();">Changer</button>
  210. </div>
  211. </div>
  212. </%def> \
  213. ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  214. <%
  215. context._kwargs['postpone_js']=[]
  216. %>
  217. %if modtype=='Password':
  218. ${ModalPassword(uid, DisplayYear, session)}
  219. %elif modtype=='Place':
  220. ${ModalAddPlace(form, update)}
  221. %elif modtype=='UserPicture':
  222. ${ModalPictureChange(uid, DisplayYear, session)}
  223. %elif modtype=='PropH':
  224. ${Dialog.AddProposal('H', form)}
  225. %elif modtype=='AskH':
  226. ${Dialog.AddAsk('H', form)}
  227. %elif modtype=='PropC':
  228. ${Dialog.AddProposal('C', form)}
  229. %elif modtype=='AskC':
  230. ${Dialog.AddAsk('C', form)}
  231. %elif modtype=='PropM':
  232. ${Dialog.AddProposal('M', form)}
  233. %elif modtype=='AskM':
  234. ${Dialog.AddAsk('M', form)}
  235. %elif modtype=='ShowC':
  236. ${Dialog.Show('C',Exch)}
  237. %elif modtype=='ShowM':
  238. ${Dialog.Show('M',Exch)}
  239. %elif modtype=='ShowH':
  240. ${Dialog.Show('H',Exch)}
  241. %endif
  242. ## Then Handle Javascript
  243. <script>
  244. % for jsitem in context._kwargs['postpone_js']:
  245. ${jsitem | n}
  246. % endfor
  247. HandleControls();
  248. </script>