PageRenderTime 56ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/main/templates/show.html

https://github.com/zoulema/formhub
HTML | 661 lines | 632 code | 27 blank | 2 comment | 0 complexity | 47fe9cd90b0ecef3402e2cc2cd032613 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. {% extends 'base.html' %}
  2. {% load humanize %}
  3. {% block content %}
  4. {% load i18n %}
  5. <section id="profile">
  6. <div class="page-header">
  7. <!-- <img src='{{ content_user.profile.gravatar }}' alt='gravatar' width='40' height='40' style='float:left; padding-right:10px;' /> -->
  8. <div id="mfeedback">&nbsp;</div>
  9. <h3>
  10. <div style='vertical-align: middle'>
  11. <img src='{{ content_user.profile.gravatar }}' alt='gravatar' width='20' height='20' />
  12. <a href="{% url "user_profile" content_user.username %}">{{ content_user.username }}</a> ({% trans "Owner" %}) /
  13. </div>
  14. </h3>
  15. <div class="clearfix">
  16. <div class="input">
  17. <form>
  18. {% csrf_token %}
  19. <input type="text" id="title"class="input-xxlarge present header" disabled="" rows="3" value="{{ xform.title }}" />
  20. {% if can_edit %}
  21. <a id="title_edit" data-id="title" href="" class="btn small bind-edit">{% trans "edit" %}</a>
  22. <a id="title_save" data-id="title" style="display:none" href="" class="btn small btn-primary bind-save" data-url="{% url "main.views.edit" content_user.username xform.id_string %}">{% trans "save" %}</a>
  23. {% endif %}
  24. </form>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="row">
  29. <div class="span8">
  30. {% if can_edit %}
  31. <h4>{% trans "Form ID:" %} {{ xform.id_string }}</h4>
  32. {% endif %}
  33. <h3>{% trans "Description" %}</h3>
  34. <div class="clearfix">
  35. <div class="input">
  36. <form>
  37. {% csrf_token %}
  38. <textarea id="description" class="input-xxlarge present" disabled="" rows="3" name="textarea">{% if xform.description %}{{ xform.description }}{% else %}{% trans "None" %}{% endif %}</textarea>
  39. {% if can_edit %}
  40. <a id="description_edit" data-id="description" href="" class="btn small bind-edit">{% trans "edit" %}</a>
  41. <a id="description_save" data-id="description" style="display:none" href="" class="btn small btn-primary bind-save" data-url="{% url "main.views.edit" content_user.username xform.id_string %}">{% trans "save" %}</a>
  42. {% endif %}
  43. </form>
  44. </div>
  45. </div>
  46. <div class="bordered">
  47. <h3>
  48. {% trans "XLSForm" %}
  49. <span id="form-shared-public" class="label label-info">{% trans "PUBLIC" %}</span>
  50. <span id="form-shared-private" class="label label-warning">{% trans "PRIVATE" %}</span>
  51. <span id="form-encrypted" class="label label-important icon-lock label-encrypted">&nbsp;&nbsp;{% trans "ENCRYPTED" %}</span>
  52. </h3>
  53. <br/>
  54. <div class="btn-toolbar" style="margin-bottom: 9px">
  55. <div class="btn-group">
  56. <a class="btn btn-success" href="{% url "download_xlsform" content_user.username xform.id_string %}"><i class="icon-th icon-white"></i><font color=#FFF> {% trans "XLSForm" %}</font></a>
  57. <button class="btn dropdown-toggle btn-success" data-toggle="dropdown">
  58. <span class="caret"></span>
  59. </button>
  60. <ul class="dropdown-menu">
  61. <li>
  62. <input class="input-xxlarge" type="text" size="16" value="{{ base_url }}{% url "download_xlsform" content_user.username xform.id_string %}"/>
  63. </li>
  64. </ul>
  65. </div>
  66. <div class="btn-group">
  67. <a class="btn" href="{% url "download_xform" content_user.username xform.id_string %}"><i class="icon-file"></i><font color=#000> {% trans "XForm" %}</font></a>
  68. <button class="btn dropdown-toggle" data-toggle="dropdown">
  69. <span class="caret"></span>
  70. </button>
  71. <ul class="dropdown-menu">
  72. <li>
  73. <input class="input-xxlarge" type="text" size="16" value="{{ base_url }}{% url "download_xform" content_user.username xform.id_string %}"/>
  74. </li>
  75. </ul>
  76. </div>
  77. <div class="btn-group">
  78. <a class="btn" href="{% url "download_jsonform" content_user.username xform.id_string %}"><i class="icon-file"></i><font color=#000> {% trans "JSONForm" %}</font></a>
  79. <button class="btn dropdown-toggle" data-toggle="dropdown">
  80. <span class="caret"></span>
  81. </button>
  82. <ul class="dropdown-menu">
  83. <li>
  84. <input class="input-xxlarge" type="text" size="16" value="{{ base_url }}{% url "download_jsonform" content_user.username xform.id_string %}"/>
  85. </li>
  86. </ul>
  87. </div>
  88. </div>
  89. <br>
  90. </ul>
  91. <p>
  92. {% trans "License" %}:
  93. {% if can_edit %}
  94. {% for field in form_license_form %}
  95. {{ field }}
  96. {% endfor %}
  97. <a id="form-license_edit" data-id="form-license" href="" class="btn btn-small bind-edit">{% trans "edit" %}</a>
  98. <a id="form-license_save" data-id="form-license" style="display:none" href="" class="btn btn-small btn-primary bind-save" data-url="{% url "main.views.edit" content_user.username xform.id_string %}">{% trans "save" %}</a>
  99. {% else %}
  100. {{ form_license|default:'No license' }}
  101. {% endif %}
  102. </p>
  103. <p><a id="form-license_info" style="display:none" href="">{% trans "License information" %}</a></p>
  104. <br/>
  105. <ul class="inline">
  106. {% if user.is_authenticated and content_user.username != user.username and xform.xls|length > 0 and not cloned %}
  107. <br/><br/>
  108. <li>
  109. <a href="" data-url="{% url "main.views.clone_xlsform" xform.user.username %}" data-username="{{ xform.user.username }}" data-id="{{ xform.id_string }}" class="clonexls btn small">{% trans "Clone" %}</a>
  110. </li>
  111. {% endif %}
  112. </ul>
  113. </div>
  114. <br/>
  115. <div class="clearfix bordered">
  116. <h3>
  117. {% trans "Form Data" %}
  118. <span id="data-shared-public" class="label label-info">{% trans "PUBLIC" %}</span>
  119. <span id="data-shared-private" class="label label-warning">{% trans "PRIVATE" %}</span>
  120. <span id="data-encrypted" class="label label-important icon-lock label-encrypted">&nbsp;&nbsp;{% trans "ENCRYPTED" %}</span>
  121. </h3>
  122. {% if xform.shared_data or can_view %}
  123. {% if not xform.encrypted and xform.submission_count > 0 %}
  124. <br>
  125. <div class="btn-toolbar" style="margin-bottom: 9px">
  126. <div class="btn-group">
  127. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'csv' %}" rel="tooltip" data-original-title="{% trans 'csv exports' %}"><i class="icon-download-alt"></i> <font color=#000>{% trans "csv" %}</font></a>
  128. <button class="btn dropdown-toggle" data-toggle="dropdown">
  129. <span class="caret"></span>
  130. </button>
  131. <ul class="dropdown-menu">
  132. <li>
  133. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'csv' %}"/>
  134. </li>
  135. </ul>
  136. </div>
  137. <div class="btn-group">
  138. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'csv_zip' %}" rel="tooltip" data-original-title="{% trans 'csv zip exports' %}"><i class="icon-download-alt"></i> <font color=#000>{% trans "csv zip" %}</font></a>
  139. <button class="btn dropdown-toggle" data-toggle="dropdown">
  140. <span class="caret"></span>
  141. </button>
  142. <ul class="dropdown-menu">
  143. <li>
  144. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'csv_zip' %}"/>
  145. </li>
  146. </ul>
  147. </div>
  148. <div class="btn-group">
  149. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'xls' %}" rel="tooltip" data-original-title="{% trans 'xls exports' %}"><i class="icon-download-alt"></i> <font color=#000>{% trans "xls" %}</font></a>
  150. <button class="btn dropdown-toggle" data-toggle="dropdown">
  151. <span class="caret"></span>
  152. </button>
  153. <ul class="dropdown-menu">
  154. <li>
  155. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'xls' %}"/>
  156. </li>
  157. </ul>
  158. </div>
  159. <div class="btn-group">
  160. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'kml'%}" rel="tooltip" data-original-title="{% trans 'Export to kml File (Google Earth)' %}"><i class="icon-download-alt"></i> <font color=#000>{% trans "kml" %}</font></a>
  161. <button class="btn dropdown-toggle" data-toggle="dropdown">
  162. <span class="caret"></span>
  163. </button>
  164. <ul class="dropdown-menu">
  165. <li>
  166. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'kml' %}"/>
  167. </li>
  168. </ul>
  169. </div>
  170. <div class="btn-group">
  171. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'zip' %}" rel="tooltip" data-original-title="{% trans 'Export a zip folder of attachments' %}"><i class="icon-download-alt"></i> <font color=#000>{% trans "zip" %}</font></a>
  172. <button class="btn dropdown-toggle" data-toggle="dropdown">
  173. <span class="caret"></span>
  174. </button>
  175. <ul class="dropdown-menu">
  176. <li>
  177. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'zip' %}"/>
  178. </li>
  179. </ul>
  180. </div>
  181. <div class="btn-group">
  182. <a class="btn" href="{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'gdoc' %}" rel="tooltip" data-original-title="{% trans 'Export to google docs' %}" target="_blank"><i class="icon-download-alt"></i> <font color=#000>{% trans "gdocs" %}</font></a>
  183. <button class="btn dropdown-toggle" data-toggle="dropdown">
  184. <span class="caret"></span>
  185. </button>
  186. <ul class="dropdown-menu">
  187. <li>
  188. <input class="input-xxlarge" type="text" size="16" value="{{base_url}}{% url "odk_viewer.views.export_list" content_user.username xform.id_string 'gdoc' %}"/>
  189. </li>
  190. </ul>
  191. </div>
  192. </div>
  193. <h4>{% trans "Submissions:" %} {{ xform.submission_count|intcomma }}</h4>
  194. <br>
  195. <p>
  196. {% trans "License:" %}
  197. {% if can_edit %}
  198. {% for field in data_license_form %}
  199. {{ field }}
  200. {% endfor %}
  201. <a id="data-license_edit" data-id="data-license" href="" class="btn btn-small bind-edit">{% trans "edit" %}</a>
  202. <a id="data-license_save" data-id="data-license" style="display:none" href="" class="btn btn-small btn-primary bind-save" data-url="{% url "main.views.edit" content_user.username xform.id_string %}">{% trans "save" %}</a>
  203. {% else %}
  204. {{ data_license|default:'No license' }}
  205. {% endif %}
  206. </p>
  207. <p><a id="data-license_info" style="display:none" href="">{% trans "License information" %}</a></p>
  208. <div class="btn-group" style="margin-bottom: 9px">
  209. {% if xform.has_surveys_with_geopoints %}
  210. <a class="btn btn-info" rel="tooltip" title="{% trans 'View Map' %}" href="{% url "odk_viewer.views.map_view" content_user.username xform.id_string %}">
  211. <i class="icon-map-marker icon-white"></i> {% trans "Map" %}
  212. </a>
  213. {% endif %}
  214. <a class="btn btn-info" btn-info rel="tooltip" title="{% trans "View Photos" %}" href="{% url "main.views.form_photos" content_user.username xform.id_string %}">
  215. <i class="icon-camera icon-white"></i> {% trans "Photos" %}
  216. </a>
  217. <a class="btn btn-info" btn-info rel="tooltip" title="{% trans "View Submitted Data" %}" href="{% url "odk_viewer.views.data_view" content_user.username xform.id_string %}">
  218. <i class="icon-th-list icon-white"></i> {% trans "View Data" %}
  219. </a>
  220. <a class="btn btn-info" btn-info rel="tooltip" title="{% trans "Browse Data (One by One)" %}" href="{% url "odk_viewer.views.instance" content_user.username xform.id_string %}">
  221. <i class="icon-list-alt icon-white"></i> {% trans "Browse Data" %}
  222. </a>
  223. </div>
  224. {% else %}
  225. {% if can_edit %}
  226. {% else %}
  227. <span class="label label-warning">{% trans "NO DATA" %}</span>
  228. {% endif %}
  229. {% endif %}
  230. {% endif %}
  231. <div class="btn-toolbar" style="margin-bottom: 9px">
  232. <span><!-- break the .btn-group + .btn-group rule that shows a margin before this group --></span>
  233. <div class="btn-group" style="margin-bottom: 9px">
  234. {% if can_edit or xform.is_crowd_form %}
  235. <a class="btn btn-info" rel="tooltip" title="{% trans 'Webform' %}"
  236. href="{% url "odk_logger.views.enter_data" content_user.username xform.id_string %}">
  237. <i class="icon-edit icon-white"></i> {% trans "Enter Web Form" %}
  238. </a>
  239. <a data-toggle="modal" data-target="#popupmodal" class="showqr btn btn-info" href="{% url "get_qrcode" xform.user.username xform.id_string %}"><i class="icon-tablet"></i> {% trans "Mobile" %}</a>
  240. {% endif %}
  241. {% if can_edit or xform.is_crowd_form or xform.shared %}
  242. <a class="btn btn-info" rel="tooltip" title="{% trans 'Preview Form' %}" href="#preview-modal"
  243. data-toggle="modal">
  244. <i class="icon-check icon-white"></i> {% trans "Preview Form" %}
  245. </a>
  246. {% endif %}
  247. </div>
  248. {% if can_edit or xform.is_crowd_form or xform.shared %}
  249. <div id="preview-modal" class="modal hide fade">
  250. <div class="modal-header">
  251. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  252. <h3>{{ xform.title }} - {% trans "Preview" %}</h3>
  253. </div>
  254. <div class="modal-body">
  255. <iframe src="{% url "main.views.enketo_preview" content_user.username xform.id_string %}"></iframe>
  256. </div>
  257. <div class="modal-footer"></div>
  258. </div>
  259. {% endif %}
  260. </div>
  261. <br>
  262. <div class="span4">
  263. </div>
  264. </div>
  265. <br/>
  266. <div class="clearfix bordered">
  267. <h3 data-toggle="collapse" class="toggler" data-target="#source_tab">{% trans "Source" %}</h3>
  268. <div id='source_tab' class="collapse">
  269. <form action="{% url "main.views.edit" content_user.username xform.id_string %}" method="post" enctype="multipart/form-data">
  270. {% if source.data_file %}
  271. <p><a href="{% url "main.views.download_metadata" content_user.username xform.id_string source.id %}">{{ source.data_file.name }}</p></a>
  272. {% endif %}
  273. {% csrf_token %}
  274. <input type="text" id="source" class="input-xxlarge present" disabled="" rows="3" value="{{ source.data_value|default:"None provided" }}" />
  275. {% if can_edit %}
  276. <a id="source_edit" data-id="source" href="" class="btn small bind-edit">{% trans "edit" %}</a>
  277. <a id="source_save" data-id="source" style="display:none" href="" class="btn small btn-primary bind-save" data-url="{% url "main.views.edit" content_user.username xform.id_string %}">{% trans "save" %}</a>
  278. {% endif %}
  279. {% if can_edit %}
  280. {% csrf_token %}
  281. <table>
  282. {{ source_form.as_table }}
  283. </table>
  284. <input type="submit" class="btn" value="{% trans 'Upload' %}" />
  285. {% endif %}
  286. </form>
  287. </div>
  288. </div>
  289. <br/>
  290. <div class="clearfix bordered">
  291. <h3 data-toggle="collapse" class="toggler" data-target="#docs_tab">{% trans "Supporting Documents" %}</h3>
  292. <div id='docs_tab' class="collapse">
  293. {% for doc in supporting_docs %}
  294. <p><a href="{% url "main.views.download_metadata" content_user.username xform.id_string doc.id %}">{{ doc.data_value }}</a>
  295. {% if can_edit %}
  296. || <a href="{% url "main.views.delete_metadata" content_user.username xform.id_string doc.id %}?del=true"> {% trans "remove" %} </a>
  297. {% endif %}
  298. </p>
  299. {% endfor %}
  300. {% if can_edit %}
  301. <form action="{% url "main.views.edit" content_user.username xform.id_string %}" method="post" enctype="multipart/form-data">
  302. {% csrf_token %}
  303. <table>
  304. {{ doc_form.as_table }}
  305. </table>
  306. <input type="submit" class="btn" value="{% trans 'Upload' %}" />
  307. </form>
  308. {% endif %}
  309. </div>
  310. </div>
  311. {% if is_owner %}
  312. <br/>
  313. <div class="clearfix bordered">
  314. <h3 data-toggle="collapse" class="toggler" data-target="#restservice_tab">{% trans "Rest Services" %}</h3>
  315. <div id='restservice_tab' class="collapse">
  316. </div>
  317. </div>
  318. {% endif %}
  319. <br/>
  320. <div class="clearfix bordered">
  321. <h3 data-toggle="collapse" class="toggler" data-target="#media_tab">{% blocktrans %}Media &nbsp;<small>jpeg/png/mp3/wav/3gp allowed</small>{% endblocktrans %}</h3>
  322. <div id='media_tab' class="collapse">
  323. {% for media in media_upload %}
  324. <p><a href="{% url "main.views.download_media_data" content_user.username xform.id_string media.id %}">{{ media.data_value }}</a>
  325. {% if can_edit %}
  326. &ndash;<a href="{% url "main.views.download_media_data" content_user.username xform.id_string media.id %}?del=true"> {% trans "remove" %} </a>
  327. {% endif %}
  328. </p>
  329. {% endfor %}
  330. {% if can_edit %}
  331. <form action="{% url "main.views.edit" content_user.username xform.id_string %}" method="post" enctype="multipart/form-data">
  332. {% csrf_token %}
  333. <table>
  334. <tbody><tr><th><label for="id_media">Media upload:</label></th><td><input type="file" multiple="" name="media" id="id_media"></td></tr>
  335. </tbody>
  336. </table>
  337. <input type="submit" class="btn" value="{% trans 'Upload' %}" />
  338. </form>
  339. {% endif %}
  340. </div>
  341. </div>
  342. <br/>
  343. <div class="clearfix bordered">
  344. <h3 data-toggle="collapse" class="toggler" data-target="#map_tab">{% trans "Mapbox Layer" %}</h3>
  345. <div id='map_tab' class="collapse">
  346. {% if mapbox_layer %}
  347. <p><a href="{{ mapbox_layer.link }}" target="_blank">{{ mapbox_layer.map_name }}</a> &ndash;
  348. {% trans "Attribution:" %} {{ mapbox_layer.attribution }}
  349. {% if can_edit %}
  350. &ndash;<a href="{% url "main.views.delete_metadata" content_user.username xform.id_string mapbox_layer.id %}?map_name_del=true"> {% trans "remove" %} </a></p>
  351. {% endif %}
  352. {% endif %}
  353. {% if can_edit %}
  354. <form action="{% url "main.views.edit" content_user.username xform.id_string %}" method="post">
  355. {% csrf_token %}
  356. <table>
  357. {{ mapbox_layer_form.as_table }}
  358. </table>
  359. <input type="submit" class="btn" value="{% trans 'Upload' %}" />
  360. </form>
  361. {% endif %}
  362. </div>
  363. </div>
  364. <br/>
  365. <div class="clearfix bordered">
  366. <h3 data-toggle="collapse" class="toggler" data-target="#sms_tab">{% trans "SMS Support" %} (<acronym title="SMS Support is in beta stage now. Please use carefully as API and IDs might change.">beta</acronym>)</h3>
  367. <div id='sms_tab' class="collapse">
  368. <form action="{% url "main.views.edit" content_user.username xform.id_string %}" method="post" enctype="multipart/form-data">
  369. {% if xform.allows_sms %}
  370. <p>{% blocktrans %}This form has enabled SMS submissions.{% endblocktrans %} {% blocktrans with id_string=xform.sms_id_string %}Submit to this form using the <em>{{ id_string }}</em> identifier.{% endblocktrans %}</p>
  371. {% endif %}
  372. {% if can_edit %}
  373. {% csrf_token %}
  374. <input type="hidden" name="enable_sms_support_trigger" value="yes" />
  375. <table>
  376. {{ sms_support_form.as_table }}
  377. </table>
  378. <input type="submit" class="btn btn-primary" value="{% trans "Save Changes" %}" />
  379. {% endif %}
  380. </form>
  381. {% autoescape off %}
  382. <div class="sms_autodoc">
  383. {% if xform.allows_sms %}
  384. <h4>{% trans "Expected Format:" %}</h4>
  385. <p class="sms_autodoc_line_names alert alert-info">{{ sms_support_doc.line_names }}</p>
  386. <ul class="sms_autodoc_helpers">
  387. {% for helper in sms_support_doc.helpers %}
  388. <li class="sms_autodoc_helper"><sup class="sms_autodoc_helper_indice">{{ forloop.counter0 }}</sup> <span class="sms_autodoc_helper_name">{{ helper.0 }}:</span> <span class="sms_autodoc_helper_text">{{helper.1}}</span></li>
  389. {% endfor %}
  390. </ul>
  391. <h4>{% trans "Example" %}</h4>
  392. <p class="sms_autodoc_line_example alert alert-success">{{ sms_support_doc.line_values }}</p>
  393. {% else %}
  394. <p class="alert {{ sms_compatible.type }}">{{ sms_compatible.text }}</p>
  395. {% endif %}
  396. <h4>{% trans "Usage" %}</h4>
  397. <p>Note that for each case, you can select either the simplest form of the URL (containing only your username) or the one including the <em>id_string</em> of the form.</p>
  398. <p>The latter works without specifyin the <em>SMS Keyword</em> in front of every message.</p>
  399. <p>You would use it when your SMS Setup/Provider is used for only one form.</p>
  400. <select id="sms_support_api"><option>{% trans "Select an SMS API" %}</option>{% for provider in sms_providers_doc %}<option value="{{ provider.id }}">{{ provider.name }}</option>{% endfor %}<option value="generic">{% trans "Generic SMS API" %}</option></select>
  401. <div style="display:none;" class="sms_support_api_doc" id="sms_support_api_doc_generic">
  402. <p>{% trans "Use the Generic SMS API to write your own wrapper around Formhub." %}</p>
  403. <ul>
  404. <p>{% trans "Single SMS Submission" %}<br />[<strong>GET</strong>] <span class="sms_autodoc_example">{{ url_root }}{% url "sms_submission" username=content_user.username %}</span><br />
  405. [<strong>GET</strong>] <span class="sms_autodoc_example">{{ url_root }}{% url "sms_submission_form" username=content_user.username id_string=xform.id_string %}</span><br />
  406. {% trans "Params:" %} <span class="sms_autodoc_params">{"identity": "SENDER PHONE NUMBER", "text": "TEXT MESSAGE"}<br />
  407. {% trans "Returns:" %} <span class="sms_autodoc_params">{"status": "STATUS", "message": "MESSAGE", "id": "ID"}</p>
  408. <p>{% trans "Multiple SMS Submissions at once" %}<br />[<strong>POST</strong>] <span class="sms_autodoc_example">{{ url_root }}{% url "sms_submissions" username=content_user.username %}</span><br/>
  409. [<strong>POST</strong>] <span class="sms_autodoc_example">{{ url_root }}{% url "sms_submissions_form" username=content_user.username id_string=xform.id_string %}</span><br />
  410. {% trans "Params:" %} <span class="sms_autodoc_params">{"messages": [{"identity": "SENDER PHONE NUMBER", "text": "TEXT MESSAGE"}, ]<br />
  411. {% trans "Returns:" %} <span class="sms_autodoc_params">[{"status": "STATUS", "message": "MESSAGE", "id": "ID"}, ]</p>
  412. </ul>
  413. <p><span class="sms_autodoc_params">STATUS</span>: {% trans "One of" %} <span class="sms_autodoc_params">ACCEPTED, REJECTED, PARSING_FAILED</span><br />
  414. <span class="sms_autodoc_params">MESSAGE</span>: {% trans "Either an error or success message. Suitable for end user." %}<br />
  415. <span class="sms_autodoc_params">ID</span>: {% trans "Only if successful. A unique ID of the submission." %}</p>
  416. </div>
  417. {% for provider in sms_providers_doc %}<div style="display:none;" class="sms_support_api_doc" id="sms_support_api_doc_{{ provider.id }}">{{ provider.doc }}</div>{% endfor %}
  418. {% endautoescape %}
  419. </div>
  420. </div>
  421. </div>
  422. </div>
  423. <div class="span4">
  424. {% if is_owner %}
  425. <h3>{% trans "Settings" %}</h3>
  426. <div class="clearfix">
  427. <div class="input">
  428. <label>{% trans "Form Shared" %}&nbsp;</label>
  429. <input id="form-shared" type="checkbox"{% if xform.shared %} checked=""{% endif %} data-url="{% url "main.views.edit" content_user.username xform.id_string %}" />
  430. </div>
  431. <br/>
  432. <label>{% trans "Data Shared" %}&nbsp;</label>
  433. <div class="input">
  434. <input id="data-shared" type="checkbox"{% if xform.shared_data %} checked=""{% endif %} data-url="{% url "main.views.edit" content_user.username xform.id_string %}" />
  435. </div>
  436. <br/>
  437. <label>{% trans "Crowdform" %}&nbsp;</label>
  438. <div class="input">
  439. <input id="crowd-form" type="checkbox" {% if xform.is_crowd_form %}
  440. checked="" {% endif %} data-url="{% url "main.views.edit" content_user.username xform.id_string %}" />
  441. </div>
  442. <br/>
  443. <label>{% trans "Form Active" %}&nbsp;</label>
  444. <div class="input">
  445. <input id="active-form" type="checkbox"{% if xform.downloadable %} checked=""{% endif %} data-url="{% url "main.views.edit" content_user.username xform.id_string %}" />
  446. </div>
  447. <br/>
  448. <label>{% trans "Delete Form" %}&nbsp;</label>
  449. <div class="input">
  450. <!-- DELETE -->
  451. <div id="delete-{{ xform.id_string }}" class="modal hide fade">
  452. <form action="{% url "odk_logger.views.delete_xform" username=user.username id_string=xform.id_string %}" method="post">
  453. {% csrf_token %}
  454. <div class="modal-header">
  455. <a data-dismiss="modal" class="close">&times;</a>
  456. <h3>{% trans "Delete Confirmation" %}</h3>
  457. </div>
  458. <div class="modal-body">
  459. <p>{% blocktrans with title=xform.title nb_sub=xform.submission_count|intcomma %}Are you sure you want to delete the form '{{ title }}'? This form has <strong>{{ nb_sub }}</strong> submissions associated with it that will also be deleted. If you are unsure about deleting this form press 'Cancel' and consider 'Archiving' the form instead.{% endblocktrans %}</p>
  460. </div>
  461. <div class="modal-footer">
  462. <button class="btn btn-primary form-submit">Delete</button>
  463. <a href="#" onclick="$('#delete-{{ xform.id_string }}').modal('hide');" class="btn secondary">{% trans "Cancel" %}</a>
  464. </div>
  465. </form>
  466. </div>
  467. <a data-toggle="modal" href="#delete-{{ xform.id_string }}" data-backdrop="true" data-keyboard="true" class="btn btn-small btn-danger">
  468. {% trans "Delete" %}
  469. </a>
  470. </div>
  471. </div>
  472. <br/>
  473. <div>
  474. <h3>{% trans "bamboo" %}</h3>
  475. {% if xform.bamboo_dataset %}
  476. {% blocktrans with dataset=xform.bamboo_dataset %}bamboo dataset: <strong><a href="http://bamboo.io/datasets/{{ dataset }}/info">{{ dataset }}</a></strong>{% endblocktrans %}
  477. {% else %}
  478. {% blocktrans %}bamboo link is <strong>not active</strong>{% endblocktrans %}
  479. {% endif %}
  480. {% if xform.submission_count = 0 %}
  481. <br />{% trans "bamboo requires at least one submission." %}
  482. {% else %}<form action="{% url "main.views.link_to_bamboo" content_user.username xform.id_string %}" method="post">
  483. {% csrf_token %}
  484. {% if xform.bamboo_dataset %}
  485. <input type="submit" class="btn" value="{% trans "Regenerate" %}" />
  486. {% else %}
  487. <input type="submit" class="btn" value="{% trans "Activate" %}" />
  488. {% endif %}
  489. </form>
  490. {% endif %}
  491. </div>
  492. <br />
  493. <div>
  494. <h3>{% trans "Sharing" %}</h3>
  495. {% if public_link %}
  496. {% url "main.views.show" xform.uuid as form_url %}
  497. {% blocktrans %}Sharing by link is <strong>on with URL <a href="{{ form_url }}">{{ base_url }}{{ form_url }}</a></strong>{% endblocktrans %}
  498. {% else %}
  499. {% blocktrans %}Sharing by link is <strong>off</strong>{% endblocktrans %}
  500. {% endif %}
  501. </strong>
  502. <br/>
  503. <br/>
  504. <form action="{% url "main.views.set_perm" content_user.username xform.id_string %}" method="post">
  505. {% csrf_token %}
  506. <input type="hidden" name="perm_type" value="link"/>
  507. <input type="hidden" name="for_user" value="toggle"/>
  508. <input type="submit" class="btn" value="{% if public_link %}{% trans "Turn off" %}{% else %}{% trans "Turn on" %}{% endif %}" />
  509. </form>
  510. {% if users_with_perms|length %}
  511. <ul>
  512. {% for user, perms in users_with_perms %}
  513. <li>{{ user }}: {{ perms }}</li>
  514. {% endfor %}
  515. </ul>
  516. {% endif %}
  517. <form action="{% url "main.views.set_perm" content_user.username xform.id_string %}" method="post">
  518. {% csrf_token %}
  519. <table class="narrow-labels">
  520. {{ permission_form.as_table }}
  521. </table>
  522. <input type="submit" class="btn" value="{% trans 'Submit' %}" />
  523. </form>
  524. </div>
  525. {% endif %}
  526. </div>
  527. </div>
  528. <br/>
  529. </section>
  530. <div class="modal hide fade" id="popupmodal" style="width: auto; left:36%; margin-left: auto; margin-right: auto;" tabindex="-1" role="dialog">
  531. <div class="modal-header">
  532. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  533. <h3>{% trans "Mobile Form" %}</h3>
  534. </div>
  535. <div class="modal-body" style="text-align: center;">
  536. <div class="img_holder"/> </div>
  537. </div>
  538. <div class="modal-footer" style="text-align: center;">
  539. {% trans "DOWNLOAD " %}
  540. <a class="btn" href="http://scan.me/apps/" target="_blank">
  541. <i class="icon-qrcode"></i>
  542. {% trans " Scan - QR Reader" %}
  543. </a>
  544. </div>
  545. </div>
  546. {% endblock %}
  547. {% block styles %}
  548. {{ block.super }}
  549. <link href="/static/css/iphone-btn-style.css" rel="stylesheet"/>
  550. {% endblock %}
  551. {% block javascript %}
  552. {{ block.super }}
  553. <script type="text/javascript" src="/static/js/iphone-style-checkboxes.js"></script>
  554. {% if user.is_authenticated %}
  555. <script type="text/javascript" src="/static/js/form_actions.js"></script>
  556. {% endif %}
  557. <script type="text/javascript">
  558. $(document).ready(function() {
  559. $('.btn').tooltip();
  560. // SMS documentation switcher
  561. $('#sms_support_api').change(function() {
  562. $('.sms_support_api_doc').each(function (){
  563. $(this).toggle(false);
  564. });
  565. var selected = $(this).val();
  566. $('#sms_support_api_doc_' + selected).toggle(true);
  567. });
  568. // Typeahead, fetch usernames for permission assign
  569. $('#autocomplete').typeahead(
  570. {
  571. source: function (query, process){
  572. return $.get('/typeahead_usernames/', {query: query}, function(data){
  573. return process(data);
  574. });
  575. }
  576. }
  577. );
  578. //-- end
  579. $(document).on("click", ".showqr", function () {
  580. div_target = $(this).attr('data-target')
  581. url = $(this).attr('href')
  582. $(div_target+" .img_holder").load(url)
  583. });
  584. {% if xform.shared_data %}
  585. $('#data-shared-private').hide();
  586. {% else %}
  587. $('#data-shared-public').hide();
  588. {% endif %}
  589. {% if xform.shared %}
  590. $('#form-shared-private').hide();
  591. {% else %}
  592. $('#form-shared-public').hide();
  593. {% endif %}
  594. {% if not xform.encrypted %}
  595. $('#form-encrypted').hide();
  596. $('#data-encrypted').hide();
  597. {% endif %}
  598. $.each(['form-shared', 'data-shared', 'active-form', 'crowd-form'], function(inx, el) {
  599. var cb = $('#' + el + ':checkbox');
  600. cb.iphoneStyle({
  601. onChange: function() {
  602. // a callback func
  603. var c = function(){}
  604. // if crowdform is toggled, change data and form status
  605. // appropriately
  606. if(el == 'crowd-form' && $('#crowd-form').attr('checked') == 'checked'){
  607. if($('#form-shared:checkbox').attr('checked') == undefined)
  608. $('#form-shared:checkbox').click()
  609. if($('#data-shared:checkbox').attr('checked') == undefined)
  610. $('#data-shared:checkbox').click()
  611. }
  612. privacyEdit(cb.data('url'), el.split('-')[0]);
  613. $('#' + el + '-public').toggle();
  614. $('#' + el + '-private').toggle();
  615. }
  616. });
  617. });
  618. {% if user.is_authenticated %}
  619. // add click event to all public (x)forms
  620. $('a.clonexls').click(function(){
  621. el = $(this);
  622. clone_xlsform(el.data('url'), el.data('username'), el.data('id'));
  623. return false;
  624. });
  625. {% endif %}
  626. });
  627. // REST Service
  628. $(document).ready(function() {
  629. $.get('{% url "restservice.views.add_service" content_user.username xform.id_string %}', function(data){
  630. $('#restservice_tab').html(data);
  631. });
  632. });
  633. </script>
  634. {% endblock %}